Audit my site
AI searchIntermediateChecked against official sources · Oct 2026

AI crawlers and llms.txt: which bots to allow, block and verify

AI providers run separate bots for training, for search and for fetches users ask for. Choose per job, verify the bots that claim to be them, make sure your firewall agrees, and treat llms.txt as an optional extra, not a control.

Author: Eugene Serbin, Head of SEO at Semalt Updated: 30 October 2026 Reading time: 20 min Visuals: 4

In short

Every major AI provider now runs separate bots for training, for search and for fetches a user asks for, and each one is controlled by its own robots.txt token. That lets you block the use of your content for model training while staying visible in ChatGPT, Claude, Perplexity and Google's AI features, but only if your CDN or firewall lets the verified search bots through. llms.txt is an optional proposal for helping agents read your site; it does not block, allow or rank anything, and none of the four providers' crawler documentation says they use it.

Three jobs AI bots do

"AI crawler" is not one thing. When you look at the official documentation of Google, OpenAI, Anthropic and Perplexity, their bots fall into three groups, and the right decision is different for each group.

The split matters because the two goals site owners usually have pull in different directions: you may want to be cited in AI answers but not want your content used for training. With separate tokens you can choose per job. How to write the rules themselves (groups, Disallow, matching) is covered in the lesson "robots.txt and AI crawlers"; this lesson is about strategy, verification and the infrastructure around the file.

Table · AI bots by provider and what each one does
ProviderTokenJobrobots.txtIf you block itPublished IPs
GoogleGooglebotSearch, including AI Overviews and AI ModeRespectedYou leave Google Search entirelyJSON lists + reverse DNS
Google-ExtendedTraining and grounding for Gemini (a control token, no own user agent)RespectedContent not used for Gemini training or grounding; Search unaffectedSame as Google crawlers
Google-AgentUser-triggered agentGenerally ignoredUse server-side controls insteaduser-triggered-agents.json
OpenAIGPTBotTrainingRespectedContent should not be used for traininggptbot.json
OAI-SearchBotChatGPT searchRespectedNot shown in ChatGPT search answerssearchbot.json
ChatGPT-UserUser-triggeredMay not applyNot a search opt-outchatgpt-user.json
OAI-AdsBotChecks pages submitted as adsn/aOnly relevant if you advertise in ChatGPTadsbot.json
AnthropicClaudeBotTrainingRespectedFuture content excluded from trainingclaude.com/crawling/bots.json
Claude-SearchBotSearchRespectedMay reduce visibility in Claude search results
Claude-UserUser-triggeredRespectedClaude cannot fetch your page for users
PerplexityPerplexityBotSearch (not training)RespectedNot surfaced in Perplexity search resultsperplexitybot.json
Perplexity-UserUser-triggeredGenerally ignoredUse server-side controls insteadperplexity-user.json
Status as documented by each provider in October 2026; tokens and lists change, so re-check the official pages before you edit your rules.

What the providers officially say

These are direct quotes from each provider's own documentation.

“Google-Extended does not impact a site's inclusion in Google Search nor is it used as a ranking signal in Google Search.”

Google — Common crawlers. Google also notes: “Google-Extended doesn't have a separate HTTP request user agent string.”

“AI is built into Search and integral to how Search functions, which is why robots.txt directives for Googlebot is the control for site owners to manage access to how their sites are crawled for Search.”

Google Search Central — AI features and your website

“Each setting is independent of the others”

OpenAI — Overview of OpenAI crawlers. OpenAI adds: “Sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers, though can still appear as navigational links.”

“Disallowing GPTBot indicates a site's content should not be used in training generative AI foundation models.”

OpenAI — Overview of OpenAI crawlers

“When a site restricts ClaudeBot access, it signals that the site's future materials should be excluded from our AI model training datasets.”

Anthropic — Claude Help Center article on Anthropic's crawlers

“PerplexityBot is designed to surface and link websites in search results on Perplexity. It is not used to crawl content for AI foundation models.”

Perplexity — Perplexity crawlers

Bot by bot: Google, OpenAI, Anthropic, Perplexity

Google: Googlebot, Google-Extended, Google-Agent

Google is the odd one out, because its AI features are part of Search. AI Overviews and AI Mode are fed by the normal Search index, which Googlebot builds. There is no separate "AI search" token for Google, and blocking Googlebot to keep content out of AI Overviews would take you out of Google Search altogether.

Google-Extended is different: it is not a crawler but a switch. In Google's words: “Crawling is done with existing Google user agent strings; the robots.txt user-agent token is used in a control capacity.” Google describes it as “a standalone product token that web publishers can use to manage whether content Google crawls from their sites may be used for training future generations of Gemini models”, and the same page says it also covers grounding in Gemini Apps and Grounding with Google Search on Vertex AI. You will never see Google-Extended in your logs, because no request carries that name.

If you want to limit what Google shows from your pages in AI features, the tools are the snippet controls, not a crawler block: “To limit the information shown from your pages in Search, use nosnippet, data-nosnippet, max-snippet, or noindex controls.” They apply to the normal results too, which is covered in the lesson on robots meta tags.

Google-Agent is listed among Google's user-triggered fetchers: “Google-Agent is used by agents hosted on Google infrastructure to navigate the web and perform actions upon user request.” For this whole group Google says: “Because the fetch was requested by a user, these fetchers generally ignore robots.txt rules.”

OpenAI: GPTBot, OAI-SearchBot, ChatGPT-User, OAI-AdsBot

GPTBot is the training crawler. OAI-SearchBot is the search crawler: “OAI-SearchBot is used to surface websites in search results in ChatGPT's search features.” OpenAI recommends allowing it in robots.txt and allowing requests from its published IP ranges if you want to appear. When both are allowed, OpenAI notes: “If your site has allowed both bots, we may use the results from just one crawl for both use cases to avoid duplicative crawling.” So seeing only one of them in your logs is not necessarily a sign of a problem.

ChatGPT-User visits a page when a ChatGPT user's request needs it. OpenAI says: “Because these actions are initiated by a user, robots.txt rules may not apply.” and “ChatGPT-User is not used to determine whether content may appear in Search.” Blocking it is therefore not a way to leave ChatGPT search; that is what the OAI-SearchBot rule is for. OAI-AdsBot “only visits pages submitted as ads”, so it matters only if you advertise in ChatGPT.

Timing: “For search results, please note it can take ~24 hours from a site's robots.txt update for our systems to adjust.”

Anthropic: ClaudeBot, Claude-SearchBot, Claude-User

Anthropic documents three bots and says its bots honour robots.txt directives. ClaudeBot collects content that could be used for training. For the other two, Anthropic spells out the cost of blocking:

Two practical details from the same page. Rules are per host: “Please do this for every subdomain that you wish to opt out from.” And Anthropic supports “the non-standard Crawl-delay extension to robots.txt” if you only want to slow its crawling down rather than stop it. Google ignores Crawl-delay, so this works only for bots that support it.

Perplexity: PerplexityBot, Perplexity-User

Perplexity documents no training crawler. PerplexityBot is for search, and Perplexity recommends allowing it and its published IP ranges if you want to appear in results. Perplexity-User fetches pages while answering a user's question; for it, “Since a user requested the fetch, this fetcher generally ignores robots.txt rules.” Perplexity says changes may take up to 24 hours to be reflected.

The strategic choice: AI answers vs training

Behind every rule there are two separate questions:

  1. Do you want to be found and cited in AI answers? Then the search crawlers and, usually, the user-triggered fetchers must be able to load your pages.
  2. Do you accept that your content may be used to train models? That is controlled only by the training tokens.

Because the tokens are independent, the answers can be combined freely. Blocking training does not remove you from ChatGPT search, Claude, Perplexity or Google's AI features, as long as the search bots stay allowed. Blocking a search bot, on the other hand, has a direct cost in visibility in that product, and there is no ranking or citation benefit from blocking anything.

In practice the choice follows the business model:

Decision matrix · Goal → allow or block for each bot
GoalGooglebotGoogle-ExtendedGPTBotOAI-SearchBotChatGPT-UserClaudeBotClaude-SearchBotClaude-UserPerplexityBotPerplexity-User
Maximum AI visibilityAllowAllowAllowAllowAllowAllowAllowAllowAllowAllow
Cited in AI answers, no trainingAllowBlockBlockAllowAllowBlockAllowAllowAllowAllow
Google Search only, no other AIAllowBlockBlockBlockBlockBlockBlockBlockBlockWAF
Keep a premium section out of AIAuthBlock pathBlock pathBlock pathAuthBlock pathBlock pathBlock pathBlock pathAuth
Less text from you in Google AI featuresAllow + snippet controlsYour choiceNot affected by Google's snippet controls; decide separately
"WAF" means robots.txt may not be honoured by that fetcher, so a block needs a firewall rule; "Auth" means the content must sit behind real authentication or a paywall check.

Example policies for common goals

Four ready-made policies for example.com. One rule from the robots.txt lesson matters a lot here: a crawler obeys only the most specific group that names it. If you give GPTBot its own group, it ignores your User-agent: * group, so repeat any shared rules (such as /admin/) inside it. Anything you do not disallow is allowed by default, so "allow" groups are not needed.

1. Allow everything

# No AI-specific groups: every bot follows the * group
User-agent: *
Disallow: /admin/

Sitemap: https://example.com/sitemap.xml

2. Cited in AI answers, not used for training

# Training tokens: opt out of the whole site
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
Disallow: /

# Search bots and user fetchers fall through to here
User-agent: *
Disallow: /admin/

Sitemap: https://example.com/sitemap.xml

Other training-only tokens, such as Common Crawl's CCBot, can be added to the first group. Check each provider's page first: a token you assume is "training only" may also feed a search product.

3. Google Search only, no other AI

# Every documented AI token except Googlebot
User-agent: Google-Extended
User-agent: GPTBot
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
Disallow: /

# Googlebot, Bingbot and the rest
User-agent: *
Disallow: /admin/

This keeps you in Google Search, including AI Overviews and AI Mode, because those use Googlebot. Perplexity-User and other fetchers that generally ignore robots.txt are not covered by this file; if you really need them out, it takes a firewall rule. Think twice before choosing this policy: you give up citations and referral visits from ChatGPT, Claude and Perplexity.

4. A premium section kept away from AI bots

User-agent: Google-Extended
User-agent: GPTBot
User-agent: OAI-SearchBot
User-agent: ClaudeBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
Disallow: /reports/
Disallow: /admin/

User-agent: *
Disallow: /admin/

robots.txt here is only the polite layer. The real protection for /reports/ is the server: content that must not leak should only be sent after a login or a paywall check, because user-triggered fetchers and badly behaved scrapers do not ask robots.txt first.

Verifying that a bot is real

Anyone can send a request with GPTBot or ClaudeBot in the user agent. In practice, some requests with AI bot names come from scrapers borrowing a respectable name. Before you allow, block or report anything, check that the request comes from the provider's network.

Google describes three identity signals: “Google's crawlers identify themselves in three ways:” the user-agent header, the source IP address and the reverse DNS hostname of that IP. For a manual check, look up the hostname of the IP, then look up the IP of that hostname. Google's rule for the first step: “Verify that the domain name is either googlebot.com, google.com, or googleusercontent.com.” The second lookup must return the original IP. For large volumes, match IPs against Google's published JSON range lists instead.

OpenAI, Anthropic and Perplexity publish JSON files of IP ranges in CIDR format: openai.com/gptbot.json, openai.com/searchbot.json, openai.com/chatgpt-user.json, claude.com/crawling/bots.json, perplexity.ai/perplexitybot.json and perplexity.ai/perplexity-user.json. Perplexity's advice applies to all of them: “combine both User-Agent string matching and IP address verification”. Fetch the lists automatically (for example once a day), because ranges change.

Flow · Is this request really from an AI provider's bot?
Verification flow for AI bot requests A request with an AI bot user agent is checked against the provider's published IP list. If the IP is in the list, the bot is verified. If not, for Google a reverse and forward DNS check is done. If that also fails, the request is fake and is blocked at the firewall. In listNot in listMatchNo match Request with an AI bot user agent Source IP in the provider's published JSON list? Google only: reverse DNS, then forward DNS = same IP? Verified bot apply your policy, let it pass Verified Google crawler googlebot.com / google.com host Fake: block at the WAF
The user agent tells you who a request claims to be; only the IP list or a DNS round trip tells you who it is.

Block fake bots at the firewall or server, not in robots.txt: a scraper that pretends to be GPTBot ignores robots.txt anyway. And do not try to opt out of a real provider by blocking its IPs. Anthropic warns that “Alternate methods like blocking IP address(es) from which Anthropic Bots operates may not work correctly or persistently guarantee an opt-out, as doing so impedes our ability to read your robots.txt file.”

CDN and WAF settings that silently block AI search bots

The most common reason a site with a perfectly open robots.txt never shows up in AI answers is not robots.txt at all. It is the CDN or web application firewall in front of the site. The bot reads robots.txt (often cached and served fine), then gets a 403, a challenge page or a 429 for every real page. Nobody notices, because humans in browsers pass the same checks.

Settings to check, in practice:

The fix is an explicit allow rule for verified bots, matching both the user agent and the published IP ranges, placed before any block or challenge rule. Order matters: as Perplexity puts it for Cloudflare, “A Skip rule only bypasses rules that run after it.” Then confirm in your logs that verified AI bots receive 200 responses, not 403, 429 or 503. Decide your policy in robots.txt first, then make the firewall agree with it, not the other way round.

Check Googlebot too. A firewall rule written against "AI bots" that also challenges Googlebot hurts both Google Search and Google's AI features, which run on the same crawl.

What llms.txt is

llms.txt is “A proposal to standardise on using an /llms.txt file to provide information to help agents use a website.” It was written by Jeremy Howard, first published on 3 September 2024, and the current text is version 2, last modified on 10 August 2026. The idea is a short Markdown file that gives an AI agent a curated map of your most useful content, so it does not have to dig through navigation, scripts and ads.

Location: “The file can be placed at the site root, or at any path within it, covering the pages under that path.” So https://example.com/llms.txt covers the whole site and https://example.com/docs/llms.txt covers only the docs. The structure, in this order:

  1. An optional byte-order mark.
  2. “An H1 with the name of the project or site. This is the only required section”.
  3. A blockquote with a short summary.
  4. Optional paragraphs or lists with more detail (no headings).
  5. Optional H2 sections, each a list of links in the form [name](url), optionally followed by a colon and a note.
  6. By convention, a section called Optional for secondary links an agent can skip when it is short on context.

The proposal also suggests offering clean Markdown versions of important pages at the same URL with .md added, such as /docs/setup.html.md, and linking to them from llms.txt.

Annotated example · llms.txt for example.com
# Example Garden Tools

> Online shop for hand tools and garden equipment, shipping in the EU.
> Prices include VAT. Support answers within one business day.

Orders can be returned within 30 days. Product pages list stock per warehouse.

## Help
- [Shipping and delivery](https://example.com/help/shipping.md): costs, carriers, countries
- [Returns](https://example.com/help/returns.md): how to start a return, refund timing
- [Warranty](https://example.com/help/warranty.md)

## Product guides
- [Choosing a pruning saw](https://example.com/guides/pruning-saws.md): sizes and blade types

## Optional
- [Company history](https://example.com/about.md)
# H1

The site or project name. The only required part.

> summary

One or two lines an agent needs before anything else.

Free text

Key facts and how to read the file. No headings here.

## Section

A list of links with short notes, pointing to clean Markdown pages.

## Optional

Links an agent may skip when context is short.

An illustrative file: a few dozen lines that point an agent to the pages that answer real questions, not a copy of the sitemap.

Keep it small and curated. A sitemap lists every page for search engines; llms.txt is a short, hand-picked reading list. The proposal's own test is a good one: give an agent only your llms.txt and ask it questions about your business.

What llms.txt is not: its real status

llms.txt gets a lot of attention, so it helps to be exact about what it is.

Where it does help is on demand: “llms.txt information is instead used on demand, when an agent needs information about a topic while assisting a user.” Coding agents and tools that a user points at a site can follow it. So it is a cheap, low-risk addition for documentation, SaaS and developer sites, and an optional extra for others. If you add one, many CMS and docs platforms can generate it; review the output so it lists only canonical, indexable pages.

Monitoring AI bots in your logs

Your server or CDN logs are the only place where you see what AI bots actually do on your site. Analytics tools do not record bots. A simple routine:

  1. Segment by token. Filter requests by GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Agent and Googlebot. Remember that Google-Extended never appears.
  2. Verify the IPs against the published lists, and report fake traffic separately.
  3. Check status codes per bot. A verified search bot getting 403 or 429 is a firewall problem; many 404s point to stale links in the provider's index.
  4. See which URLs they fetch and how often. Search bots should reach the pages you want cited; if they spend their time on filters or parameters, fix that as you would for Googlebot.
  5. Watch for changes after a policy edit. Disallowed bots should stop fetching normal pages within a day or so; they will keep reading robots.txt.
  6. Connect it to referrals. Visits from chatgpt.com, perplexity.ai and claude.ai in your analytics show whether AI visibility turns into traffic.

How to get the logs, parse them and run these checks at scale is covered in the lesson "Server log analysis".

Check what crawlers actually get from your site

OurSEO Tools runs a 69-point checklist and a technical crawl of up to 1,000 pages, recording the status code, canonical, indexability and load time of every URL.

69-point checklistTechnical crawlContent analysis

Common mistakes

FAQ

Does blocking GPTBot remove my site from ChatGPT search?

No. GPTBot is the training crawler. ChatGPT search is controlled by OAI-SearchBot, and OpenAI says each setting is independent. Keep OAI-SearchBot allowed if you want to be shown there.

Does blocking Google-Extended remove me from AI Overviews?

No. Google-Extended covers Gemini training and grounding outside Search. AI Overviews and AI Mode are part of Search and use Googlebot. To limit what is shown, use snippet controls such as nosnippet or max-snippet.

Can I block ChatGPT-User or Perplexity-User?

You can add them to robots.txt, but the providers say robots.txt may not apply or is generally ignored for user-triggered fetches. If you must keep them out, use a verified firewall rule. Usually it is better to let them in: a user asked to read your page.

Do I need an llms.txt file?

Not for visibility in Google, and no provider documents using it for crawling or citations. It is worth adding on documentation and developer sites, where agents follow it. For other sites it is optional.

robots.txt allows the bot, so why does it get 403?

Almost always a CDN, WAF or security plugin: bot-fight mode, an AI-bot toggle, a challenge or a rate limit. Add an allow rule for verified IPs above the blocking rules and check the logs again.

How quickly do changes take effect?

OpenAI mentions about 24 hours for search results; Perplexity says changes may take up to 24 hours. Content already used for training is not removed by a later block; Anthropic, for example, describes the block as applying to future materials.

Sources

Quotes checked against the official pages on 30 October 2026.