All resources

Measure

August 10, 2026 · 9 min read

By Marcus Bransbury · Founder, Robot Visible

AI crawler bots and robots.txt reference

A maintained reference for ChatGPT, Google, Claude and Perplexity crawlers: purpose, robots.txt controls, IP verification and policy examples.

Quick answers

Can I block AI model training and stay visible in ChatGPT search?

Yes, using OpenAI's separate controls: allow OAI-SearchBot for ChatGPT search discovery and disallow GPTBot to decline future foundation-model training collection. The controls are independent. Allowing search removes one access barrier but does not guarantee that ChatGPT will retrieve or cite the page.

Does an AI bot user-agent prove the request is genuine?

No. User-agent strings are easy to spoof. Match the claimed token with the source IP against the provider's current published JSON ranges; for Google, use its published ranges or forward-confirmed reverse DNS. Preserve the URL, time, status, and WAF action as the evidence of what your server actually returned.

Should I add Content-Usage or Content-Signal to robots.txt now?

Treat both as additional, experimental metadata rather than replacements for provider-specific rules. Cloudflare implements its Content-Signal convention in its own products. The IETF Content-Usage attachment remains a draft direction and is not yet an RFC. No major answer provider has made either vocabulary its documented universal publisher control.

The short answer

There is no single AI crawler switch. Search discovery, model training, user-triggered retrieval, product controls, and ad validation are different jobs, even when one provider operates all of them. OpenAI currently names OAI-SearchBot, GPTBot, ChatGPT-User, and OAI-AdsBot. Anthropic names Claude-SearchBot, ClaudeBot, and Claude-User. Perplexity separates PerplexityBot from Perplexity-User. Google Search uses Googlebot, while Google-Extended is a policy token with no HTTP user agent of its own.1,2,3,4

Choose by purpose. A common publisher policy is to allow automatic search crawlers, keep user-requested fetches reachable where the provider honours that choice, and decline training crawlers. That preserves a route into live answers without granting every use of the content. The important exception is Google-Extended: Google currently couples future Gemini training and Gemini grounding under the same token, so blocking it also removes a route into grounded Gemini answers while leaving Google Search and AI Overviews under Googlebot.

AI crawler reference: every named provider token

This table is generated from the same crawler registry used by Robot Visible's exact-URL policy checks. Roles are deliberately separate. A training bot visit must not be reported as search visibility, a user-triggered fetch is not an automatic crawl, and Google-Extended must not appear in a server-log checklist because it never sends a request.

Named OpenAI, Google, Anthropic, and Perplexity crawler and policy tokens, their roles, purposes, and publisher controls
ProviderBot or tokenRoleWhat it doesPublisher control and trade-off
OpenAIOAI-SearchBotSearch crawlerSurfaces pages in ChatGPT search results.Honours its own robots.txt group; allow it for ChatGPT search discovery.
OpenAIGPTBotModel-training crawlerCollects public web content that may contribute to future foundation-model training.Honours its own robots.txt group; it can be blocked independently of OAI-SearchBot.
OpenAIChatGPT-UserUser-triggered fetcherFetches a page because a ChatGPT user or Custom GPT requested it.OpenAI says robots.txt rules may not apply because the action is user initiated.
OpenAIOAI-AdsBotAd landing-page validatorValidates the safety and relevance of landing pages submitted as ChatGPT ads.OpenAI documents the user agent, but not as a Search or training publisher control.
GoogleGooglebotSearch crawlerCrawls and renders pages for Google Search, including its AI search features.Honours Googlebot robots.txt groups; noindex is a separate indexing control.
GoogleGoogle-ExtendedProduct-control tokenControls Gemini model training and Gemini grounding use of content Google has crawled.A robots.txt product token, not a crawler; it is independent of Googlebot.
PerplexityPerplexityBotSearch crawlerCrawls and indexes pages so Perplexity can surface and link them in search results.Honours its own robots.txt group; Perplexity recommends allowing its current IP ranges too.
PerplexityPerplexity-UserUser-triggered fetcherFetches a page in response to a question or action from a Perplexity user.Perplexity says this user-triggered fetcher generally ignores robots.txt rules.
AnthropicClaude-UserUser-triggered fetcherRetrieves web content at a Claude user's direction.Anthropic provides a separate robots.txt token for this user-fetch path.
AnthropicClaude-SearchBotSearch crawlerIndexes web content to improve the relevance and accuracy of Claude search results.Honours its own robots.txt group and can be allowed independently of ClaudeBot.
AnthropicClaudeBotModel-training crawlerCollects public web content that may contribute to future Claude model training.Honours its own robots.txt group; Anthropic also supports Crawl-delay for its bots.

A copy-paste robots.txt policy, with the trade-offs

The example below allows the automatic crawlers that build search and answer indexes while declining the named training collectors. It is a starting policy, not a universal recommendation. Put it in the robots.txt file at the root of every hostname it should govern, preserve any existing path-specific rules, and test the exact public URL after publishing. Provider changes may take time to propagate.

Read every line as a product choice. Allowing OAI-SearchBot, PerplexityBot, and Claude-SearchBot keeps those automatic discovery paths open; it does not guarantee retrieval or citation. Allowing Googlebot preserves Google Search and its AI features, but indexing remains a separate decision. Blocking GPTBot and ClaudeBot declines their future training collection without blocking their providers' separate search bots. Blocking Google-Extended declines both future Gemini training and Gemini grounding, because Google does not currently expose separate tokens for those uses.

robots.txt: allow search, decline training
# ChatGPT search: allow discovery for ChatGPT search answers
User-agent: OAI-SearchBot
Allow: /

# OpenAI model training: decline without blocking ChatGPT search
User-agent: GPTBot
Disallow: /

# Google Search, AI Overviews and AI Mode: keep Googlebot eligible
User-agent: Googlebot
Allow: /

# Gemini training and Gemini grounding: one coupled Google control
User-agent: Google-Extended
Disallow: /

# Perplexity automatic search discovery
User-agent: PerplexityBot
Allow: /

# Claude automatic search discovery
User-agent: Claude-SearchBot
Allow: /

# Anthropic model training: decline without blocking Claude search
User-agent: ClaudeBot
Disallow: /

Trade-off: this keeps the named automatic search crawlers open and declines named training collection, but blocking Google-Extended also declines Gemini grounding. ChatGPT-User and Perplexity-User are omitted because their providers say robots rules may not, or generally do not, apply to user-triggered fetches. OAI-AdsBot is relevant only to landing pages submitted as ChatGPT ads.

What robots.txt can honestly establish

A robots.txt check can establish whether the fetched policy permits a named product token to fetch one exact URL at that moment. It does not prove that the provider visited, received the same response through a firewall, rendered JavaScript, indexed the page, retrieved it for a question, or cited it. A missing or failed robots.txt fetch is an unknown observation, not a confident allow.

The distinction matters at the WAF layer. A policy can say Allow while a CDN challenge, rate limit, authentication wall, or IP rule still refuses the real provider. The inverse also happens: a claimed bot can ignore robots.txt or spoof a familiar name. Treat policy and observed requests as two evidence rows rather than collapsing them into a green crawler score.

How to verify an AI crawler by IP

A user-agent can be spoofed, so the string in a log is only a claim. For OpenAI, Perplexity, and Anthropic, match both the product token and the source address against the provider's current JSON list. Google supports published IP ranges and forward-confirmed reverse DNS: the hostname must end in an official Google crawler suffix, and resolving that hostname must return the original address. Never copy individual addresses into an article or a permanent WAF rule when the provider publishes a maintained endpoint.1,2,3,4,5

For an observed visit, retain the requested path, timestamp, full user-agent, source IP, response status, bytes served, and any WAF or challenge action. That proves a request reached your infrastructure and what your infrastructure returned. It still does not prove how the provider later indexed, interpreted, or used the response.

How to verify genuine requests for every named crawler or fetcher, and the limit of that evidence
Bot or tokenVerification methodWhat the evidence does not prove
OAI-SearchBotMatch the user-agent token and source IP to https://openai.com/searchbot.json.An allowed policy does not prove a crawl, index entry, appearance, or citation.
GPTBotMatch the user-agent token and source IP to https://openai.com/gptbot.json.A GPTBot visit is training-path evidence, not ChatGPT search-readiness evidence.
ChatGPT-UserMatch the user-agent token and source IP to https://openai.com/chatgpt-user.json.It is not an automatic crawler and does not determine ChatGPT Search inclusion.
OAI-AdsBotMatch the user-agent token and source IP to https://openai.com/adsbot.json.It only visits submitted ad landing pages and its data is not used for model training.
GooglebotVerify forward and reverse DNS against .googlebot.com or .geo.googlebot.com, or match the source IP to https://developers.google.com/static/crawling/ipranges/common-crawlers.json.Robots permission alone does not prove indexing or eligibility for an AI Overview.
Google-ExtendedNot applicable: this is a policy token and sends no HTTP requests.It has no HTTP user agent and does not control Google Search inclusion or ranking.
PerplexityBotMatch the user-agent token and source IP to https://www.perplexity.com/perplexitybot.json.It is not used to crawl content for foundation-model training.
Perplexity-UserMatch the user-agent token and source IP to https://www.perplexity.com/perplexity-user.json.It is not an automatic web crawler or a training collector.
Claude-UserMatch the user-agent token and source IP to https://claude.com/crawling/bots.json.Keep this evidence separate from automatic search crawling and model training.
Claude-SearchBotMatch the user-agent token and source IP to https://claude.com/crawling/bots.json.A permitted or verified visit does not prove a later Claude citation.
ClaudeBotMatch the user-agent token and source IP to https://claude.com/crawling/bots.json.It is not the crawler that determines Claude search visibility.

Content Signals and the Content-Usage direction

Cloudflare's Content Signals convention adds search, ai-input, and ai-train preferences to robots.txt, and its newer content-use experiment distinguishes immediate interaction, reference-style indexing, and fuller reuse. Cloudflare can parse and enforce these signals in its own products, but the convention is not a substitute for provider-specific groups: no major answer provider has publicly committed to treating Cloudflare's vocabulary as its publisher control.6

The standards-track direction is the IETF AI Preferences work. Its active vocabulary draft describes allow, disallow, and unknown preferences; a companion attachment draft proposed a Content-Usage HTTP header and robots.txt directive. As of 10 August 2026 the vocabulary is still an Internet-Draft, the attachment draft has expired, and the work is not yet an RFC. That makes Content-Usage useful to watch and unsuitable to present as a dependable production opt-out today.7,8

If you publish an experimental signal, keep the ordinary provider rules beside it and document which enforcement layer actually reads it. Unknown fields are normally ignored by robots parsers; that is not the same thing as a provider accepting the preference. The safe operational posture is layered: explicit provider tokens for declared choices, current WAF rules for enforcement, and emerging usage signals as additional metadata rather than a replacement.

Experimental Cloudflare Content-Signal example
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /

Use only when you understand which service will parse or enforce it. This is Cloudflare's current convention, not the IETF Content-Usage draft and not a provider-wide promise.

What to check before Cloudflare changes its defaults

Cloudflare's new defaults take effect on 15 September 2026 for specified customers and ad-serving pages. Before then, record the intended policy for search, training, and user-agent traffic; inspect the dashboard's migrated settings; fetch the public robots.txt; and test the important URLs from outside your authenticated session. The companion Cloudflare deadline guide separates who is affected from who keeps an existing configuration.6

After any change, check both layers again. First establish the exact-URL policy from robots.txt. Then inspect production logs for verified provider traffic and the response it received. Neither layer licenses a visibility claim: only a captured answer with the question, provider, surface, cited URL, and timestamp establishes an observed citation.

Run a free exact-URL crawler policy check

How this reference is maintained

Every crawler row is derived from the scanner registry and was checked against first-party documentation on 2026-08-10. The build fails when the oldest review is more than 45 days old. A provider change therefore has one update path: change the registry facts, update the review date and supporting fixture, then let the guide and product read the same record.

The check protects freshness, not truth by itself. Re-verification still requires a person to read each provider page, compare names, roles, robots behaviour, and verification endpoints, and record material changes. A passing date guard means the review happened recently; it does not claim the provider gave advance notice or that every request will comply.

Sources and further reading

  • Overview of OpenAI Crawlers OpenAI Developers. First-party roles, robots controls, user-agent examples, and published IP endpoints for OAI-SearchBot, GPTBot, ChatGPT-User, and OAI-AdsBot.
  • Google's common crawlers Google Crawling Infrastructure. First-party documentation for Googlebot, Google-Extended, robots tokens, affected products, the absence of a Google-Extended HTTP user agent, and Google crawler IP ranges.
  • Perplexity Crawlers Perplexity. First-party distinction between PerplexityBot and Perplexity-User, robots behaviour, current user-agent examples, and separate IP range endpoints.
  • Does Anthropic crawl data from the web? Claude Help Center. First-party roles and robots controls for ClaudeBot, Claude-User, and Claude-SearchBot, plus the link to Anthropic's crawler address list.
  • Verify requests from Google crawlers and fetchers Google Crawling Infrastructure. Google's method for verifying genuine crawler traffic using published IP ranges or forward-confirmed reverse DNS.
  • Managed robots.txt and Content Signals Cloudflare. Cloudflare's search, ai-input, ai-train, and experimental content-use vocabulary, its generated example, availability, and enforcement limitations.
  • A Vocabulary For Expressing AI Usage Preferences IETF Datatracker. The active standards-track Internet-Draft vocabulary and its explicit distinction between allowed, disallowed, and unknown preferences.
  • Associating AI Usage Preferences with Content in HTTP IETF Datatracker. The expired attachment draft that proposed Content-Usage as an HTTP field and robots.txt directive; it is not an RFC.

Continue learning

See where your website stands

Run a free scan and get your AI readiness score across all six categories, with the gaps to fix first.