Skip to content

AI visibility measurement guide · By Yes AI

How to check if your site blocks AI crawlers

Published 6 min read

Most accidental AI crawler blocks sit in robots.txt, in the CDN or firewall, or in the server's responses. All of them can be checked with a browser, a terminal and your hosting logs. This guide gives the order to check them and the rules that decide which line applies to which crawler.

Quick answer

Read robots.txt and find the group that applies to each crawler's token: a crawler named in its own group follows only that group and ignores the * group. Then check CDN and firewall bot settings, because a request blocked there never reaches robots.txt. Finally, search server logs for each user agent and confirm the requests came from the operator's published IP ranges. A robots.txt that returns a 5xx error tells compliant crawlers to stay out entirely.

Web developer at a home office desk in Hobart reading server log files across two monitors

Which robots.txt group applies to each crawler?

The Robots Exclusion Protocol, published as RFC 9309, sets the rules compliant crawlers follow. The file must sit at /robots.txt in the top-level path of each host. A crawler matches its product token to the user-agent lines without regard to case and obeys the matching group. If two groups match the same token, their rules are combined. Only when no group matches does the crawler fall back to the group for *. Within a group, the most specific rule, meaning the longest matching path, wins. The RFC also says these rules do not authorise or deny access; they are requests that compliant crawlers honour.

Hypothetical example: a site has a * group that disallows /admin/ and a separate GPTBot group that disallows everything. GPTBot follows its own group and stays out. OAI-SearchBot has no group of its own, so it follows the * group and may crawl everything except /admin/.

  • Search crawlers: Googlebot, OAI-SearchBot, Claude-SearchBot and PerplexityBot.
  • Training crawlers: GPTBot and ClaudeBot.
  • User-initiated fetchers: ChatGPT-User, Claude-User and Perplexity-User.

Does robots.txt itself load correctly?

Open https://yourdomain/robots.txt in a browser and check its status code with a header checker or curl -I. RFC 9309 treats status codes differently. A 4xx response such as 404 means the file is unavailable, and crawlers may then access any page. A 5xx server error means the file is unreachable, and crawlers must assume everything is disallowed. A site whose robots.txt sometimes returns 500 or 503 can lose crawler access without anyone editing the file. Crawlers may cache the file, and the RFC says a cached copy should not be used for more than 24 hours unless the file is unreachable.

Each hostname needs its own file. Anthropic's documentation, for example, tells site owners to add robots.txt rules for every subdomain they want covered, so check www, non-www and any booking or shop subdomain.

Is the CDN or firewall blocking before robots.txt?

A crawler that receives a 403 or a challenge page never gets to read your robots.txt, so a firewall setting can override a file that allows everything. Cloudflare now groups AI traffic into three behaviours that each site controls separately: Search, for crawlers that index content to answer questions later; Agent, for automated activity on a person's behalf; and Training, for crawlers that train or fine-tune models. Each can be set to block on all pages, block only on pages with ads, or allow. The settings are under Security Settings, then Configure AI bot policies.

Cloudflare says new domains onboarded from 15 September 2026 block Training and Agent bots on pages that display ads while Search stays allowed, and that crawlers used for both search and training are caught by training blocks. Check this setting on any recently added domain, and check rules on other hosts that block countries or data centres.

How do you request a page as each crawler?

From a terminal, request a key page with a crawler's user-agent token and compare the status code and page size with a normal browser request. For example: curl -s -o /dev/null -w '%{http_code}' -A 'PerplexityBot/1.0' https://www.example.com.au/services/. A 200 that matches the browser result is a pass. A 403, a 429 or a much smaller response suggests a rule is catching that agent. The test has a limit: some bot management products check the source IP address as well as the user agent, so a request from your own computer may be treated differently from the real crawler. Use it to find obvious blocks, then confirm in the logs.

What do the server logs show?

Server or CDN logs show what the real crawlers received. Search the access logs for each token, such as OAI-SearchBot, ClaudeBot, Claude-SearchBot and PerplexityBot, and look at the status codes returned. Then check the requesting IP addresses against the lists the operators publish, because anyone can copy a user-agent string. OpenAI and Perplexity publish JSON files of their crawler addresses, and Anthropic's crawler page links to its list. A run of 403 responses to a verified crawler address is the clearest sign of an unintended block.

  • OpenAI: openai.com/searchbot.json, openai.com/gptbot.json and openai.com/chatgpt-user.json.
  • Perplexity: perplexity.com/perplexitybot.json and perplexity.com/perplexity-user.json.
  • Anthropic: the IP address list linked from its crawler help page.

What about agents that ignore robots.txt?

Some agents fetch a page because a person asked a question, and operators treat robots.txt differently for them. OpenAI says robots.txt rules may not apply to ChatGPT-User, and Perplexity says Perplexity-User generally ignores robots.txt. Anthropic says its bots respect robots.txt directives, and Claude-User can be controlled there. Stopping a fetcher that ignores robots.txt has to be done at the firewall with the published IP lists. Anthropic warns that blocking its IP addresses may not work as a lasting opt-out because it stops the crawler reading your robots.txt. For a business that wants to be recommended, allowing these fetchers is the simpler choice.

Where each check catches a block

CheckWhat it findsToolTypical fix
robots.txt groupsA Disallow rule that applies to a crawler's token or falls through to *Browser and the RFC 9309 matching rulesAdd or correct the crawler's own group
robots.txt status codeA 5xx error that tells crawlers to stay outcurl -I or a header checkerFix the server or CDN rule returning the error
CDN AI bot policySearch, Agent or Training traffic blockedCloudflare Security Settings or your CDN's bot settingsSet Search to Allow if you want AI search visibility
Firewall and geo rulesCountry, data centre or rate limit rules catching crawler IPsFirewall or hosting control panelExempt verified crawler IP ranges
User-agent request testA different status or page for a crawler user agentcurl with -ATrace the rule matching that agent
Server logsWhat the real crawlers receivedHosting or CDN logsConfirm the fix against verified IP addresses

Practical checklist

  • The robots.txt group applying to OAI-SearchBot, Claude-SearchBot, PerplexityBot and Googlebot allows the pages you want found.
  • robots.txt returns HTTP 200 on every hostname you use, including www and non-www.
  • The CDN's Search setting, or its equivalent, is set to Allow.
  • GPTBot and ClaudeBot settings match a written decision about training.
  • A user-agent request returns the same status as a browser for three key pages.
  • Logs show successful requests from published crawler IP ranges after the change.
  • A re-check is booked after any hosting, CDN, theme or security plugin change.

Common questions

Does blocking GPTBot remove us from ChatGPT search?

No. OpenAI uses OAI-SearchBot for ChatGPT search and GPTBot for content that may be used in model training, and it says each robots.txt setting is independent. A site can allow OAI-SearchBot and disallow GPTBot. Check that the GPTBot rule sits in a group of its own and has not been added to the * group by mistake.

Can we allow AI search and refuse AI training?

For the operators covered here, yes. OpenAI separates OAI-SearchBot from GPTBot, Anthropic separates Claude-SearchBot from ClaudeBot, and Perplexity says PerplexityBot is not used to crawl content for AI foundation models. Cloudflare's AI bot policies also separate Search from Training, though Cloudflare notes that crawlers used for both purposes are caught by training blocks.

Should we block AI crawlers by IP address instead of robots.txt?

Anthropic advises against relying on it. Its documentation says blocking its IP addresses may not work correctly or persistently as an opt-out, because it stops the crawler reading your robots.txt. For crawlers that follow robots.txt, the file is the documented control. IP blocks are mainly useful for fetchers that do not follow robots.txt, and they need maintaining as the published ranges change.

How soon will a fix be noticed?

OpenAI says robots.txt changes can take about 24 hours to reach its search systems, and Perplexity says up to 24 hours. RFC 9309 says crawlers should not use a cached robots.txt for more than 24 hours unless the file is unreachable. These figures cover the crawler permission only. Being cited depends on later crawls and on the questions people ask.

Do we need to check this more than once?

Yes, after any change that touches hosting. A new CDN, a security plugin, a migration or a staging copy pushed to production can each reintroduce a block. Cloudflare changed its defaults for new domains on 15 September 2026, so a domain added after that date may behave differently from older ones in the same account.

Sources and further reading

Continue planning

Plan an evidence-led AI visibility review

Describe your business category, service area and the questions buyers ask. We can discuss a repeatable visibility baseline and which public content needs review. Keep customer records and confidential information out of this enquiry.