AI crawlers, llms.txt, and deciding what to allow
Blocking AI crawlers and being cited by AI assistants are mutually exclusive, and the two decisions are usually made by different people who never discuss it. The first step is knowing which agent is which, because a single blanket rule gets one of the two outcomes wrong.
There is no single category of AI crawler. Agents fetching pages to build a training corpus, agents fetching to retrieve an answer for a user asking right now, and agents fetching on behalf of a person who pasted your URL are three different things with three different consequences — and most robots.txt files treat them identically.
Three purposes, three separate decisions
Complicating this, some providers use one agent for several purposes and others publish distinct agents per purpose, and the names change. Any list written down today will be partly wrong within a year, so the durable practice is to check your own server logs for what is actually fetching you and read each provider's current documentation before writing a rule.
robots.txt: what it does and what it cannot do
robots.txt is a request, honoured voluntarily. Major providers do honour it; anything determined to ignore it will. It is the right tool for stating a preference and the wrong tool for enforcing one.
That final note catches people every time. Blocking and de-indexing are opposite mechanisms: one prevents the fetch, the other requires it. Using the first to achieve the second produces a URL that stays listed and can no longer be described.
llms.txt: a convention, not a standard
An /llms.txt file is a proposed convention: a plain-language map of a site, in Markdown, aimed at making the important content easy for a language model to locate without parsing navigation and layout. It is worth being precise about its status, because it is widely oversold.
If the decision is to block, enforce it properly
A robots.txt directive stops well-behaved agents. Where content genuinely must not be fetched — licensed material, paywalled archives, anything with a contractual restriction — the control has to be a control.
- Authentication. Content behind a login is not available to a crawler, which is the only reliable boundary.
- Verified-agent allowlisting at the edge. Identify legitimate crawlers by reverse DNS or published address ranges rather than by the user-agent string, which anyone can set to anything.
- Rate limiting per agent. Prevents corpus-scale fetching without blocking the occasional retrieval.
- Log and review. You cannot make a decision about traffic you have never looked at, and the agent list changes constantly.
A defensible default
For most organisations whose published content is marketing, documentation and expertise, the sensible position is: allow retrieval, allow search, and decide about training deliberately.
- Allow live retrieval agents. Being the cited source is the entire point of publishing the content
- Allow user-initiated fetches. Refusing them means a prospective customer is told your site would not answer
- Decide on training per organisation. If your published content is how you demonstrate expertise, exclusion mainly removes you from the corpus your competitors are in. If it is licensed or proprietary, exclusion is obviously correct
- Keep private paths blocked regardless — internal search, parameterised URLs, anything generating infinite space
Whichever way it goes, write down the reasoning. This is the kind of decision that gets revisited in eighteen months by someone who wants to know whether it was deliberate, and a robots.txt with unexplained agent names is indistinguishable from an accident.
Questions
Should I block AI crawlers?
Not with one rule, because they serve different purposes. Blocking a training collector removes your content from a future corpus and has no effect on today's answers. Blocking a live retrieval agent removes you from cited answers entirely. Blocking a user-initiated fetch tells a prospective customer your site refused. For most organisations whose content demonstrates expertise, the defensible default is to allow retrieval and user fetches and decide about training deliberately.
What is llms.txt, and do I need it?
A proposed community convention: a Markdown file at /llms.txt giving a plain-language map of your site so a model can locate the substance without parsing layout. It is not a ratified standard, not a ranking factor, and not an access-control mechanism. If your content already exists as structured data, generating it costs almost nothing and is worth doing — but anyone presenting it as a requirement or a guarantee of citation is misdescribing it.
Does robots.txt remove a page from an index?
No, and using it that way backfires. Disallow prevents crawling, not indexing — a blocked URL can still be listed from external links, just with no description. To keep a page out of an index you must allow the crawl and serve a noindex directive, because a page blocked in robots.txt is never fetched and the noindex is never read.
Can I block crawlers by user-agent string?
You can state a preference that way, and well-behaved agents will honour it. You cannot enforce it, because the user-agent is a self-declared header that anyone can set. Real enforcement requires authentication, or verification by reverse DNS and published address ranges at the edge. Allowlisting by user-agent grants access to anyone who copies the string.
Sources
- RFC 9309: Robots Exclusion Protocol — IETF. robots.txt rules are requests crawlers are asked to honour, and are not a form of access authorization.
- Introduction to robots.txt — Google Search Central. A URL blocked by robots.txt can still appear in search results, without a description.
- Block Search indexing with noindex — Google Search Central. noindex only works if the page is not blocked by robots.txt.
- Verify Requests from Google Crawlers and Fetchers — Google. Verify a crawler by reverse DNS or published IP ranges, not by its user-agent string.
- The /llms.txt file — llmstxt.org. llms.txt is a proposal, not a ratified standard.
- Overview of OpenAI crawlers — OpenAI. Separate agents for search (OAI-SearchBot), model training (GPTBot) and user-initiated fetches (ChatGPT-User).
- Does Anthropic crawl data from the web, and how can site owners block the crawler? — Anthropic. Separate agents for training (ClaudeBot), search (Claude-SearchBot) and user-initiated fetches (Claude-User).
- Perplexity Crawlers — Perplexity. PerplexityBot surfaces and links sites in Perplexity search results.