8 min read

Is my site blocked from ChatGPT, Claude and the other AI crawlers?

By CrawlWarden, which builds the monitoring described at the foot of this article.

Published , sources last re-read .

Reading your robots.txt no longer answers this. A CDN decides it at the edge, where no robots.txt directive is involved and nothing in the file changes. Since 15 September 2026 Cloudflare’s Block settings reach Googlebot, Bingbot and Applebot for the first time, so a choice meaning "do not train on my content" can now cost you search. The default for new ad-bearing domains is the safer Disallow AI Training rather than Block. The only answer you can trust is to fetch your own page as each crawler and read the status that comes back.

Three different questions, and the crawlers that answer them

Almost every argument about this conflates three separate things. A crawler can be collecting content to train a model, indexing content so it can be cited in an answer, or fetching a page right now because a user asked something. Vendors ship different bots for each, and you can allow one and refuse another.

These are the current tokens, from each vendor’s own documentation:

CrawlerVendorWhat it is for
GPTBotOpenAITraining. Content that may be used to train foundation models.
OAI-SearchBotOpenAISearch. Surfacing sites in ChatGPT search results.
ChatGPT-UserOpenAIUser-initiated. OpenAI notes robots.txt rules may not apply, because a person asked for the page.
OAI-AdsBotOpenAIChecks the safety of pages submitted as ChatGPT ads.
ClaudeBotAnthropicTraining.
Claude-SearchBotAnthropicSearch indexing.
Claude-UserAnthropicUser-initiated.
Google-ExtendedGoogleTraining only, for Gemini. Does not affect Search.
Google-CloudVertexBotGoogleCrawls for Vertex AI Agents.
PerplexityBotPerplexitySearch indexing. See the caveat below.

Why robots.txt stopped being the whole answer

Cloudflare replaced its single "block AI bots" switch with three categories, Search, Training and Agent, each carrying its own setting. Search and Agent can be set to Allow, Block, or Block on pages with ads. Training adds a fourth, Disallow AI Training, which publishes the no-training preference in your robots.txt instead of refusing the request.

From 15 September 2026, a new domain with no ads defaults to Allow on all three. A new domain that displays ads defaults to Allow for Search, Disallow AI Training for Training, and Block on pages with ads for Agent. Existing customers had to record a preference before that date to avoid the change. Note which setting the ad-bearing default picks: it is the one that keeps search working.

The important part for anyone trying to diagnose this: that block is applied at the edge. Your robots.txt is untouched and still says whatever it always said. A crawler is refused before it ever reaches your server, and the file you would check to find out is not the file doing it.

The same is true of any WAF rule, bot-management setting or rate limit anywhere in front of your origin. If your site sits behind a CDN, robots.txt describes your intent and the edge decides the outcome.

The footgun: choosing Block on Training can block Googlebot

This is new, and it is the part worth reading twice. Until 15 September 2026 the Block settings deliberately spared the mixed-use crawlers. Cloudflare’s own wording: Block and "Block on pages with ads" "previously did not apply to mixed-use crawlers because blocking them could also affect search discoverability". That exception is gone. Block and Block on pages with ads now apply to every training crawler, Googlebot, Bingbot and Applebot included.

The default is not the dangerous setting, and the distinction is the whole point. Disallow AI Training exists precisely so this trade does not have to be made: Cloudflare designates Google, Apple and Microsoft as Accountable, and that setting leaves their crawlers allowed for search while refusing training. Amazon, Anthropic, Meta and OpenAI are Accountable for a different reason, which is that they ship separate search and training crawlers in the first place.

The risk is in choosing Block, which is a different control and a deliberate act. Someone ticks a box meaning "do not train on my content", and the consequence is that Googlebot stops being able to fetch the site. Nothing about the site looks different, the setting was chosen for a defensible reason, and the person who ticked it is often not the person who watches search traffic.

Note the separate case that is safe: Google’s own Google-Extended token is training-only, and Google states it "does not impact a site’s inclusion in Google Search nor is it used as a ranking signal". Blocking Google-Extended in robots.txt is not the same as blocking Training at a CDN, and does not carry the same risk.

How to check it yourself

Fetch your own page as each crawler and read the status. This is the only method that sees an edge block, because it is the only one that actually asks:

  • curl -sI -A "Mozilla/5.0 (compatible; GPTBot/1.4; +https://openai.com/gptbot)" https://example.com/page
  • Repeat for ClaudeBot, OAI-SearchBot, PerplexityBot and Googlebot. A 200 for one and a 403 or a challenge for another is your answer.
  • Compare against a plain browser fetch of the same URL. If they differ, something between you and the visitor is making a decision you did not make on the page.
  • Verify a crawler in your own logs before trusting the user agent: OpenAI publishes IP ranges at openai.com/gptbot.json and one file per bot, Anthropic at claude.com/crawling/bots.json. Anyone can send a user agent string; only the real crawler comes from those ranges.
  • If you block by IP, note Anthropic’s own warning that doing so stops them fetching your robots.txt at all, so you lose the ability to express anything more nuanced later.

What nobody can fully check: undeclared crawlers

All of the above assumes a crawler says who it is. Not all of them do, and this is where honest advice runs out.

In August 2025 Cloudflare published findings that Perplexity, when its declared crawler hit a block, switched to a generic browser user agent impersonating Chrome on macOS and rotated source networks, generating millions of daily requests across tens of thousands of domains. Cloudflare tested it on freshly created domains whose robots.txt forbade all automated access, and said the content still came back in answers. It de-listed Perplexity as a verified bot in response. Perplexity disputed the characterisation.

Take from that what it actually supports: robots.txt is a request, not a fence, and it only binds the crawlers that choose to read it. A site that wants a hard boundary needs one enforced at the network, and a site that wants to be cited needs to confirm the crawlers can actually get in rather than assuming the file did its job.

llms.txt does not fix this

It is the first thing suggested whenever this comes up, and the evidence against it is unusually clear. Ahrefs analysed 137,000 domains: 28% publish an llms.txt, 97% of those files received no traffic in a month, 96% of the fetches that did happen were bots, and no request ever arrived for an llms.txt that did not exist. Nothing goes looking for it.

John Mueller’s position is to make one when a platform that actually sends you customers says it needs the file. There is a narrower nuance worth knowing: Google’s Search guidance says you do not need it for generative search visibility, while Chrome’s agentic browsing documentation lists it as a signal for agents navigating a site to complete a task. Those are different surfaces and only one of them is about being cited.

If the concern is whether models can reach and quote you, an llms.txt answers none of it. Access does.

The checks that report this

CrawlWarden watches a list of URLs you choose and reports what changed. It does not diagnose and it does not score. Severity is a property of the check rather than a setting: the number below is how many consecutive runs must see the new value before it becomes an email, and it is never less than two, because one observation is noise.

  • robots.txt disallowconfirmed over 2 consecutive runs

    Evaluates the live robots.txt against each watched URL for each crawler you choose, including GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended and Applebot-Extended.

  • Googlebot / browser divergenceconfirmed over 2 consecutive runs

    Fetches each page as a browser and as Googlebot and reports when the two answers stop agreeing, which is what an edge-level block looks like from outside.

  • Googlebot status, from a non-US addressconfirmed over 2 consecutive runs

    Reports the status Googlebot actually receives, so a category setting that caught it is visible as a status change rather than as silence.

  • robots.txt contentconfirmed over 2 consecutive runs

    Reports any edit to the file at all, whether or not it changes the verdict for a URL you watch.

Every check is available on every plan, including the free one. CrawlWarden pricing, per site rather than per URL.

Questions

Should I block AI crawlers?
That is a business decision and both answers are defensible. Publishers with ad revenue have a real argument for blocking training; anyone who wants to be named in assistant answers has a real argument for allowing search bots. What is not defensible is not knowing which way your own site currently falls.
Does blocking Google-Extended hurt my Google rankings?
No. Google states plainly that Google-Extended "does not impact a site’s inclusion in Google Search nor is it used as a ranking signal in Google Search". It controls Gemini training only.
If robots.txt allows GPTBot, is my site definitely reachable?
No, and this is the whole point of the page. A CDN, WAF or bot-management rule can refuse the request before it reaches your server, and none of that is visible in robots.txt. Fetch the page as the crawler and read the status.
Why does allowing ChatGPT-User matter separately?
Because it is the bot that fetches a page when a person has asked ChatGPT about it, rather than for training or indexing. OpenAI notes robots.txt rules may not apply to it for that reason. Blocking it blocks a user who is actively trying to read you.
How would I know if this changed without checking manually?
You would not, which is the problem. Nothing about the page looks different, Search Console will not mention crawlers other than Google, and the setting was usually changed by whoever administers the CDN rather than whoever watches traffic.

Related

Sources

What was checked, and where. An entry with no link is something that could not be verified, named here rather than left out.

Know the moment this happens to you

Give CrawlWarden a domain, keep the pages it suggests, and the first check runs immediately. Free forever for one site.