AI robots.txt generator
“Block AI” is not one decision. Training, search, and user-triggered crawlers are different bots — opt out of model training without disappearing from AI answers.
- Blocking 10 training-only crawlers costs you no visibility — they build offline training corpora and never cite you.
Google-ExtendedYour content is not used to train or ground Gemini. It has no effect on Google Search ranking — and none on AI Overviews either.Applebot-ExtendedApple won't use content it already crawled to train its foundation models. You stay in Siri and Spotlight search.
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
# AI crawler policy — generated by https://agent-ready.dev/ai-robots-txt-generator
User-agent: GPTBot
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: ClaudeBot
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: CCBot
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: meta-externalagent
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: Amazonbot
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: AI2Bot
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: Diffbot
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: Bytespider
Content-Signal: search=no, ai-input=no, ai-train=no
Disallow: /
User-agent: OAI-SearchBot
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: Claude-SearchBot
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: PerplexityBot
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: Meta-WebIndexer
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: Amzn-SearchBot
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: MistralAI-Index
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: DuckAssistBot
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: YouBot
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: ChatGPT-User
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: Claude-User
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: Perplexity-User
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: Meta-ExternalFetcher
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: MistralAI-User
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
User-agent: Amzn-User
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
Next steps
Save this as /robots.txt at your site root, then run an agent-readability scan to confirm the crawlers you allowed can actually read your content.
Last updated
Why blocking “AI bots” usually backfires
The most common AI robots.txt mistake is blocking the crawler that would have cited you while leaving the one that trainson you switched on. They are different user-agents with different jobs, and the names give you no hint which is which — OpenAI’s GPTBot is the training crawler, while OAI-SearchBot is the one that puts you in ChatGPT’s cited answers. Block the wrong one and you get the worst of both: no traffic, and your content still in the corpus via someone else’s copy.
What each AI crawler actually does
Every token below is a real robots.txt user-agent, grouped by what blocking it costs you, and linked to the operator’s own documentation. A control tokenis not a crawler at all — it is a name that only exists in robots.txt to govern how content the operator already fetched may be used. Tokens with no primary source (and dead strings like anthropic-ai, which Anthropic no longer documents) are deliberately left out — a token we can’t verify would tell you you’re protected when you may not be.
| User-agent | Operator | If you block it |
|---|---|---|
| GPTBot | OpenAI | Your content is no longer used to train OpenAI's models. This does not affect ChatGPT citations — that's OAI-SearchBot. |
| ClaudeBot | Anthropic | Your content is no longer collected to train Claude. Claude can still cite you via Claude-SearchBot. |
| Google-Extendedcontrol token | Your content is not used to train or ground Gemini. It has no effect on Google Search ranking — and none on AI Overviews either.Not a crawler: Google fetches with Googlebot and reads this token only as a usage control. | |
| Applebot-Extendedcontrol token | Apple | Apple won't use content it already crawled to train its foundation models. You stay in Siri and Spotlight search.Not a crawler: Apple fetches with Applebot and reads this token only as a usage control. |
| CCBot | Common Crawl | You're excluded from the Common Crawl corpus — an upstream training source for many labs, so this one block propagates widely. |
| meta-externalagent | Meta | Your content is not used to train Meta's AI models. |
| Amazonbot | Amazon | Amazon says content it crawls may be used to train its AI models; blocking opts you out of that. |
| AI2Bot | Allen Institute for AI | You're excluded from Ai2's open datasets (Dolma), which train open-source models. |
| Diffbot | Diffbot | You're excluded from Diffbot's Knowledge Graph, which is resold into training pipelines. No citation cost — it isn't an assistant. |
| Bytespider | ByteDance | Intended to exclude you from ByteDance/Doubao training data.ByteDance publishes no crawler docs and Bytespider is widely reported to crawl Disallow-ed URLs anyway. Treat this as best-effort and enforce at your WAF if it matters. |
| OAI-SearchBot | OpenAI | You will not appear in ChatGPT search answers. OpenAI is explicit about this — it's the single most costly block on this page. |
| Claude-SearchBot | Anthropic | You lose citations in Claude's web-search results. |
| PerplexityBot | Perplexity | Your site won't appear in Perplexity's search results.Cloudflare reported in August 2025 that Perplexity used undeclared stealth crawlers to reach content that had blocked its declared bots, and de-listed it as a verified bot. robots.txt is not a reliable control here. |
| Meta-WebIndexer | Meta | You lose visibility in Meta AI's search results. |
| Amzn-SearchBot | Amazon | You lose eligibility in Alexa and Amazon's search surfaces. Amazon states it is not used for generative-AI training. |
| MistralAI-Index | Mistral | You lose citations in Mistral's assistant. Mistral states this index is not used for training. |
| DuckAssistBot | DuckDuckGo | You're excluded as a source for DuckAssist AI answers. DuckDuckGo confirms this does not affect organic search rankings. |
| YouBot | You.com | You lose visibility in You.com's search and assistant. |
| ChatGPT-User | OpenAI | ChatGPT can't open a link one of your readers pasted or clicked.OpenAI notes that because these fetches are user-initiated, robots.txt rules may not apply to them. |
| Claude-User | Anthropic | Claude can't read a link one of your readers pasted.Unlike OpenAI's and Perplexity's user fetchers, Anthropic states this one does honour robots.txt. |
| Perplexity-User | Perplexity | Perplexity can't fetch a page a user asked it about.Perplexity's own docs say this fetcher generally ignores robots.txt because a user requested it. |
| Meta-ExternalFetcher | Meta | Meta AI can't fetch a link a user asked it about.Meta's docs note this fetcher may bypass robots.txt. |
| MistralAI-User | Mistral | Mistral's assistant can't fetch a page a user asked about. |
| Amzn-User | Amazon | Alexa can't fetch live information for a user's question. |
Is robots.txt enough to stop AI training?
No — it is a stated preference, not a lock. The major operators honour it, but robots.txt cannot stop your content reaching a model through a scraper, a third-party mirror, or a public dataset someone else compiled. Treat it as the polite front door: it handles the well-behaved majority and puts your policy on the record. If you need enforcement, that belongs at your CDN or WAF.
What about Content-Signal?
Per-crawler rules go stale the moment a new bot ships. Content Signals — the convention feeding the IETF aipref working group — instead declares how your content may be used (search, ai-input, ai-train), so it applies to crawlers that don’t exist yet. It’s young and not universally honoured, so the generator emits it alongside per-crawler rules rather than instead of them.
After you publish it
A permissive robots.txt only gets an agent to your door — it still has to be able to read what’s inside. Once the file is live, run a full agent-readability scan to confirm the crawlers you allowed can actually parse your content, and generate an llms.txt to give the agents you welcomed a curated map of your site.
Frequently asked questions
- Does blocking GPTBot remove my site from ChatGPT?
- Not from ChatGPT's answers — only from OpenAI's training data. GPTBot collects text to train models. A different crawler, OAI-SearchBot, builds the index ChatGPT search cites at answer time, and a third, ChatGPT-User, fetches a page live when someone asks ChatGPT about that specific URL. They are separate tokens in robots.txt. If you block all three you vanish from ChatGPT entirely; if you block only GPTBot you opt out of training while staying citable.
- Does Google-Extended opt me out of AI Overviews?
- No — and this is the most misunderstood token in robots.txt. Google-Extended controls whether your content trains and grounds Gemini. AI Overviews and AI Mode are built from the ordinary Googlebot search index, so Google-Extended has no effect on them. Historically the only robots.txt lever was blocking Googlebot, which also removes you from Google Search entirely. In June 2026 Google added a Search generative AI control in Search Console that opts a site out of AI Overviews and AI Mode without affecting ranking (UK-first, still a limited rollout). That is a Search Console setting, not a robots.txt directive, so no generator — including this one — can emit it for you.
- What's the difference between a training crawler and a search crawler?
- A training crawler collects text to build an offline corpus that a model is trained on; your page contributes to the model's weights but is never linked back to. A search crawler builds a retrieval index the assistant queries at answer time and cites with a link. Blocking a training crawler costs you nothing in visibility. Blocking a search crawler removes you from AI answers — it is the same decision as removing yourself from a search engine.
- Does robots.txt actually stop AI crawlers?
- It is a request, not an enforcement mechanism. Crawlers from OpenAI, Anthropic, Google, and Apple honour it. Some do not: Perplexity's and OpenAI's user-triggered fetchers state in their own docs that robots.txt may not apply to them because a human asked for the page, Bytespider is widely reported to crawl Disallow-ed URLs, and Cloudflare reported in August 2025 that Perplexity used undeclared stealth crawlers to reach content that had blocked its declared bots. robots.txt also cannot stop your content reaching a model through a scraper, a mirror, or a public dataset someone else compiled. If you need enforcement rather than a stated preference, block at your CDN or WAF — robots.txt is the polite front door, not a lock.
- Why isn't Googlebot in the list?
- Because it is not an AI crawler, and putting a one-click block next to it would be dangerous. Googlebot powers Google Search; blocking it removes you from Google altogether (and, as a side-effect, from AI Overviews, which are built on that same index). The same is true of Bingbot and Applebot. This generator covers AI-specific crawlers and the AI-specific control tokens — Google-Extended and Applebot-Extended — which are the knobs that actually let you opt out of AI training without touching your search visibility.
- What is the Content-Signal directive?
- Content-Signal is a robots.txt extension (from contentsignals.org, feeding the IETF aipref work) that states how your content may be used — search=yes|no, ai-input=yes|no, ai-train=yes|no — rather than just which bot may fetch it. It expresses intent independently of crawler names, so it keeps working as new bots appear. It is a young convention and not yet universally honoured, so it complements per-crawler rules rather than replacing them.
- Where do I put the generated file?
- Save it as robots.txt at the root of your domain, so it is served at https://yourdomain.com/robots.txt as plain text. It must be at the root — a robots.txt in a subdirectory is ignored. If you already have one, use the merge option on this page so your existing rules, comments, and Sitemap lines are preserved and only the AI-crawler groups are replaced.