llms.txt

llms.txt is a proposed Markdown file at /llms.txt for guiding AI systems. Google ignores it, 97% of files get zero requests, and Claude Code is the real reader.

First published: Jun 24, 2026 · Last updated: Jul 15, 2026 · Advanced
demand #2 in Optimization#8 in AI Search#37 on the site
1 evidence signal on this page

llms.txt is a proposal by Jeremy Howard (Answer.AI) for helping AI agents navigate sites — 97% of published files get zero requests, Google ignores it, and Claude Code is the primary consumer, not search bots.

The specification describes a voluntary LLM-friendly site summary; it does not establish crawler compliance or indexing behavior. Evidence for this claim llms.txt is a community proposal for a Markdown file at /llms.txt that offers LLM-friendly site information; it is not a web standard. Scope: The proposal's own specification and stated purpose. Confidence: high · Verified: llms.txt proposal OpenAI currently documents named bots and independent robots.txt settings instead. Evidence for this claim OpenAI documents robots.txt controls for its declared crawlers and does not list llms.txt as a crawler control. Scope: OpenAI's published crawler controls; absence is not proof that no internal system ever fetches the file. Confidence: high · Verified: OpenAI: Crawlers

TL;DR — llms.txt is a proposal (Jeremy Howard, Answer.AI, Sept 3, 2024), not an adopted standard. It’s a curated Markdown index at /llms.txt, with an optional full-content /llms-full.txt. The bots people hope are reading it for AI search — OAI-SearchBot, PerplexityBot — barely register; the dominant consumer is Claude Code and other coding agents. Google ignores it (Illyes confirmed; Mueller compared it to the keywords meta tag). In Ahrefs’ 137K-site study, 97% of files got zero requests, and SE Ranking found that removing llms.txt from a citation model improved its accuracy. It’s worth adding for developer docs consumed by coding agents; for GEO/AEO on a normal site, the data doesn’t support it. There’s also a real prompt-injection risk.

What llms.txt actually is

llms.txt is a proposal — I want to lead with that word because it’s the whole story. There’s no RFC, no W3C blessing, no IETF process. It’s one well-reasoned suggestion from Jeremy Howard (co-founder of Answer.AI and fast.ai), published September 3, 2024, that caught on hard in the developer-documentation world and got grafted onto SEO by a community hungry for an AI-visibility shortcut.

The design problem it targets is legitimate. As the spec puts it, “Large language models increasingly rely on website information, but face a critical limitation: context windows are too small to handle most websites in their entirety.” And converting HTML to clean, LLM-friendly text is, in the spec’s words, “difficult and imprecise.” Howard’s fix is to let the site author pre-flatten the content they want models to see into curated Markdown.

The format

/llms.txt is an ordered Markdown document:

  1. H1 (required) — project or site name.
  2. Blockquote — a short summary with the key information.
  3. Optional prose/lists — paragraphs or bullets, but no headings here.
  4. H2-delimited link lists- [name](url): optional notes.
  5. An ## Optional section — secondary links a model can skip when context is tight.

A minimal example, from the spec:

# FastHTML

> FastHTML is a python library which brings together Starlette, Uvicorn, HTMX,
> and fastcore's FT...

## Docs

- [FastHTML quick start](url): A brief overview of many features

## Optional

- [Starlette documentation](url): A subset useful for FastHTML development.

Two companion conventions exist:

  • /llms-full.txt — the entire site content flattened into one Markdown file. Anthropic, Perplexity, and Stripe publish both this and the short form.
  • The .md URL convention — offering page.md versions of individual pages so they’re LLM-ready without the full dump.

A newer variant skips the static files entirely: edge-served Markdown via content negotiation. Cloudflare’s Markdown for Agents converts any HTML page to clean Markdown on the fly when a client sends Accept: text/markdown — no per-page .md files, no /llms-full.txt to regenerate, no template changes, because the CDN does the conversion at the edge (Cloudflare cites ~80% fewer tokens for the agent). It’s a paid feature — Pro plan and up, not the free tier — so on this site it’s one Cloudflare upgrade away from being switched on rather than something I’ve hand-built. Whether it’s worth switching on is the same open question that hangs over llms.txt itself: serving crawlers a parallel Markdown copy of every page is convenient, but it’s another representation to keep in sync, and Bing’s Fabrice Canel has flagged the doubled crawl load and cloaking-adjacent risk of edge-served alternate content. Check your logs for real agent demand before flipping it.

llms.txt vs robots.txt — they are not the same thing

The single most common misconception is that llms.txt is “robots.txt for AI.” It isn’t, and conflating them leads to bad decisions.

robots.txtllms.txt
PurposeAccess control — what crawlers can fetchContent guidance — what’s useful to read
FormatDirectives (User-agent:, Disallow:)Markdown links + descriptions
Enforced?Yes, by compliant crawlersNo — advisory only
TimingCrawl time, before fetchingInference time, assembling context
A standard?Yes, decades old, universalNo — a proposal
Can it block?YesNo

robots.txt is a real, enforced standard. llms.txt is a suggestion box that most systems aren’t reading yet. If you want to control AI crawler access — which is a separate, legitimate goal — that lives in robots.txt and AI crawlers, not here.

Who actually reads it

This is the section that matters, because it’s where the data diverges hardest from the hype. In Ahrefs’ study of 137,210 domains (May 2026 traffic):

  • 97% of published llms.txt files received zero requests. Only ~3% (about 1,100 domains) saw any traffic at all.
  • Of the files that did get requested: 96% of requests came from bots, 4% from humans.
  • Of the bot requests, 77% came from non-AI tools — SEO auditors (Ahrefs itself among them), anonymous crawlers, tech-profiling bots. The SEO irony writes itself.
  • Only ~19.5% came from AI tools, and once you break that down it gets worse for the GEO theory:
    • AI agents & infrastructure (coding agents): ~10.5%
    • Training crawlers (GPTBot led at 4.51%): ~5.3%
    • AI assistants: ~2.5%
    • AI retrieval bots — the ones that build citation indexes: 1.1%.

Read that last line twice. The bots most people add llms.txt for — OAI-SearchBot, PerplexityBot — “barely registered.” The dominant AI consumer is Claude Code, Anthropic’s coding agent, which the study found “outfetched every AI retrieval bot, assistant, and training crawler except GPTBot.” And GPTBot is a training crawler that crawls everything regardless — its presence isn’t evidence of intentional llms.txt parsing.

Other independent measurements land in the same place. OtterlyAI watched one site for 90 days: of 62,100+ AI bot visits, exactly 84 hit /llms.txt — about 0.1%, performing “3x worse than average pages.” A separate analysis of 515M+ LLM bot events over 90 days found 408 requests total targeting /llms.txt — “statistically negligible.”

The takeaway is the developer-docs-vs-GEO split: llms.txt works for what Howard built it for (coding agents navigating API docs), and it largely doesn’t get touched by the search-citation bots the SEO community wants it to reach.

What the providers have said

Google — no, and no plans. Gary Illyes confirmed at Search Central Live (July 2025) that Google doesn’t support llms.txt and isn’t planning to. John Mueller, the most-quoted voice here, compared it to the keywords meta tag (April 2025) and called it a “temporary crutch, perhaps to save some tokens” for AI coding tools — explicitly not a search-visibility mechanism. Google’s May 2026 guidance stated machine-readable files like llms.txt aren’t necessary for AI Overviews or AI Mode, which “continue to rely on traditional SEO signals.” (Google did briefly publish an llms.txt on its dev docs on December 3, 2025, then pulled it the same day — later attributed to a CMS update, not a strategy shift.)

OpenAI — nothing. No announcement that ChatGPT, GPTBot, or OAI-SearchBot parse it. Server logs contradict meaningful usage; OAI-SearchBot “barely registered.” OpenAI points people to robots.txt for crawler control.

Anthropic — the interesting one. Anthropic publishes both llms.txt and llms-full.txt at docs.anthropic.com/llms.txt, and Claude Code demonstrably fetches other sites’ llms.txt files — it’s the largest AI consumer in the data. But that’s a coding-tool story. There’s no confirmation that Claude.ai’s search or citation layer honors llms.txt. “Anthropic’s coding agent reads it” and “Anthropic’s search index trusts it” are different claims, and only the first is supported.

Perplexity — claims yes, data says rarely. Perplexity has stated it retrieves llms.txt and uses it to “prioritize page selection.” But proactive fetching is the catch: PerplexityBot “barely registered” in the request data, and there’s “almost zero activity from PerplexityBot requesting llms.txt files proactively.” Paste an llms.txt URL into Perplexity and it reads it fine; autonomous, proactive use is the gap between policy and practice.

Bing/Microsoft, Apple, Meta — no public position. Treat as unconfirmed.

Does it move AI citations?

No demonstrated benefit. SE Ranking modeled 300,000 domains with an XGBoost regression + SHAP analysis and found that removing llms.txt from the model improved its accuracy — their conclusion: “LLMs.txt doesn’t seem to directly impact AI citation frequency. At least not yet.” A Search Engine Land 10-site, 180-day study saw 8 of 10 sites show no measurable change, and the two “winners” had confounding changes (PR coverage, new FAQ pages, technical fixes) you can’t separate from the llms.txt itself.

The meta-keywords comparison — fair or not?

Mueller’s keywords-meta-tag analogy holds on the points that matter: both are site-owner self-descriptions, neither is verified, and both are open to gaming/cloaking — you could show one thing in llms.txt and another on the page. That manipulability is exactly why a serious AI search product won’t trust a self-description over the actual pages. The counter-argument (Carolyn Shelby) is that llms.txt at least points to real URLs that have to deliver — it’s “a spotlight, not a wish list.” Both are right, and the practical result is the same: AI search systems don’t lean on it.

When it’s worth adding — and when to skip it

Add it if you run developer documentation or an API reference whose primary audience is AI coding agents (Claude Code, Cursor, Copilot, Codeium). That’s the use case it was built for, and it works.

Skip it — or at least don’t expect AI-visibility returns — for content sites, media, ecommerce, and ordinary business sites. The cost is ~20 minutes; the GEO benefit today is near-zero; and that 20 minutes is better spent on content structure, FAQ coverage, and the AI search optimization fundamentals that actually move AI visibility. The high adoption headlines (BuiltWith’s 844K+ figure) are inflated by platform auto-deployment — Mintlify rolled llms.txt out to all its hosted docs sites at once. Adoption is not usage; 97% of files get zero requests.

The security angle

This is underreported and real: because AI agents are designed to trust what’s in llms.txt, the file is a natural attack surface. The Ahrefs study flagged bad actors probing llms.txt files for prompt-injection vulnerabilities. If you do publish one, treat it as security-sensitive: keep it in version control, alert on unauthorized changes, and never put anything in it you wouldn’t show publicly.

Implementing it (if you decide to)

  • Placement: /llms.txt at the domain root, served as text/plain or text/markdown, HTTP 200.
  • Curate, don’t dump: 20–50 of your most important links. If you list everything, a model might as well crawl directly — curation is the entire point.
  • Optionally serve /llms-full.txt for contexts that want all your content.
  • Validate: load the file into Claude, ChatGPT, or Perplexity and ask it to summarize your site; then check server logs after a few weeks for real requests.
  • Generators exist for VitePress (vitepress-plugin-llms), Docusaurus (docusaurus-plugin-llms), WordPress (“Website LLMs.txt”), Drupal, plus a Python CLI (llms_txt2ctx).

The bottom line: low cost, currently near-zero GEO benefit, genuinely useful for the coding-agent use case it was born for. Check your own server logs before you decide — if you’re seeing Claude-Code/Cursor traffic, llms.txt may help them; if you’re chasing OAI-SearchBot and PerplexityBot, it isn’t the lever.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.