The most common robots.txt mistake I see in 2026 is treating "AI bots" as a single group and blocking all of them with one rule. That decision quietly costs you discoverability in AI answer engines while doing nothing to stop the scrapers you actually care about.
AI crawler robots.txt optimization requires selective crawler permissions that protect proprietary content while keeping revenue-critical pages accessible to search engines and AI answer systems. Before you touch a single directive, separate AI training crawlers, AI answer/search crawlers, user-triggered fetchers, traditional search crawlers, commercial SEO crawlers, and unknown scrapers. They serve different purposes, and blocking the wrong one is where the damage happens.
robots.txt is a crawl-permission file, not a security tool
/robots.txt is a public crawler-permissions file that tells compliant crawlers which URL paths they may request. It does not secure private content, remove indexed pages, or force non-compliant scrapers to obey anything.
The file lives at the root of the host. For https://www.example.com/, that's https://www.example.com/robots.txt. Rules apply per host and protocol, so subdomains, ccTLDs, and staging hosts each need their own validation. The formal spec is RFC 9309.
The four core directives:
| Directive | Function | Practical rule |
|---|---|---|
User-agent |
Identifies the crawler group | Use official user-agent tokens only |
Disallow |
Blocks crawling for matching paths | Low-value, duplicate, private-looking, or training-restricted areas |
Allow |
Permits crawling for matching paths | Exceptions inside broader blocked folders |
Sitemap |
Points to XML sitemaps | Product, blog, language, and image sitemap discovery |
One distinction that trips people up constantly: crawling control is not indexing control. A blocked URL can still appear in search results if other pages link to it. If you want to prevent indexing, you need noindex in a meta robots tag or HTTP header — and the crawler has to be allowed to fetch the page to see it. Block the URL in robots.txt and the noindex never gets read.
And for anything genuinely sensitive — login areas, staging, pricing files, partner docs — robots.txt is the wrong layer entirely. It's public. Listing /private-pricing/ just tells people where to look. Use auth, IP restrictions, signed URLs, or WAF rules. MDN is blunt about this: robots.txt is not security.
Classify the crawler before you write the rule
A single vendor often runs separate agents for training, search retrieval, user-triggered access, and infrastructure. Blocking the wrong one reduces discoverability without solving content reuse.
| Category | Purpose | robots.txt implication | Warning |
|---|---|---|---|
| Search indexing | Traditional search discovery | Usually allow for public pages | Blocking Googlebot/Bingbot damages SEO |
| AI training | Model training | Allow or block by content policy | Blocking doesn't undo prior collection |
| AI answer/search | Retrieval, citation, answer discovery | Often allow for public pages | Blocking cuts AI-era discoverability |
| User-triggered fetchers | Fetch a URL a user requested | Treat separately | May not apply robots.txt the same way |
| Commercial SEO | Audits, link analysis | Allow/block/rate-limit as needed | Affects third-party diagnostics |
| Unknown scrapers | Unverified bots | Don't rely on robots.txt | Use CDN/WAF, rate limits, logs |
Here's the current user-agent landscape — but verify these against official docs before deploying, because tokens and roles change:
| Org | Token | Category | Policy note |
|---|---|---|---|
| OpenAI | GPTBot |
AI training | Block if training reuse isn't acceptable |
| OpenAI | OAI-SearchBot |
AI answer/search | Allow if ChatGPT search visibility matters |
| OpenAI | ChatGPT-User |
User-triggered | Don't treat like GPTBot without checking |
Googlebot |
Search indexing | Keep unblocked unless there's a precise reason | |
Google-Extended |
Generative AI token | Google says it does not affect Search ranking | |
| Bing | bingbot |
Search indexing | Keep unblocked if Bing matters |
| Perplexity | PerplexityBot |
AI answer/search | Perplexity recommends allowing it |
| Perplexity | Perplexity-User |
User-triggered | User-requested, not governed like normal crawling |
| Apple | Applebot |
Search/assistant | Apple ecosystem discovery |
| Apple | Applebot-Extended |
AI training control | Search access without foundation-model training |
| Meta | Meta-ExternalAgent |
AI/product | Verify casing and purpose |
| Common Crawl | CCBot |
Public web corpus | Blocking reduces dataset inclusion |
A quick note on Anthropic: crawler names like
ClaudeBot,Claude-User, andClaude-SearchBotshow up in reporting and transparency materials, but verify the current docs directly before shipping production rules. Don't paste unverified user-agent snippets from old blog posts — that's how stale rules propagate.
Google-Extended deserves special care: it's a robots.txt product token, not an HTTP request user-agent. Do not block Googlebot when you only meant to restrict Google's generative-AI product use.
Allow, block, and partial access
Selective access is the sane default for public commercial sites: keep search + answer/search crawlers on public pages, block specific training crawlers only when you have a real licensing, legal, or content-reuse reason.
Maximum discovery (public brand site):
User-agent: *
Allow: /
Sitemap: https://www.example.com/sitemap.xml
Block training crawlers, allow everything else:
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: *
Allow: /
Allow AI answer access but not broad training access:
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: GPTBot
Disallow: /
Ecommerce parameter/crawl-waste control:
Disallow: /cart/
Disallow: /checkout/
Disallow: /*?sort=
Disallow: /*?filter=
Multilingual site — keep language folders and sitemaps open:
Allow: /en/
Allow: /de/
Allow: /fr/
Allow: /zh/
Allow: /ar/
Sitemap: https://www.example.com/sitemap-index.xml
One warning on the ecommerce pattern: blocking every query string can nuke filtered landing pages that match real search demand and convert. Check search data before blanket-blocking parameters.
And never use a production robots.txt as a staging control. A public staging URL returning 200 leaks through links, screenshots, and cached assets no matter what Disallow: / says. Password-protect it.
The eight mistakes that actually cause damage
-
Disallow: /in the wrong user-agent group — the catastrophic one. Blocks Googlebot/Bingbot/Applebot from the whole site. Keep groups clean, avoid duplicateUser-agent: *blocks. -
Treating all AI crawlers as one — blocking
GPTBot≠ blockingOAI-SearchBot; blockingGoogle-Extended≠ blockingGooglebot. -
Blocking language folders — kills international discoverability on
/de/,/zh/,/ar/, etc. - Blocking CSS/JS needed for rendering — blocked resources create incomplete page understanding; answer/search crawlers may render differently than Googlebot.
- Using robots.txt to hide sensitive content — it's public; you're advertising the folder.
- Letting the CDN override the origin file — Cloudflare's managed robots.txt can change what's served. Always fetch the live file from the public domain.
-
Relying on
Crawl-delay— Google's Googlebot ignores it. Use server-side rate limiting or CDN controls for load. - Blocking PDFs without checking value — datasheets, certifications, and compliance docs often drive qualified B2B inquiries.
Audit it log-first
Don't copy a blocklist before you know which crawlers actually hit your site. The workflow:
- Export raw server logs — user-agent, IP, timestamp, URL, status code, bytes, response time, host/protocol.
- Group known crawlers by the categories above.
- Verify IPs where official methods exist — user-agent strings are trivially spoofed. Perplexity and OpenAI publish verification info; Perplexity offers JSON IP endpoints.
- Map crawled URLs to business value — which pages actually matter vs. filters/carts/staging.
-
Check status codes — fix
5xxfor important crawlers, investigate accidental403s to search/answer bots, clean404s, reduce redirect chains. -
Reconcile robots.txt with sitemaps — sitemaps should list canonical, indexable,
200URLs; never list blocked URLs. - Validate internal linking — key pages shouldn't depend on JS click events or orphaned sitemap inclusion.
- Review multilingual coverage — confirm hreflang targets are crawlable and canonicals don't collapse every language back to English.
- Check CDN/WAF rules — confirm the CDN serves the intended file and isn't blocking good crawlers via data-center IP rules.
- Keep a rollback file — save the previous version, test on staging, deploy in a low-risk window, monitor 48 hours.
Run this monthly or after any major site change, and recheck tokens after provider updates. A file that was correct last quarter drifts out of date fast.
FAQ
Should I block AI crawlers in robots.txt?
For most public commercial sites, no. Allow search indexing and answer/search crawlers on public pages, restrict low-value paths, and block specific training crawlers only when you have a clear content-control, licensing, or legal reason.
Does robots.txt stop AI from using my content?
Only partially. Disallow asks compliant crawlers not to fetch a path. It doesn't undo already-collected data, bind non-compliant scrapers, or remove content learned from other sources.
What's the difference between GPTBot and OAI-SearchBot?
GPTBot is OpenAI's training crawler; OAI-SearchBot supports ChatGPT search discovery. Many sites block the former for training reuse while allowing the latter for visibility. Verify current behavior in OpenAI's docs.
Does blocking Google-Extended hurt Google rankings?
Google says Google-Extended controls generative-AI product use and does not affect Search inclusion or ranking. The real risk is confusing it with Googlebot.
Is robots.txt enough to protect private content?
No. It's public. Sensitive paths need authentication, IP restrictions, signed URLs, or WAF/CDN controls.
*Originally published on SeekLab.io. If you want a practical review of your own robots.txt, crawler access, JS rendering, and sitemap/internal-link setup, SeekLab has a free audit.
Top comments (0)