Our running review of the research on generative engine optimization (GEO): what decides whether ChatGPT, Perplexity, Google AI Overviews, Gemini and Claude can use your site, what demonstrably does nothing, and what nobody can measure yet. Every finding names its primary source, the date that source gives itself, and the day we last read it.
26 of the 44 outside sources cited here are on our evidence watch: a script re-reads them every Monday at 06:00 UTC and flags the claims to re-check when a watched sentence changes. The rest were read on the date shown and are marked as not watched.
Want more of our research in Google Search and AI Mode? Add us as a preferred source.
claims checked against primary sources
140claims checked against primary sources
confirmed as stated
100confirmed as stated
over-claimed or misquoted
39over-claimed or misquoted
primary sources on the weekly watch
35primary sources on the weekly watch
From our verification-first evidence review of 22 August 2026. See methodology.
01 · The headline finding
Almost the whole GEO market sells what the evidence does not support
A July 2026 critical survey of 45 GEO studies reached one sentence that reframes the category. Content already inside a model’s context can change whether it gets cited. Nothing reviewed shows a lasting, cross-platform effect on whether AI finds you in the first place, and that is what almost every GEO product sells.
“Within this corpus, the evidence is narrow: already-retrieved content can causally alter its citation or use, but no reviewed technique shows a stable, longitudinal, cross-platform causal effect on organic discoverability or downstream behavior.”
arXiv:2607.14035, Optimizing Visibility in Generative Engines: A Critical Survey of GEO (2023–2026) (15 July 2026)
The three sentences to lead with
01
The levers that survive scrutiny are almost all access-level and subtractive.
Server-side rendering, per-bot robots.txt permission, network reachability, index eligibility and snippet controls. Each one is a way to be ineligible. There is no additive markup, phrasing or structure with credible evidence behind it.
Every "GEO technique" with a published effect size was measured on documents already inside the model’s context.
No live index was called. Those are generation-stage findings sold as discoverability outcomes, and the best-designed of the studies found the techniques ineffective or harmful.
“Our experiments reveal that most current C-SEO methods are not only largely ineffective but also frequently have a negative impact on document ranking, which is opposite to what is expected.”
Nothing published measures what a customer most wants measured.
Google’s own AI report counts impressions, with no clicks, no CTR and no position. OpenAI’s whole ranking disclosure is “multiple factors”. And search fires per query at the platform’s discretion, so any single “AI visibility score” averages answers given with search on and with search off, in an unknown mix.
“ChatGPT ranks search results using multiple factors intended to help users find relevant, reliable information. Placement is not guaranteed.”
Before any AI search engine can quote you, its crawler has to be allowed in by robots.txt, let through by your firewall or CDN, find your facts in the HTML your server sends, and, on Google and Bing, find the page indexed and allowed in snippets. Fail one and nothing downstream matters. Pass all four and you are eligible, not chosen: retrieval and citation are the platform’s call, per question.
Each gate is per platform. The search crawler, the documented consequence and the controls differ by vendor; the second figure, under how each AI platform works, shows which gates each one documents.
Every claim in the evidence base belongs to one of four stages. Mixing them up is the largest single source of over-claiming in GEO: a finding about which already-retrieved page gets cited is sold as a way to get found.
The four stages of an AI answer and who controls each
Stage
What it controls
Who controls it
0 · Parametric
What the model knows with no web access, frozen at its training cutoff
Nobody, this quarter
1 · Access (index time)
Whether a crawler may fetch and store your page at all
You and your CDN
2 · Retrieval (answer time)
Whether your page enters the model’s context for a given question
The search operator, partly
3 · Generation and citation
Which retrieved pages the model uses and cites
The model
Search is per question, and the platform decides
Google AI Overviews often do not appear. ChatGPT searches when its model decides to. In the Claude apps, web search is a toggle the user controls. Any “AI visibility” number is an average over answers given with search on and with search off, and the mix is not observed.
Platforms cite in different units: Claude cites spans of text (cited_text), Perplexity cites whole sources. In mechanistic work, amplifying specific attention heads repaired over 90% of missed citations without changing the sources. Citation counts are a noisy proxy for influence.
Nothing a publisher does this quarter reaches an answer given without web access. These two factors mark that boundary.
F1
Knowledge cutoff
Strong
ScopeAnswers given with web search off, on every platform. It is the only thing that governs them.
With search off, a model can only repeat what it learned before its training cutoff. Nothing you publish this quarter reaches that answer.
What it does not show
It is a ceiling, not a lever. “ChatGPT” is not one knowledge state: different model snapshots have different cutoffs, and the chat-latest alias is updated over time. A brand-mention test that does not record which model answered, and whether it searched, measures an unknown mix.
Not measurable from a crawl
Not from a crawl. Compare when your facts were published with each model’s cutoff.
In a 99Visibility audit
Our model registry stores the cutoff of every model we ask. When a platform we ask with search off scores you zero and your brand was founded after its cutoff, the audit says there is nothing to fix on your site for that column.
ScopeGPTBot, ClaudeBot, Google-Extended, Meta-ExternalAgent and other training crawlers. The only theoretical path into search-off answers, with a full model generation of delay.
Training crawlers decide whether your pages may be used to train future models. That is all they decide.
“Disallowing GPTBot indicates a site’s content should not be used in training generative AI foundation models.”
No evidence supports a lever here in either direction. OpenAI nowhere claims that allowing GPTBot improves search visibility, and no study tests whether excluding training data lowers what a model recalls about a brand. The honest label is unmeasured, not null.
Partly measurable
The robots.txt directive is visible. Its effect is not measurable by anyone, vendors included.
In a 99Visibility audit
The access check reads your robots.txt for 6 training crawlers and labels them as training, so a training block is never reported as a search block.
Stage 1 — Access: whether a crawler can fetch and keep your page
This is where the real levers are, and every one of them is subtractive or binary. There is no markup, phrasing or structure that makes a page more eligible. There are only ways to be ineligible.
F3
Server-side rendering of the facts that matter
Strong. The strongest evidence in the model
ScopeSearch-on answers that rely on crawlers which do not run JavaScript: OpenAI’s and Anthropic’s in Vercel’s study. Perplexity does not document JavaScript support; do not assume the study tested it. Googlebot can render JavaScript.
These crawlers read the HTML your server sends and nothing else. A price, a product name or a claim that appears only after JavaScript runs does not exist for them.
“ChatGPT and Claude don’t execute JavaScript, so any important content should be server-rendered.”
Vercel, The rise of the AI crawler (17 December 2024)
What it does not show
Fixing it does not make a page more likely to be chosen. It decides whether the page exists in the candidate set at all: hygiene, not optimization, and irrelevant on Google. Vercel sells server rendering and its sample skews to Next.js; the finding has since been re-tested independently. The 404 statistic often quoted beside it is a single-network snapshot from 2024 that nobody has replicated.
Measurable from outside
Fetch the page without running JavaScript, fetch it again in a headless browser, and diff the visible text. Report what exists only after hydration.
In a 99Visibility audit
Not yet. The diff needs a headless browser service we do not run, so the audit does not check rendering. Until it does, check by hand: open view-source: on your page and search it for your price and product names.
ScopeSearch-on, one platform per token: OAI-SearchBot for ChatGPT search, Claude-SearchBot for Claude, PerplexityBot for Perplexity, Meta-WebIndexer for Meta AI, Googlebot for every Google surface. No robots.txt token blocks AI Overviews or AI Mode.
Each AI search engine has its own crawler and its own robots.txt token. Blocking the search crawler removes you from that one platform’s search answers.
“Sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers, though can still appear as navigational links.”
“Disabling Claude-SearchBot on your site prevents our system from indexing your content for search optimization, which may reduce your site’s visibility and accuracy in user search results.”
Anthropic, Anthropic’s crawlers and how to block them (7 April 2026)
“Allowing Meta-WebIndexer in your robots.txt file helps us cite and link to your content in Meta AI’s responses.”
Allowing a bot buys eligibility, not retrieval and not rank. It does not govern fetches a person triggers: OpenAI says robots.txt rules “may not apply” to ChatGPT-User, and Perplexity says Perplexity-User “generally ignores robots.txt rules”. OpenAI also explicitly ties OAI-SearchBot permission to search-answer eligibility.
Measurable from outside
Parse robots.txt per agent and keep training crawlers apart from search crawlers. The most common real error is a blanket AI block that also removes ChatGPT search.
In a 99Visibility audit
The access check evaluates your robots.txt for 18 crawlers (12 that fetch for search or answers, 6 for training) under RFC 9309 rules, and shows the consequence each vendor documents for a block. The free robots.txt checker uses the same evaluator.
ScopeGoogle AI Overviews and AI Mode. Not the Gemini app, which Google-Extended governs, and not the Gemini API’s Grounding with Google Search, a separate path.
There is no separate GEO path into Google. Indexed and snippet-eligible is the whole requirement, and inclusion is on by default.
“To be eligible to be shown as a supporting link in AI Overviews or AI Mode, a page must be indexed and eligible to be shown in Google Search with a snippet, fulfilling the Search technical requirements. There are no additional technical requirements.”
Eligibility is not inclusion: Google adds that indexing and serving are not guaranteed. The Search Console control that switches inclusion off is available in Search Console and invisible from outside, and child properties inherit it from the parent. A property can be excluded without anyone deciding to.
Partly measurable
noindex, nosnippet, max-snippet and Googlebot’s robots.txt rules are crawlable. Index membership and the Search Console opt-out need Search Console access.
In a 99Visibility audit
The audit flags noindex, nosnippet and max-snippet on your page and reads Googlebot’s robots.txt rules. It cannot see your Search Console settings.
ScopeGoogle Search surfaces and Bing and Copilot AI answers. The only control documented below the page level.
data-nosnippet, nosnippet and max-snippet keep text out of AI answers without removing the page. They are often inherited from a template by someone who wanted to hide a cookie banner.
“When Bing crawls your site, any content marked with data-nosnippet is still indexed normally, but it will be excluded from snippets and AI summaries.”
Microsoft Bing, Bing introduces support for the data-nosnippet HTML attribute (15 October 2025)
What it does not show
There is no additive counterpart: no markup makes a section more likely to be used. Bing adds that tagged content stays available for ranking. It removes display, not eligibility.
Measurable from outside
Parse the HTML for data-nosnippet and the meta robots and X-Robots-Tag snippet directives.
In a 99Visibility audit
The audit reads meta robots tags, the X-Robots-Tag header and data-nosnippet. noindex is rated critical; nosnippet and max-snippet:0 are rated high.
ScopeSearch-on, every platform. The third gate most GEO advice leaves out.
Eligibility is a conjunction: robots.txt and the network path. A firewall that answers 403 to a crawler your robots.txt allows is a complete, silent failure, and no dashboard you own will show it.
“To make a website eligible for inclusion, allow OAI-Searchbot to crawl the site and confirm that the website host or content delivery network allows traffic from OpenAI’s published searchbot IP addresses.”
Passing this gate confers nothing beyond reachability, and nobody has measured how often it fails across the web. Blocking by IP has a side effect: Anthropic warns it can stop its crawler reading your robots.txt at all.
Measurable from outside
Request a page as each crawler and as a normal browser. Record the status code, any challenge or CAPTCHA page, and whether /robots.txt itself is reachable.
In a 99Visibility audit
The audit requests your page once per crawler and once as a browser, counts 401, 403, 429, 503 and bot-challenge pages as blocked, and reports every crawler your robots.txt allows but your network refuses. The request carries the crawler’s user agent, not its IP addresses, so neither a pass nor a refusal proves what the verified real crawler receives.
ScopeGooglebot, per URL. Sub-resources are counted separately.
Googlebot fetches the first 2MB of a URL’s HTML and ignores the rest (64MB for PDFs).
“Googlebot currently fetches up to 2MB for any individual URL (excluding PDFs). … Any bytes that exist after that 2MB threshold are entirely ignored.”
Google Search Central blog, Inside Googlebot: demystifying crawling, fetching, and the bytes we process (31 March 2026)
What it does not show
Google’s own framing is that the vast majority of the web never hits this limit. It is not a limit on non-Google AI retrieval. Worth reporting only when a page exceeds it.
Measurable from outside
Record the raw HTML size of each URL. Flag pages over 2MB.
ScopeMicrosoft Copilot, Bing’s AI summaries and Microsoft’s grounding APIs. Plausibly upstream of ChatGPT search; that link is documented, not measured.
Bing’s index backs Copilot and Microsoft’s grounding tools. It is the only index-level upstream with a documented path into AI answers outside Google.
“Grounding from general web indexed by Bing”
Microsoft Learn, Web search and Grounding with Bing Search (Foundry agents) (11 July 2026)
What it does not show
Do not read it as “get into Bing to get into ChatGPT”. OpenAI’s language about its search providers is hedged, and nobody has measured the end-to-end effect.
Not measurable from a crawl
Needs Bing Webmaster Tools. Its AI Performance report is the only place anywhere that shows grounding queries, the searches the AI actually ran. There is no API for it.
In a 99Visibility audit
The access check reads Bingbot’s robots.txt rules and requests your page as Bingbot. Whether you are in Bing’s index is not visible from outside.
ScopeSeven consuming engines. Google is not one of them.
Microsoft asserts that IndexNow helps AI systems reference the current version of a page.
“By enabling faster discovery of content changes, IndexNow helps ensure that AI systems reference the most current version of a page when generating answers.”
Microsoft Bing, Introducing AI Performance in Bing Webmaster Tools (public preview) (10 February 2026)
What it does not show
That sentence is an assertion with no study behind it, from the consortium that runs the protocol. The IndexNow specification never mentions AI, LLMs or Copilot, and a 200 response confirms receipt only. The engines that consume it are Bing, Yandex, Seznam, Naver, Yep, the Internet Archive and Amazonbot.
Partly measurable
The key file at the site root is visible. Submissions and their effect are not.
This is not evidence that classical SEO earns AI citations. The “SEO” arm moved the target document to first place in the context window; no index was queried and no rank was earned. No publisher can do that. The 252,000-trial factorial agrees, but used two candidates per trial, which likely overstates position.
Not measurable from a crawl
Nothing outside the search operator can measure it.
ScopeShown at the generation stage among retrieved pages; assumed at retrieval.
Topical fit between your page and the search the AI actually runs is the one substantive factor that three independent lines of work agree on.
“Reviewed work indicates that topical relevance and context position are the most reproducible levers, generic heuristics transfer poorly, competition can erode individual gains, and citation-oriented rewrites can impair retrieval.”
arXiv:2607.14035, Optimizing Visibility in Generative Engines: A Critical Survey of GEO (2023–2026) (15 July 2026)
“Mixed-effects models show that topical relevance and list position are the biggest drivers of being cited first.”
arXiv:2605.25517, Factorial experiment, 252,000 trials, on what gets cited first (May 2026)
What it does not show
It is not keyword coverage: Google says you need not chase long-tail variants, and the original GEO paper found keyword stuffing lowered its own visibility metric. Both supporting studies are interested parties, a single-author unreviewed survey and a vendor-authored factorial on a synthetic corpus. Agreement between them is corroboration, not replication.
Partly measurable
Similarity between a page and a set of test prompts is computable, but the real queries are not observable: ChatGPT rewrites the question, Google fans it out into related searches.
In a 99Visibility audit
The audit asks each platform the prompts you track. That is a proxy for the real queries, which no tool outside Bing Webmaster Tools can see.
In March 2026, 37.9% of URLs cited in AI Overviews also appeared in the first ten result blocks (37.1% counting organic results only). About 31% came from positions 11 to 100 and about 31% from beyond 100.
“37.9% of URLs cited in AI Overviews also appeared within the first 10 blocks.”
Ahrefs, Study of how many AI Overview citations rank in the top 10 (2 March 2026)
What it does not show
Do not read a trend into it. Ahrefs changed its parsing method between this study and the earlier one, so the two endpoints come from different instruments. A BrightEdge study reports a far lower top-10 share with no published sample size; the two disagree and neither is replicated. “Rank no longer matters” is equally unsupported.
Not measurable from a crawl
Needs rank tracking, and Google says no third-party tool has its ranking data.
ScopeClaude’s web search exposes it; Microsoft names freshness in its guidance.
Claude’s web search results carry a page_age field, so the signal is exposed to the model.
What it does not show
Exposure is not weighting: no vendor says page age affects selection. The main study behind “update your pages to get cited” looked only at pages already cited, had no control group, and read dates the publisher declares. The 252,000-trial factorial did find a recent timestamp helped consistently, which leaves freshness unresolved rather than refuted.
Measurable from outside
sitemap lastmod, dateModified and Last-Modified are readable, but self-declared and trivially changed. An observation, never a score input.
In a 99Visibility audit
When a platform states an outdated fact about you, the audit flags it and the fix is to state the current fact, dated, on your own pages. It never tells you to bump a date.
Stage 3 — Generation and citation: which retrieved pages get used
Where nearly all experimental GEO evidence lives, and conditional on stage 2 having already succeeded.
F15
Rewriting content to win citations
Strong evidence of null to negative
ScopeGeneration stage, across several model families, on documents already in context.
In the best-designed tests, rewriting content for citation does not work and often hurts.
“Our experiments reveal that most current C-SEO methods are not only largely ineffective but also frequently have a negative impact on document ranking, which is opposite to what is expected.”
arXiv:2605.25517, Factorial experiment, 252,000 trials, on what gets cited first (May 2026)
What it does not show
It is a null inside the context window. It does not prove content quality is irrelevant, and it does not test whether anything helps a page enter the candidate set. It is 2025 benchmark evidence, not yet repeated on current models.
Measurable from outside
Detect the tactics on the page (appended quotation blocks, injected statistics, “according to authoritative sources” boilerplate) and report them as risks, not wins.
ScopeWhich already-retrieved pages get cited, on Google’s generative surfaces and the authors’ own engine.
Generative engines tend to cite text their underlying model finds predictable.
“Our empirical analysis reveals that GEs exhibit preferences for citing content characterized by significantly higher predictability for underlying LLMs and greater semantic similarity among selected sources.”
arXiv:2509.14436, When Content is Goliath and Algorithm is David (17 September 2025)
What it does not show
This is not “write simply”. The causal test had an LLM rewrite whole pages, changing register, structure and length at once, so predictability was never isolated. It is measured against one model and predates every 2026 release.
Partly measurable
Only as a proxy, under an open model that is not the one doing the citing.
ScopeAgentic search against a mock search API. No live web was touched.
Once manipulated content is in the result set, agentic search can be steered by it, and how often depends heavily on the model and the setup around it.
“the same deployment scaffold could amplify or decrease ASR on different backends”
arXiv:2606.16821, Attack study of injected content in agentic retrieval (23 June 2026)
What it does not show
The study never published adversarial content to the open web, so it shows what happens once such content is retrieved, not how hard getting there is. Per-model attack rates re-baseline with every safety update. It is here as a defence: a third-party page can misrepresent you.
Measurable from outside
Scan third-party pages that mention a brand for injected instructions.
In a 99Visibility audit
Not in the audit. Agent V treats every page it reads, your own included, as data and never as instructions.
One factor shows up everywhere, and it is the one nobody controls for.
F18
Brand prominence
Strong association, not a lever
ScopeEvery platform, search on or off.
AI citations concentrate heavily on sources that are already large.
“the top 20 most frequent news sources account for 67.3% of all citations for OpenAI models”
arXiv:2507.05301, Analysis of which sources AI search engines cite (7 July 2025)
What it does not show
It is the main uncontrolled confounder in every correlational GEO study, and nothing controls for it: the usual controls, Domain Rating and Domain Authority, are vendor regressions built from the same backlinks and traffic. The data window, March to May 2025, is old and self-selected.
Not measurable from a crawl
Use it to stratify. A benchmark that does not compare brands of similar size measures brand size.
Each of these is sold as a GEO tactic today. Each is contradicted by a primary source: the vendor that runs the system, or the only controlled test that exists. Where the kill has limits, they are stated.
llms.txt and other AI text files improve AI visibility
Killed byGoogle says Google Search does not use them and they neither help nor harm.
“You don’t need to create new machine readable files, AI text files, markup, or Markdown to appear in Google Search (including its generative AI capabilities), as Google Search itself doesn’t use them.”
LimitGoogle’s statement covers Google Search only, and the same paragraph calls it completely fine to keep one for other services. No other engine documents reading one either.
Killed byThe only matched-control test: 1,885 pages that added JSON-LD between August 2025 and March 2026, against 4,000 controls. No major uplift on any platform. AI Overview citations fell 4.6% more than matched controls (statistically significant, and Ahrefs says it cannot clearly attribute the drop to schema); AI Mode and ChatGPT moved within noise.
“Adding schema produced no major uplift in citations on any platform.”
Ahrefs, We tracked 1,885 pages adding schema. AI citations barely moved. (11 May 2026)
LimitEvery treated page already had 100+ AI Overview citations. Whether schema helps a page that is not yet cited enter the candidate set is untested, not refuted.
Killed byGoogle deprecated FAQ rich results (changelog entry dated 2026-05-08, effective 2026-05-07), removed the FAQPage documentation on 2026-06-15; the changelog does not establish the previously claimed August API-removal date.
LimitThis retires FAQ markup as a Google rich result, not question-and-answer content. Leaving existing markup does no harm.
Killed byGoogle publishes no site-level authority score and does not use the term. Domain Authority and Domain Rating are third-party vendor regressions.
LimitGoogle does say its systems use “page-level and site-wide signals”, and it names a news-scoped topic authority system. The accurate claim is: no published score, no first-party use of the term.
Killed byGoogle’s AI guide tells you to ignore chunking and says there is no ideal page length. The chunking research measures how the search operator splits documents it already holds, which no publisher controls.
“Write in an AI-friendly style” and “cover every long-tail variant”
Killed byGoogle says you do not need to write in a specific way for generative AI search.
“This means you don’t have to worry that you don’t have enough "long-tail" keywords or haven’t captured every variation of how someone might seek content like yours.”
Killed byThe specification never mentions AI, LLMs or Copilot, a 200 response confirms receipt only, and the list of consuming engines has no Google entry.
LimitBing’s index does back Copilot, so an indirect path exists. Nobody has measured it.
Killed byOpenAI says the crawlers are independent settings.
“Each setting is independent of the others – for example, a webmaster can allow OAI-SearchBot in order to appear in search results while disallowing GPTBot to indicate that crawled content should not be used for training OpenAI’s generative AI foundation models.”
Killed byThe study behind it never defines its “citation rate”, its tiers have no numeric thresholds, and its biggest jump sits exactly where brand-size confounding is strongest. It is tied to a Trustpilot white paper with no funding disclosure. Unusable at any confidence level.
StudySeer Interactive, 2026-05-14 (no link recorded in our evidence base)
“Optimize for the prompts your customers type”
Killed byThe platforms do not search with the prompt. ChatGPT rewrites it into its own queries; Google fans it out into related searches. Prompt trackers measure a proxy for an input they cannot see.
“ChatGPT search typically rewrites your query into one or more targeted queries that it sends those providers.”
Killed byGoogle’s generative AI report has impressions only: no clicks, no CTR, no position. And Google says third-party tools have no access to its ranking data. There is no ground truth to check a position metric against.
“Third-party tools don’t have access to our internal ranking data.”
Killed byMeasured on an engine the authors built, with sources loaded into context. The one Perplexity test uploaded source text as files. The metric counts words the intervention itself added, and the paper reports a 30–40% band across three methods, not the itemised figures in circulation.
One cross-platform “AI visibility score” as a measurement
Killed byGoogle says AI Overviews and AI Mode “may use different models and techniques” and return different links. Citation units differ: Claude cites spans of text, Perplexity whole sources. There is no shared denominator.
LimitOur own visibility score is a model of this kind. We publish its formula and say which platforms we ask with search on and which with it off.
Killed byChatGPT stamps its referral links; most rivals do not, and Google AI Overviews send no referral at all. A share of trackable referrals measures stamping behaviour. Treat it as an upper bound, never an estimate.
“ChatGPT automatically includes the UTM parameter utm_source=chatgpt.com in referral URLs.”
Killed bySome fetchers say they may not follow it, and a firewall can refuse a crawler robots.txt allows. robots.txt is necessary, not sufficient: pair it with a network test.
“AI search” is five different systems with five different crawlers, documents and defaults. Below is what each vendor documents, what it does not, and exactly what a 99Visibility audit measures for it: whether we ask with search on or off, which model, and how much the platform weighs in the score.
Which access gates each AI platform documents as a requirement
Platform
01 · ROBOTS.TXT ALLOWS ITS CRAWLER
02 · NETWORK LETS IT IN
03 · FACTS IN SERVER HTML
04 · INDEXED, SNIPPET-ELIGIBLE
ChatGPT
Documented requirementOAI-SearchBot
Documented requirementOpenAI IP ranges
Documented requirementno JavaScript run
Not documented by the vendor
Perplexity
Documented requirementPerplexityBot
Documented requirementpublished IP lists
Documented requirementno JavaScript run
Not documented by the vendor
Claude
Documented requirementClaude-SearchBot
Documented requirementno IP blocking
Documented requirementno JavaScript run
Not documented by the vendor
Google AI Overviews
Documented requirementGooglebot
Documented requirementGooglebot reaches
Does not applyGooglebot renders
Documented requirementthe whole rule
Gemini
Documented requirementGoogle-Extended
Documented requirementGoogle reaches
Does not applyGoogle renders
Not documented by the vendor
ChatGPT
Two systems in one product: a model that answers from training data, and a search mode it switches on when it decides to. Only the second can see your site.
OAI-SearchBot decides whether you can appear in ChatGPT search. GPTBot only governs training, and OpenAI says each setting is independent. (OpenAI)
Eligibility needs both robots.txt permission and a host or CDN that lets OpenAI’s published IP ranges through. OpenAI publishes those ranges as IPv4 only. (OpenAI Help Center; OpenAI)
When it searches, ChatGPT rewrites the question into its own queries. Its whole published ranking disclosure is “multiple factors”. (OpenAI Help Center)
With search off, answers come from training data. As checked on October 16, 2026, OpenAI lists an April 20, 2026 cutoff for chat-latest, an alias whose underlying model changes over time. (OpenAI)
ChatGPT-User fetches pages a person asks for, and OpenAI says robots.txt rules “may not apply” to it. (OpenAI)
Crawlers that matter here
OAI-SearchBot · search
GPTBot · training
ChatGPT-User · search
In a 99Visibility audit
Column ChatGPT · 40% of the coverage weight · web search off · model gpt-6-luna · training cutoff May 2026
We ask the model through OpenAI’s API with web search off, so this column measures what ChatGPT already knows about you. ChatGPT itself searches when its model decides to; we do not reproduce that.
Search-first: answers are built from pages retrieved at answer time and cited as whole sources. What PerplexityBot cannot fetch, Perplexity cannot cite.
PerplexityBot builds Perplexity’s search index and, by Perplexity’s own account, is not used to crawl content for AI foundation models. (Perplexity)
Perplexity-User fetches pages for a person, and Perplexity says it “generally ignores robots.txt rules”. Blocking it is not reliable. (Perplexity)
Perplexity publishes IP lists for both crawlers and documents how to allow them in a firewall, so a 403 at your CDN is fixable. (Perplexity)
Perplexity cites whole sources; Claude cites spans of text. Citation counts from the two are not the same unit. (Anthropic)
Crawlers that matter here
PerplexityBot · search
Perplexity-User · search
In a 99Visibility audit
Column Perplexity · 20% of the coverage weight · live search results · model perplexity/sonar
We call Perplexity’s own Sonar model through its Agent API with web search requested, so this column is built from pages Perplexity retrieves at answer time. The Perplexity app routes many answers through other vendors’ models, so treat the column as a proxy.
Built on Google Search: indexed and snippet-eligible is the whole requirement. Googlebot renders JavaScript, so the gates here are index, snippet controls and a Search Console setting you may never have seen.
A page must be indexed and eligible for a snippet. Google says there are no additional technical requirements and no special optimizations. (Google Search Central)
No robots.txt token blocks AI Overviews; Googlebot is the control. Google-Extended “does not impact a site’s inclusion in Google Search nor is it used as a ranking signal”. (Google Search Central)
Inclusion is on by default. A Search Console control can switch it off, and child properties inherit it from the parent. (Google Search Console Help)
AI Overviews and AI Mode “may use different models and techniques”, and both may fan one query out into several related searches. (Google Search Central)
37.9% of URLs cited in AI Overviews also appeared in the first ten result blocks in March 2026. Rank helps; most citations still come from outside the top ten. (Ahrefs)
Search Console’s generative AI report shows impressions only. No clicks, no CTR, no position, no API. (Google Search Console Help)
Crawlers that matter here
Googlebot · search and training
Google-Extended · training
In a 99Visibility audit
Column Google AI Overviews · 20% of the coverage weight · live search results
We read the AI Overview Google actually shows for your keyword, through DataForSEO’s SERP API, in US English. When Google shows no overview, the query is skipped, not counted as a miss.
A separate product from AI Overviews and AI Mode. Gemini grounds answers in Google Search, renders JavaScript through Google’s infrastructure, and has its own robots.txt token for training and grounding.
Google-Extended controls Gemini training and grounding. Google states it does not affect inclusion in Google Search. (Google Search Central)
Gemini uses Googlebot’s infrastructure, so it renders JavaScript where most AI crawlers do not. (Vercel)
Google’s generative surfaces may use different models and return different links, so a Gemini answer says little about an AI Overview. (Google Search Central)
Google reports Gemini 3.5 Flash as AI Mode’s default model since 2026-05-19, while the Gemini app offers newer models. (Google)
Crawlers that matter here
Google-Extended · training
Googlebot · search and training
In a 99Visibility audit
Column Gemini · 10% of the coverage weight · Google Search grounding on · model gemini-3.8-flash
We call the Gemini API with Google Search grounding on. That is neither the Gemini app nor AI Overviews, which Google says may use different models and return different links.
Three crawlers with three jobs, routinely blocked as one. Claude searches when its user or the developer turns search on; otherwise it answers from training data.
ClaudeBot collects training data. Claude-SearchBot indexes for search. Claude-User fetches pages a person asks for. (Anthropic)
Anthropic says disabling Claude-SearchBot “may reduce your site’s visibility and accuracy in user search results”, and that blocking its IP addresses can stop it reading your robots.txt. (Anthropic)
Claude’s web search returns a page_age for each result and cites spans of text (cited_text), not whole pages. On the API it costs $10 per 1,000 searches. (Anthropic)
In the Claude apps, web search is a toggle the user controls. (Anthropic)
Crawlers that matter here
ClaudeBot · training
Claude-SearchBot · search
Claude-User · search
In a 99Visibility audit
Column Claude · 10% of the coverage weight · web search off · model claude-sonnet-5-5 · training cutoff June 2026
We ask the model through Anthropic’s API with web search off, so this column measures what Claude already knows about you. Citation rate cannot be scored there: a model that does not search cites nothing.
Meta AI is not an audited platform, but Meta-WebIndexer is in our access check: Meta is the only vendor that states in writing that allowing its crawler helps it cite you (Meta for Developers).
06 · First-party data
Our own measurements, dated
Two measurements we have saved results for. Both are small. We publish them as what we saw on the day, not as rates for the web.
We audited our own site’s indexing
Google Search Console data as of 12 October 2026 · published 16 October 2026
URLs in our sitemap, every one a clean 200 with a self-canonical and no noindex
132URLs in our sitemap, every one a clean 200 with a self-canonical and no noindex
indexed by Google
52 (39%)indexed by Google
pages that served their title and canonical to AI crawlers inside <body>
84pages that served their title and canonical to AI crawlers inside <body>
Nothing was blocked, so access was not the problem. Fixing internal links on 17 September 2026 got Google to index 19 more pages within days, and impressions did not follow: 139 a day on average before, 132 after. Getting a page indexed and getting it shown are different problems.
What the skipped pages share: 39 had under 300 words of their own, and we had written the same 9 topics three to six times each.
The finding we did not expect: since Next.js 15.2, metadata on pages rendered on demand streams into <body> for any user agent not on the framework’s list, and GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot are not on it. Googlebot runs JavaScript and sees it moved back; the AI crawlers do not. Google only accepts a canonical inside <head>. We set htmlLimitedBots: /.*/ on 16 October 2026. Whether this changes AI citation has not been measured by anyone.
AI crawler access on 43 sites, the day before Cloudflare’s default change
Captured 14 September 2026, 00:19–00:21 UTC · every distinct brand origin in our database that day
sites refused at least one crawler their own robots.txt allowed, while serving a normal browser
9 of 34sites refused at least one crawler their own robots.txt allowed, while serving a normal browser
of those refusals came from sites behind Cloudflare
8 of 9of those refusals came from sites behind Cloudflare
sites that allow OAI-SearchBot in robots.txt refused it at the network
1 of 32sites that allow OAI-SearchBot in robots.txt refused it at the network
What the refusals were: one site turned away 7 of the 8 AI search and answer crawlers we sent, OAI-SearchBot, Claude-SearchBot and PerplexityBot among them. That is the silent failure: robots.txt says yes, the network says no, and nothing in the owner’s dashboards shows it. 6 refusals involved Bytespider, a training crawler, which costs no search visibility. 2 sites refused only our Googlebot and Bingbot requests, which is what an impostor check does to a request that carries Google’s user agent but not Google’s IP address.
robots.txt itself: 33 of 43 files were readable. None used a blanket disallow, and none blocked a search-only crawler. 2 blocked training crawlers by name while leaving the search crawlers alone, which is the split the vendors document. 2 returned a server error, which the robots.txt standard (RFC 9309) tells crawlers to treat as “disallow everything”, and 8 did not answer at all.
Limits: 43 sites from our own database are not a sample of the web. Probes came from one datacenter with each vendor’s user agent but not its IP addresses, so a refusal is real for that request and a pass proves nothing about the real crawler. We have not yet repeated the capture after the change, so this is a single snapshot, not a before-and-after. Site names are not published.
Search fires at the platform’s discretion. Published estimates of how often ChatGPT searches disagree with each other by a wide margin and measure different things. Without visible citations, you do not know.
Whether you are in a training set, and what it does
No vendor exposes training-set membership. Any effect lands a model generation later, bounded by the cutoff.
Each needs audit data across many sites. Where we stand on each is stated plainly, including where we have not started.
Open research questions in GEO and our status on each
Question
Why it matters
Where we are
Does closing the JavaScript rendering gap change citation?
The mechanism is documented and the fix is a datable deploy. Every comparable GEO intervention in the literature came back null, so a positive result would be the only positive causal finding in existence.
Designed, not run. It needs the same headless renderer our hydration check is waiting on.
Does the schema null hold for pages not yet cited?
Ahrefs only studied pages with 100+ AI Overview citations. Mid-sized brands at zero citations are exactly the population it excluded.
Not started.
How often does robots.txt say yes while the network says no?
Nobody has published the rate. It is cheap to measure from outside and segment by CDN.
Instrument built; one 43-site snapshot below. Not yet a rate for the web.
What share of all pages carry a recent date?
Without that denominator, “75% of cited pages were updated in the last year” could be zero signal.
Not started.
What does AI get wrong about commercial brands, by type?
Error censuses exist for news, not for companies: wrong prices, outdated product names, founding and location errors, competitor mix-ups.
Our audit already extracts these errors per answer. No study published.
How different is what ChatGPT says about you with search on and off?
The search-off answer can be over a year stale. Nobody has measured the gap brand by brand.
Not started.
What separates a retrieved page that gets cited from one that gets dropped?
OpenAI, Anthropic and Perplexity all expose more than the citations. The same question’s retrieval set is a built-in control group.
Partly instrumented: we parse Perplexity’s retrieved URLs but do not yet keep them.
Does allowing Meta-WebIndexer get you into Meta AI?
Meta is the only vendor that says so in writing, and nobody tracks Meta AI.
Meta-WebIndexer is in our access check. Meta AI is not an audited platform.
Do the prompts GEO tools test match the searches AI runs?
Bing shows the real grounding queries. Nobody has published the overlap with test prompts.
Blocked: Bing exposes grounding queries in its interface only.
08 · In the product
How 99Visibility applies this research
The audit is built around the factors that survive: access first, then what the platforms get wrong about you. Where the evidence says a factor cannot be measured, the audit does not pretend to, and where we have not built a check yet, this table says so.
Which factors a 99Visibility audit checks, and how
Every audited answer is compared with the facts you enter (price, founding year, location, features), and contradictions are flagged by severity. Fixing a contradiction on your own pages is the lever the evidence base lists alongside access, and it is fully yours. See hallucination detection.
Schema markup
Checked for parity only: facts in your JSON-LD that your visible text does not show. Never recommended as a ranking lever, and never critical.
The score is a model
A weighted average of Mention Rate (40%), Accuracy (30%), Sentiment (15%) and Citation Rate (15%), multiplied by 0.2 + 0.8 × coverage, where coverage is the market-weighted share of the platforms in your audit that mentioned you at least once. Mentioned on no platform, the score is 0. The platform weights are ChatGPT 40%, Google AI Overviews 20%, Perplexity 20%, Gemini 10% and Claude 10%. That makes it exactly the kind of single cross-platform number the drop list warns about, so we publish the formula and say which columns are asked with search on and which with it off. Read it as our model, not a measurement.
The robots.txt checker runs the audit’s own evaluator on your file for 18 AI crawlers, shows the line that decides each one, and separates search crawlers from training crawlers. It reads one file; the firewall test needs the audit.
Agent V is the assistant inside your 99Visibility dashboard. It reads your audits and the pages on your own site, then drafts the fix: corrected copy, the robots.txt lines for each AI crawler, or JSON-LD to paste. Drafts are text for you to paste; V never edits your site.
Changes to your account, such as running an audit, checking a page, adding keywords or a competitor, or marking a fix done, appear as a card you confirm. Nothing changes until you do. V can only see the account you are signed in to.
Its standing instructions put access problems first, then what the platforms get wrong, and forbid it to sell schema, domain authority or E-E-A-T as a fix. When it drafts JSON-LD, it is for keeping your markup in agreement with your page, not for ranking.
It treats every page it reads, your own included, as data and never as instructions.
“Its date” is what the source says about itself; many vendor pages carry none. “Last read” is the day a person checked it against the claims here. “Weekly watch” means our script diffs the page every Monday and raises the claims to re-check when a watched sentence changes; the date is when its current baseline was captured.
Sources cited on this page with their own dates, our last read and watch status
99VisibilityWe audited our own site. Google indexes 39% of it.
12 October 2026Search Console data as of this day; published 2026-10-16
Our data
99VisibilityAI crawler access baseline, 43 site origins
14 September 2026captured 00:19–00:21 UTC
Our data
10 · Change log
What changed, and when
Our own changes first, then the dated changes inside the sources themselves.
Page rebuilt; indexing self-audit published
Every finding now names its source, the source’s own date and the day we last read it, and says whether our weekly watcher diffs it. Added per-platform mechanics, our own measurements and the list of what nobody can measure. Our self-audit found Google indexing 52 of our 132 sitemap URLs and Next.js serving our titles to AI crawlers inside <body>; we moved the metadata back into <head> the same day.
Watch list extended to the consumer apps; AI Overviews split out
Added the model and release-note pages for ChatGPT, Claude, Gemini, Perplexity and Google’s AI Mode to the weekly watch. Google AI Overviews became its own column in the audit, separate from the Gemini API.
Crawler access baseline captured
Robots.txt and network checks on 43 site origins, the day before Cloudflare’s announced change to its AI-crawler defaults. Results below.
Unsourced statistics removed
An earlier version of this page showed per-platform mention, accuracy and citation rates and a hallucination breakdown. No dataset we hold supports them, and our own data contradicted one. They are gone, here and on every customer-facing page.
Weekly source watch started
A script now diffs the primary sources behind these claims every Monday and opens an issue naming the claims to re-check when one changes.
Verification-first evidence review
140 claims checked against their primary documents: 100 confirmed, 34 over-claimed, 5 misquoted, 1 superseded, none unreachable. It corrected six things our first pass got wrong (listed below).
Page first published
The first version of this page.
Corrections the 2026-08-22 review made to our own first pass
What our first research pass said and what the verified review found
We had said
Actually
Google’s guide invalidates llms.txt.
Scope error. The statement covers Google Search only, and Google calls it fine to keep one for other services. The advice is still unsupported, because no other engine documents reading it, but the reason is narrower.
The top-10 share of AI Overview citations fell from 76% to 38%.
Not a trend. Ahrefs changed its parsing method between the two studies. The 38% stands for March 2026; the decline does not.
Schema is settled as null or negative.
A boundary condition. Every page in the only matched test was already heavily cited, so whether schema helps a page enter the candidate set is untested, not refuted.
Review profiles are an emerging citation factor.
Downgraded to unusable: the study never defines its citation rate and its jump sits where brand size confounds most.
Google’s statements are decisive evidence.
They are assertions, not measurements, and unfalsifiable from outside. Still the best evidence for Google’s own surfaces; not the same thing as a study.
You must opt in to Google’s AI features in Search Console.
It is opt-out. Inclusion is the default for every property, and the control inherits to child properties.
Dated changes in the sources
Dated changes published by the platforms and vendors
Date
Change
Source
2026-07-10
Google updates its AI optimization guide: no AI text files, no chunking, no special markup needed.
The findings come from a verification-first review completed on 22 August 2026. Nothing entered unless an agent fetched the primary document and recorded what it actually says, and every discovery pass was followed by a different pass whose brief was to prove it wrong.
It checked 140 claims across 7 classes of source: 100 confirmed, 34 over-claimed against their source, 5 misquoted, 1 superseded and 0 unreachable. 58 more were dropped before verification. 4 adversarial lenses (mechanism, confounding, currency and commercial motive) then attacked what survived.
We sell GEO audits and fixes, so claims that on-page levers work get the harshest treatment here, and almost none survive. Vendor statements, Google’s included, are assertions about their own systems, not measurements; they are the best evidence for those systems and are labelled as what they are.
Keeping it current: 35 primary sources sit on a watch list (last reviewed 21 September 2026). Every Monday a script re-reads the sentences in each that mention the terms our claims depend on, and opens an issue naming the claims to re-verify when one changes. It does not call a language model. A test fails our build if this page cites a source as watched that the watcher does not watch, or quotes a sentence we do not hold on record.
We do not publish aggregate visibility rates from customer audits. Doing that credibly needs a disclosed sample, a disclosed platform set and a sampling frame that supports the word “brands”; until then the number would be decoration. Questions: contact our team.
12 · Citation
Cite this research
Free to cite with attribution. For any single finding, cite the primary source named beside it: it is the evidence, we are the review.
99Visibility. “AI Search Research: What the Evidence Supports.” Last reviewed 16 October 2026. https://www.99visibility.com/research
Cite the review date with the page: findings change when their sources do, and the change log above records what moved. Full guidelines are on our citation page.
All 132 URLs in our sitemap return a clean 200 with a self-canonical, and Google indexes 52. Here is what the other 80 have in common, why 19 newly indexed pages added no impressions, and the Next.js default that served our titles to AI crawlers outside <head>.
An AI answer about your brand passes four stages: memory, crawler access, retrieval and generation. What each AI vendor does at each one, and the stage you control.
Block training crawlers if you object to training; keep search and agent crawlers open to stay in AI answers. What Cloudflare changed on September 15, 2026, per crawler, and how to check yours.
We checked 20 popular GEO strategies against vendor docs and controlled studies. Access and accurate facts hold up; schema, llms.txt and AI-style rewrites don't.
llms.txt is a Markdown summary for AI agents. Here is the v2 spec, a correct example file, the log data on who fetches it, and why Google says Search ignores it.
E-E-A-T is not a score any AI computes. What Google actually says, which signals matter most for AI visibility, the myths to drop, and eight checks worth running.
OpenAI names Microsoft and Shopify as ChatGPT search providers, plus its own crawler. What each AI engine documents about its search, and why Elasticsearch is not your lever.