An llms.txt file is a markdown file served at `https://yoursite.com/llms.txt` that lists your most useful pages for language models to read. The spec at llmstxt.org requires exactly one thing: an H1 with the project name. Everything after that, the blockquote summary, the H2 sections, the link lists, is optional but conventional. This page is the implementation reference: real files, the spec as a table, a template, and what generators and validators actually do.
If you want the concept rather than the code, read what is llms.txt first. This post assumes you already have an editor open.
The format spec, section by section
Verified against llmstxt.org on 20 July 2026. The spec defines the sections in a specific order, and only the first is mandatory.
| Order | Section | Markdown form | Required | What goes in it |
|---|---|---|---|---|
| 1 | Byte-order mark | BOM | Optional | Rarely used. Most files skip it. |
| 2 | Project name | `# Name` | Yes | The only required section per the spec. One H1, first line. |
| 3 | Summary | `> text` | Optional | A blockquote with "key information necessary for understanding the rest of the file". |
| 4 | Detail | Paragraphs, lists | Optional | "Zero or more markdown sections of any type except headings." No H2s here. |
| 5 | File lists | `## Section` | Optional | Zero or more H2-delimited sections holding lists of URLs. |
| 6 | Optional section | `## Optional` | Optional | Special meaning: these URLs "can be skipped if a shorter context is needed". |
Inside an H2 section, each entry is a markdown list item with a required hyperlink and an optional note after a colon: `- Name: notes about the file`. The spec also recommends publishing a markdown version of each page at the same URL with `.md` appended, which is why real files are full of `.md` link targets.
Real llms.txt files, annotated
All four fetched live on 20 July 2026. These are excerpts, not full files.
Mintlify (`https://mintlify.com/docs/llms.txt`) is the closest to a textbook implementation: H1, blockquote, then a single `## Docs` list with a note on every link.
# Mintlify
> Mintlify is a platform for building and hosting documentation websites. It provides a set of tools and services for maintaining documentation and making it accessible to AI agents.
## Docs
- [What is the agent?](https://www.mintlify.com/docs/agent/index.md): Learn how the Mintlify agent researches, plans, and writes documentation, then opens pull requests with proposed changes for your team to review.
- [AI-native documentation](https://www.mintlify.com/docs/ai-native.md): Discover how AI-native features enhance reading, writing, and discovering your documentation with the assistant, agent, and MCP server.This matters because Mintlify generates llms.txt automatically for every site it hosts. If your docs run on Mintlify, you already have one, and it looks like the above.
Cloudflare (`https://developers.cloudflare.com/llms.txt`) uses the blockquote as an instruction rather than a description, and points each H2 entry at a nested per-product llms.txt instead of a page.
# Cloudflare Developer Documentation
Explore guides and tutorials to start building on Cloudflare's platform.
> Each product below links to its own llms.txt, which contains a full index of that product's documentation pages and is the recommended way to explore a specific product's content.
## Application performance
- [Cache / CDN](https://developers.cloudflare.com/cache/llms.txt): Make websites faster by caching content across our global server network
- [DNS](https://developers.cloudflare.com/dns/llms.txt): Deliver excellent performance and reliability to your domainTwo deviations worth copying and one worth avoiding. The nested index is smart for large doc sets. The plain paragraph before the blockquote inverts the spec's order, which strict validators will flag.
Stripe (`https://docs.stripe.com/llms.txt`) skips the blockquote entirely and opens with a prose instruction aimed at coding agents, then a flat `## Docs` list.
# Stripe Documentation
## Docs
- [Testing](https://docs.stripe.com/testing.md): Simulate payments to test your integration.
- [API Reference](https://docs.stripe.com/api.md)
- [Receive payouts](https://docs.stripe.com/payouts.md): Set up your bank account to receive payouts.
- [Supported currencies](https://docs.stripe.com/currencies.md): Learn which currencies Stripe supports for payments and bank payouts.Note the second entry has no note after the link. That is legal: the hyperlink is required, the colon and notes are not.
Anthropic (`https://platform.claude.com/docs/llms.txt`, redirected from `docs.anthropic.com`) barely follows the convention at all. No blockquote, and the H2s are metadata rather than link lists.
# Anthropic Developer Documentation
This file provides an overview of the Anthropic API documentation and developer resources.
## Root URL
Claude Developer Platform Console (Requires login)
https://platform.claude.com
## Available Languages on Website
- English (en) - 1894 pages - /docs - Content included below
- German (Deutsch) (de) - 137 pages - /docs/de - Visit website for contentThe pattern across all four: everyone honours the H1, most honour the H2 lists, and the blockquote is the section teams drop first. If a strict parser is your target, keep it.
A template you can copy
# Acme Analytics
> Acme Analytics is a self-serve product analytics tool for B2B SaaS teams.
> Funnels, retention and session replay, with a free tier up to 1M events.
Use the Docs section for API and integration questions. Use Product for
pricing, positioning and comparisons. Links ending in .md return plain
markdown versions of the same page.
## Docs
- [Quickstart](https://acme.com/docs/quickstart.md): Install the SDK and send a first event in under five minutes.
- [API reference](https://acme.com/docs/api.md): REST endpoints, auth, rate limits and error codes.
- [Self-hosting](https://acme.com/docs/self-hosting.md): Docker and Kubernetes deployment for regulated environments.
## Product
- [Pricing](https://acme.com/pricing.md): Plan tiers, event limits and overage rates.
- [Security](https://acme.com/security.md): SOC 2 scope, data residency and subprocessors.
## Optional
- [Changelog](https://acme.com/changelog.md): Release notes from 2023 onward.
- [Engineering blog](https://acme.com/blog.md): Architecture posts, not product documentation.Four things that make this file useful rather than decorative. The blockquote answers who you are and who you serve, because that sentence is the one most likely to be quoted. The notes after each colon carry the intent of the page, not a restatement of the title. Section names are semantic, so a model can decide what to skip. The `Optional` section holds anything a shorter context can safely drop.
Want to see this in action?
See how every major AI model talks about your brand. Free to start.
Keep it short. The point of the file is selection. A list of every URL you have is a sitemap with extra steps.
llms.txt vs robots.txt vs sitemap.xml
| Property | llms.txt | robots.txt | sitemap.xml |
|---|---|---|---|
| Format | Markdown | Plain text directives | XML |
| Purpose | Curate the best content for a model to read | Allow or disallow crawler access | Enumerate every indexable URL |
| Who reads it | Unclear in production. Mostly SEO audit tools today | All major search and AI crawlers | Google, Bing and other search crawlers |
| Honoured? | No major AI provider has confirmed production use | Voluntary, but broadly respected by named bots | Yes, as a discovery hint |
| Blocks anything | No | Yes, that is its only job | No |
| Standardised | Community proposal at llmstxt.org, 2024 | De facto since 1994, RFC 9309 since 2022 | sitemaps.org protocol |
The practical consequence: llms.txt cannot stop a crawler and cannot get a page indexed. If your goal is access control over AI bots, robots.txt is the file that does the work, and the AI crawler user agents reference lists the tokens to target. For OpenAI's crawler specifically, see the GPTBot crawler guide.
Generating one
Three categories of tool exist, in rising order of effort and quality.
Platform-native generation is the easiest. Mintlify, Docusaurus plugins and several docs frameworks emit llms.txt and llms-full.txt from your existing content tree with no configuration. If you are on one of these, check whether the file already exists before building anything.
Crawler-based generators take a domain, crawl it, and emit a file. They are fast and produce a bloated result, because a crawler cannot tell your pricing page from a tag archive. Treat the output as a first draft and delete two thirds of it.
Build-step generation is what most teams end up with: a script that walks your content directory, reads frontmatter titles and descriptions, and writes llms.txt on deploy. Roughly thirty lines of Node or Python, and it never drifts from your sitemap. The variant `llms-full.txt` inlines the entire text of every listed page into one file, which is why Vercel's llms.txt opens by pointing at `https://vercel.com/docs/llms-full.txt` as a separate resource (fetched 20 July 2026).
Validating one
A validator is a markdown parser with opinions. The checks are consistent across the public tools, and you can run all of them yourself.
| Check | What passes | Common failure |
|---|---|---|
| Reachable | 200 at `/llms.txt` | 404, or a redirect to the homepage |
| Content type | `text/plain` or `text/markdown` | Served as `text/html` by a catch-all route |
| H1 present and first | One `# Title` on line one | H1 missing, or duplicated later in the file |
| Blockquote | `>` summary directly after the H1 | Skipped, as in the Stripe and Anthropic files |
| H2 sections | Named sections holding lists | Bare link dump with no headings |
| Link syntax | `Name` markdown links | Raw URLs, or relative paths |
| Link reachability | Sampled links return 200 | Dead links, or `.md` variants that do not exist |
| Encoding | UTF-8 | Mojibake from a Windows-1252 build step |
The `.md` check is the one that catches real teams out. Listing `https://acme.com/docs/api.md` when only `/docs/api` exists gives a fetcher a 404 on every entry. Either publish the markdown variants or link the HTML pages.
What the evidence actually says
This is where the honesty is due. Adoption of llms.txt is growing and consumption is not.
Originality.ai, tracking more than 3 million websites and published 2 July 2026, found llms.txt on 36,120 sites in May 2026, up from 4,088 in June 2025, an 8.8x rise over twelve months. Ahrefs' server-log analysis of 137,000 domains in the same month found that 97% of llms.txt files received zero requests, and that SEO audit tools were the largest single source of the requests that did occur.
On the provider side, Google's position is explicit. John Mueller has compared llms.txt to the meta keywords tag and noted that AI services have not said they use it, and Gary Illyes stated at Search Central Live in July 2025 that Google does not support it and is not planning to. As of July 2026 there is no public statement from OpenAI, Anthropic or Google confirming that their production retrieval systems read the file. OpenAI's own crawler documentation governs its bots through robots.txt and does not mention llms.txt.
So the correct expectation is: llms.txt costs an hour, breaks nothing, and may pay off if a provider adopts it. It is not a ranking factor and it is not a citation lever. Anyone selling it as one is ahead of the evidence.
The work that does move AI citations is elsewhere. Ahrefs' research finds AI visibility correlates most strongly with third-party mentions and video rather than on-page work, and Semrush's citation data puts Reddit at 40.1% of all AI citations, the single most-cited source. Structured data is the closer analogue to llms.txt that engines demonstrably parse, covered in schema markup for AI visibility. For the demand side, how to get cited by AI and the GEO audit checklist are the higher-leverage reads, and how AI search works explains why retrieval, not file discovery, is the bottleneck.
Ship it in twenty minutes
Write the H1 and blockquote by hand, because those two lines carry your positioning. Generate the link lists from your content tree. Cap the file at your fifty most useful pages. Run it through a validator, fix the content type and any dead `.md` targets, and add it to your deploy step so it never goes stale.
Then measure the thing that actually matters. Publishing a file tells you nothing about whether assistants name you when buyers ask. Run a free check with our AI visibility checker to see which engines mention your brand today, and use that as the baseline you optimise against.





