· 17 min read · Geoptimizer Team
What Claude Cites: How Claude Chooses Its Sources
- generative-engine-optimization
- ai-visibility
- claude
- engine-mechanics
- technical-geo
Claude sits at the bottom of most per-engine breakdowns for three stacked reasons, and only one is about your content. Claude used web search on 36.6% of prompts in a 2026 analysis presented at Profound's Zero Click session, against roughly 90% for ChatGPT — so on most prompts it never went looking for you. When it does search, the candidate set comes from Brave's index rather than Google's or Bing's. And when it picks from that set, it was deliberately tuned away from the shape of typical marketing content: Anthropic's own engineers wrote that their early research agents "consistently chose SEO-optimized content farms over authoritative but less highly-ranked sources." Publishing more blog posts addresses none of the three.
That quote is worth sitting with, because it's the rare case of a model provider documenting its own retrieval taste in public. Here's what that taste looks like in the data, which parts of it you can influence, and which popular fixes will do nothing for your Claude column.
There are only two Claude gaps, and they need opposite fixes
Before you touch a page, split the gap — the mention-versus-citation ratio tells you which one you have.
Near-zero on both mention rate and citation rate usually means Claude never searched. At a 36.6% trigger rate, most of your tracked prompts are being answered from the model's weights, and nothing you publish this quarter changes what's already baked in. A respectable mention rate with a thin citation rate means the opposite: Claude searched and handed the citation to someone else. That's a retrieval and page-shape problem, and it's fixable in weeks.
Anthropic documents the trigger logic plainly. Claude's web search tool searches for recent events, "current prices, rates, scores, or statistics," and "information about specific organizations, people, or products that might have changed." It answers directly, without searching, when the request draws on stable knowledge: "Established facts, math, science fundamentals, or coding concepts."
Read that last line again if you sell a developer tool. Webhook retry patterns, OAuth flow differences, multi-tenancy modeling — much of what your buyers ask lands squarely in "coding concepts," the category Claude answers from memory. Trigger rates also varied sharply by prompt type: 81% for freshness-signaling prompts, 67% for ranking prompts, 55% for location prompts, 51% for comparison ("X vs Y") prompts. A prompt set full of "best X for Y in 2026" will show a livelier Claude than one full of conceptual how-tos — a property of your prompt set, not your site.
There's a structural incentive pointing the same way: web search costs $10 per 1,000 searches on the Claude API on top of tokens, while web fetch carries no charge beyond tokens. Nothing sinister, just a reminder that "search everything, always" was never the design goal.
So start diagnostic, not editorial. Geoptimizer scores each engine as EngineScore = 100 × (0.35·MentionRate + 0.25·CitationRate + 0.20·Prominence + 0.20·Sentiment), so the published AI Visibility Score formula lets you read the two components apart instead of guessing at a composite. Once you know which gap you have, the rest of this splits cleanly in two.
Claude searches a different web than ChatGPT does
Say you have the second gap: Claude searched and cited someone else. It wasn't choosing from the shortlist you've been optimizing for.
Anthropic added Brave Search to its subprocessor list on March 19, 2025 — one day before web search launched — and Simon Willison independently corroborated it by finding a BraveSearchParams property in Claude's web_search tool definition and matching Claude's results against the same Brave query. A second web-search subprocessor, the vector database TurboPuffer, was added on May 6, 2026; nobody outside Anthropic has published what it does in the retrieval path, so treat it as a thing to watch, not a lever.
Brave's index is not small — 40 billion pages, with more than 100 million added or refreshed daily — but it's built independently, which is exactly why your Google rankings don't transfer automatically.
How closely does Brave rank map to Claude citation? Profound's test found 86.7% of Claude's cited results (13 of 15) matched Brave's top non-sponsored organic results, at p < 0.0001. Honest caveat: three queries, fifteen results. It's a strong signal, not a law — and the interesting part is which query broke the pattern. Two consumer queries matched Brave's top five perfectly; "best CRM software 2025," the B2B one, matched only 60%. For B2B categories, then, Brave rank is a good proxy for candidacy and a shakier one for the final citation.
The consequence shows up in overlap. Otterly.ai's study of 379,321 Claude citation instances across 16,406 domains found that only 13% of cited domains overlap between Claude and ChatGPT, and roughly 4.2% at URL level. Thirteen percent isn't "similar engines, different tastes" — it's two different corpora. A Claude gap sitting next to a healthy ChatGPT score is usually an index gap, not a quality gap, which is also why cross-engine citation evidence rarely yields one universal playbook.
Cheapest first action, then: run your ten most important tracked prompts on search.brave.com and write down where you appear. That ranking is the closest available proxy for "am I in Claude's candidate set at all."
The Googlebot rule nobody audits
Here's the finding that catches teams out, and it doesn't involve an AI user agent at all.
Brave's crawler documentation states two things that combine badly. First: "The Brave Search crawler does not advertise a differentiated user agent because we must avoid discrimination from websites that allow only Google to crawl them." You cannot write a rule that welcomes Brave specifically. Second — write this one down — "If a domain or page is not crawlable by Googlebot, then Brave Search's bot will not crawl it either."
Follow the chain. A Disallow aimed at Googlebot on a docs subdomain that started life as a staging environment drops those pages from Brave's index, which drops them from Claude's candidate set, which zeroes your Claude citation rate on every prompt they should have answered. No AI crawler checker will flag it, because no AI crawler is involved. Brave delists via noindex rather than robots.txt, and takes URL submissions at search.brave.com/submit-url.
Anthropic's own crawlers deserve the same care, because there are three of them doing three different jobs. Anthropic's support documentation describes ClaudeBot, which collects content that could contribute to training; Claude-User, which supports user-initiated requests; and Claude-SearchBot, which "navigates the web to improve search result quality for users." Blocking one doesn't block the others, and blocking Claude-User is what removes you from live answers.
Selective policies are already normal: one robots.txt survey found ClaudeBot in 4.88% of DISALLOW rules while Claude-User was the second-busiest AI bot overall at 8.31% of AI crawler traffic in July 2026, often explicitly allowed on sites blocking the training crawler. That's defensible. The failure mode is doing it by accident — a wildcard block copied from a publisher's robots.txt that quietly takes the live-retrieval agent with it. Anthropic publishes a verifiable IP list at claude.com/crawling/bots.json so you can confirm log hits are genuine before setting policy on them.
Set expectations while you're here: Cloudflare's 2025 measurements put Anthropic's crawl purpose at 79% training, 17% search and 3.2% user actions. Claude visibility is a mention-and-citation play — justify it on referral traffic and you'll be disappointed by the traffic and blind to the value.
What Anthropic says about its own taste
Now the content half — and the best evidence is primary, from Anthropic's engineering write-up of its multi-agent research system.
The admission is direct: "our early agents consistently chose SEO-optimized content farms over authoritative but less highly-ranked sources like academic PDFs or personal blogs." The fix was prompt-level — "Adding source quality heuristics to our prompts helped resolve this issue" — and the evaluation rubric scores, among five dimensions, "source quality (did it use primary sources over lower-quality secondary sources?)". That's as close as the industry gets to a provider saying out loud that content shaped like SEO content was a bug they engineered against.
Don't over-rotate, though. The evidence doesn't say Claude ignores blogs; it says Claude prefers pages that behave like references. Oltre.ai's breakdown of 2,170 Claude-cited URLs found 56% under a /blog/ path, 47% with listicle-shaped path tokens like /best- or /vs-, and only 3% homepages — "Claude tends to cite specific pages, not brand front doors." The thesis isn't "stop blogging, write docs." It's that Claude cites the deep, specific, answerable page — a changelog entry, a comparison with real numbers, a migration guide — not the hub linking to it. Volume isn't the variable. Specificity is.
Otterly's June 2026 SaaS-and-technology prompt set sharpens it further: brand and vendor domains took 64.0% of Claude's citations, news and media 14.9%, personal blogs 5.4%, and social media 0.9% — with Reddit at zero inside that slice. For a dev-tool marketer, 64% is the encouraging number in this whole post: on technical queries, your own domain is the most-cited category of source there is, if the pages are shaped right. Concentration helps too — the top 10 domains took just 9.5% of citations and 32.9% of cited domains appeared exactly once, so there's no closed club to break into.
One honest complication. A Q1 2026 audit from 5W lists Claude's top domains as Wikipedia, Reddit, the NYT, The Atlantic and The Economist, describing a "premium-publisher bias" — flatly contradicting the numbers above. Both can be right: news-shaped queries pull from publishers, SaaS and tooling queries pull from vendors. (5W notes its Claude findings weren't independently verified.) Any "what Claude cites" statistic is only as relevant as the query set behind it — including your own.
That audit does contain one figure worth keeping: roughly 36% of Claude's journalism citations came from the past 12 months, against about 56% for ChatGPT. Claude holds older sources longer. If you've watched a new post get picked up by ChatGPT within a week while Claude keeps citing your 2024 comparison page, that recency weighting is the likely reason.
Four ways a documentation site disqualifies itself
Being in the candidate set gets you nothing if the page can't be read, and developer-tool sites trip over these constraints more than most.
The big one, quoted from the web fetch tool docs: "The web fetch tool currently does not support websites dynamically rendered with JavaScript." A client-rendered docs portal or comparison page is functionally blank. Corroboration from the crawler side: Vercel and MERJ found ClaudeBot fetched JavaScript files in 23.84% of requests and never executed them. That data is from December 2024, so lead with the current documentation — but the direction hasn't changed.
Three smaller cliffs sit alongside it, all from the same page. URLs over 250 characters fail outright with url_too_long. Only text, HTML and PDF content types are supported. And max_content_tokens truncates long pages, against Anthropic's own arithmetic that a 100 kB documentation page runs about 25,000 tokens — so a monolithic API reference can be fetched and still cut off before the section that answers the question.
One 2026 change matters more than the rest here. Since web_search_20260209, Claude "writes and runs code that filters the search results before they reach the context window," and on those versions allowed_callers defaults to running through code execution. Filtered retrieval is the default path now, not an opt-in — so retrieval no longer guarantees ingestion. A page can be fetched and still never reach the model if the relevant passage isn't cleanly extractable from the scaffolding around it.
Which brings us to the smallest unit that matters. Citations are always enabled for web search, and each carries cited_text of up to 150 characters of the source. That's one sentence. A self-contained sentence carrying the claim, the number and the qualifier together will out-cite a beautifully argued three-paragraph build-up every time — not because the argument is worse, but because it doesn't fit the quotable unit.
Two footnotes: every search result includes a page_age field describing when the site was last updated, so a page with no update signal gives the model nothing to weigh; and web fetch caches by default, meaning a page you fixed today may keep being read in its old form for a while.
The agent channel your analytics can't see
Everything above assumes a human at a chat window. Increasingly there isn't one — and this is the part that changes how dev-tool teams read their own logs.
A February–March 2026 study of nine AI coding agents and six assistant web services found Claude Code identifies itself as axios/1.8.4 — not ClaudeBot, not Claude-User. Aider announced itself as Aider/0.86.2; Cursor sent got library signatures. If your AI analytics or your bot policy keys on Anthropic user agents, agent traffic to your docs is invisible to both: you're neither counting it nor governing it.
Seven of the nine agents used lightweight HTTP clients with no script execution, only Aider and OpenCode running headless Chromium — the JavaScript problem again, through a different door. Agents also compressed multi-page navigation into one or two HTTP requests per session, retiring session depth and bounce rate as signals for a docs portal, and one measured API guide came to 193,217 tokens, beyond what many agents can usefully hold. What helped: markdown endpoints (appending .md to a docs URL) cut token consumption, while llms.txt was accessed inconsistently, "with no universal pattern establishing its effectiveness as a pre-fetch mechanism."
There's also a channel most teams don't know exists: Anthropic exposes a search_result content block that lets developers hand Claude their own content and get first-class citations back. If you ship an MCP server or a docs assistant, that's a supported way to make your content citable inside a session.
The fix list, in evidence order
Cheapest and highest-confidence first:
- Split the gap. Read mention rate against citation rate before changing anything. Near-zero on both means Claude probably never searched; a split means it searched and cited someone else.
- Check all three Anthropic user agents separately. Confirm
Claude-Useris allowed even if you deliberately blockClaudeBotfor training. - Then check Googlebot. Brave won't crawl what Googlebot can't, so a stray Googlebot block is a silent Claude block.
- Look yourself up on Brave. Record where you rank for tracked prompts; submit missing pages at
search.brave.com/submit-url. - Verify pages render server-side.
curlthe URL and confirm the answer text is in the raw HTML. - Make the quotable unit small. One self-contained sentence carrying claim, number and qualifier, sized for a 150-character window.
- Keep pages fetchable in one shot. URLs under 250 characters, text/HTML/PDF only, page weights that don't blow past
max_content_tokens. Split the 100 kB reference; offer.mdendpoints. - Publish and maintain visible dates.
page_ageis a first-class field in every result Claude receives. - Write the deep page, not the hub. 56% of Claude-cited URLs sat under
/blog/; 3% were homepages.
And four things the evidence says won't move the number, which matters just as much when you're allocating a quarter:
- llms.txt as a Claude strategy. Ahrefs found 97% of published llms.txt files received zero requests in May 2026, with ClaudeBot at 0.80% of training-crawler requests to the files that did get traffic. It costs an hour and it's fine to ship — Anthropic maintains one for its own docs — but our 20-minute technical GEO setup puts crawler access first and llms.txt last for a reason.
- Porting the ChatGPT playbook wholesale. At 13% domain overlap, most of what earned a ChatGPT citation is landing on a different index.
- Community seeding aimed at Claude. Social was 0.9% of Claude's citations on that SaaS/tech prompt set, Reddit zero. Fine work for other engines; not a Claude fix.
- Schema markup as the answer. A 2026 survey of GEO research found relevance and position in context dominate while "formatting changes alone have weak effects," and generic heuristics generalized poorly — only three of 54 method–domain combinations tested significantly positive.
What a "normal" Claude score looks like
Before treating the Claude column as a failure, consider that it may be a baseline. If Claude searches on roughly a third of prompts and cites narrowly when it does, a lower citation rate than ChatGPT's is the expected condition for nearly every brand. The honest benchmark is your competitors on Claude, not your own ChatGPT number: comparing engine to engine measures the engines, comparing rivals inside one engine measures you.
Two cautions on reading it. Claude's query fan-outs were reported as nearly deterministic — the same fan-out about 65% of the time — which still means a third of scans go looking elsewhere. That's why a headline score belongs on a rolling window with a confidence band rather than a single snapshot; our guide to separating a genuine visibility shift from measurement noise covers that diagnostic. There's also a measuring-the-measurer problem: across four generative engines, one study found only 51.5% of sentences fully supported by their citations. A citation rate partly measures the engine, not only you.
One limitation stated openly: most mechanics here — dynamic filtering, page_age, the 150-character cited_text — are documented for the Claude API, while Anthropic's consumer docs describe the app's search as a per-conversation toggle. Related, not identical, which is why API-based measurement tracks app answers closely but not exactly.
So is an engine at roughly 9% of generative-AI web traffic worth the effort? For a developer-tool company, yes — the argument is composition, not volume. Menlo Ventures' survey of 495 US enterprise AI decision-makers found Anthropic holding 40% of enterprise LLM API spend against OpenAI's 27%, with an estimated 54% of the enterprise coding segment versus OpenAI's 21%. Anthropic's own Economic Index found computer and mathematical tasks were 34% of Claude.ai conversations and 46% of first-party API traffic. Claude is among the smaller major engines by traffic and the one whose users look most like a dev-tool buyer.
Finally, retire one myth, because it shapes expectations. "Claude cites fewer sources" isn't well supported: the widely repeated 5.67-citations figure traces to a study that doesn't report Claude at all, while the study that measured Claude directly put it at 13.99 citations per answer, second only to Perplexity. Claude is selective about source type. It isn't stingy with citations.
FAQ
Why is my Claude score always lower than my ChatGPT score?
Partly structural. Claude searched on 36.6% of prompts in 2026 testing against roughly 90% for ChatGPT, so on most prompts there's no retrieval step to win. It also draws candidates from Brave's index rather than Bing's, and the two engines share only 13% of cited domains. Benchmark against competitors inside Claude rather than against your own ChatGPT number.
Does Claude actually use Brave Search?
The evidence is strong. Anthropic added Brave Search to its subprocessor list one day before web search launched, and a BraveSearchParams property was found in the tool definition. In Profound's test, 86.7% of Claude's cited results — 13 of 15 — matched Brave's top organic results, though that was only three queries. A second subprocessor, TurboPuffer, was added in May 2026 and its role in source selection isn't publicly documented.
Should I block ClaudeBot?
It's a legitimate choice, but be precise about which agent. ClaudeBot collects content that could contribute to training; Claude-User handles live user-initiated retrieval; Claude-SearchBot works on search quality. Blocking Claude-User is what removes you from live Claude answers — and blocking Googlebot does the same indirectly, since Brave won't crawl what Googlebot can't.
Does documentation really beat blog content for Claude citations?
The nuance matters: 56% of Claude-cited URLs in one 2,170-URL sample sat under a /blog/ path, so blogs are clearly cited. What loses is the hub page — only 3% of cited URLs were homepages. Claude cites the specific, reference-shaped page that answers the question, whatever directory it lives in.
Where to start this week
Claude rewards a smaller, more specific set of pages than ChatGPT does, and the levers are mostly not editorial: which agents you allow, whether Googlebot can reach your docs, whether pages render without JavaScript, and whether each claim sits in a sentence short enough to quote. The three highest-yield checks — user agents, the Googlebot dependency, server-side rendering — cost an afternoon between them and gate everything else.
Start by finding out which of the two Claude gaps you have. Run a free AI visibility check across ChatGPT, Gemini, Claude and Grok to see your per-engine breakdown, then use the AI Crawler Checker and GEO Site Audit to confirm nothing in your robots.txt or rendering setup is keeping you out of the candidate set. The engine that scores lowest is usually the one with the most obvious things left to fix.