If you want to see what a real llms.txt file looks like before you write your own, the fastest way is to just read a few live ones. Below are actual files pulled straight from Anthropic, Cloudflare, Stripe, Vercel, Supabase, and Zapier, broken down so you can see the patterns that repeat across all of them and copy the parts that fit your own site.
Most "llms.txt examples" posts describe these files secondhand. This one links you straight to the live files (they are all public URLs, you can open every one yourself) and shows you the actual structure, not a paraphrase of it.
What an llms.txt File Actually Looks Like
The format comes from a proposed spec published in 2024: a single Markdown file at /llms.txt that gives an AI model a clean, navigable index of your site instead of forcing it to parse rendered HTML. The spec defines a simple shape:
- An H1 with your site or project name (the only required part).
- A blockquote with a one- or two-line summary.
- Optional free-text context (compatibility notes, key facts, anything an AI agent should know before it starts).
- One or more H2 sections, each a Markdown list of links in the
[title](url): descriptionformat.
That is genuinely the whole spec. Everything below is how real companies filled it in.
6 Real llms.txt Examples
Anthropic: language variants listed up front
Anthropic's llms.txt opens with a heading, a one-line description of the file's purpose, then immediately lists every language its documentation ships in, with page counts, before the English link list even starts:
# Anthropic Developer Documentation
This file provides an overview of the Anthropic API documentation and developer resources.
## Root URL
...
## Available Languages on Website
- English (en) - 1894 pages - /docs - Content included below
- German (Deutsch) (de) - 137 pages - /docs/de - Visit website for content
...
The pattern worth copying: if your docs are multilingual, tell the model that up front, with page counts, rather than silently only exposing English. It saves the model a wasted crawl of a language variant it did not know existed.
Cloudflare: a nested index of indexes
Cloudflare has dozens of products, so a single flat file would be unusable. Its llms.txt solves this by being an index of indexes: a top-level file organized into categories ("Application performance," "Application security," and more), where every line links to that product's own llms.txt, not to a doc page directly:
> 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...
- [DNS](https://developers.cloudflare.com/dns/llms.txt): Deliver excellent performance...
The pattern worth copying: if your site has genuinely distinct product areas, do not try to cram everything into one file. Nest it. A model can follow the second link when it needs that product's depth, and it is not forced to download an index for 30 products to answer a question about one.
Stripe: agent instructions before the link list
Stripe's llms.txt does something the spec allows but most sites skip: it opens with an actual instruction to the model, not just a description of the site.
When installing Stripe packages, always check the npm registry for the
latest version rather than relying on memorized version numbers. Run
`npm view stripe version` or check https://www.npmjs.com/package/stripe
before pinning a version...
Then it moves into the standard [title](url): description list, one line per doc page, each with a .md suffix that resolves to a clean Markdown version of that page.
The pattern worth copying: the free-text section between the summary and the link lists is a real opportunity, not filler. If there is one thing your product's AI-generated answers keep getting wrong (a deprecated method, a stale version number, a common misconception), that is exactly the sentence to put there.
Vercel: points to a single full-text export
Vercel's llms.txt leads with a pointer to a companion file, llms-full.txt, that concatenates the entire documentation set into one document, before the normal categorized link list even begins:
> Full documentation content: https://vercel.com/docs/llms-full.txt
# Documentation
...
- [Getting Started](https://vercel.com/docs/getting-started-with-vercel): ...
The pattern worth copying: llms.txt and llms-full.txt serve different jobs. The short file is a map for an agent that wants to fetch a handful of specific pages. The full file is for a model that wants to ingest everything at once, for example to answer a broad "how does X work end to end" question. Offering both covers more use cases than either alone.
Supabase: the same full-text pattern, tighter
Supabase's file uses the identical full-text pointer pattern as Vercel, just with less preamble: one line pointing to llms-full.txt, then straight into a flat ## Documentation list. No language variants, no nested product indexes. This works because Supabase's docs, while extensive, live under one product surface rather than dozens.
The pattern worth copying: match the file's complexity to your site's actual structure. Supabase does not need Cloudflare's nesting because it does not have Cloudflare's product sprawl. Do not add structure you do not need; it just adds a hop the model has to follow.
Zapier: stable, linkable section anchors
Zapier's llms.txt explicitly calls out that its section anchors are stable and safe to deep-link, for example zapier.com/llms.txt#mcp, then organizes the file around "Surfaces" (the different subdomains and products) and "Topics" (cross-cutting concerns like AI agents or MCP), rather than a single flat structure:
> Root map for AI agents and developer tools. Per-surface indexes live in
> [Surfaces](#surfaces); topic-keyed cross-references live in
> [Topics](#topics). Section anchors are stable, safe to deep-link.
The pattern worth copying: telling the model your anchors will not change is a small detail that matters more than it looks. It means an AI product can cache a deep link to your #mcp section and trust it will still resolve next month, instead of re-fetching the whole file every time.
The Patterns Across All Six
Line them up and the same handful of decisions repeat, just resolved differently depending on how big and how multi-product each site is.
| Site | Structure style | Notable addition |
|---|---|---|
| Anthropic | Flat list, docs-first | Language variants with page counts, listed up front |
| Cloudflare | Nested index of indexes | Every product links to its own separate llms.txt |
| Stripe | Flat list | Explicit agent instructions before the link list |
| Vercel | Flat list + full-text pointer | Points to a companion llms-full.txt |
| Supabase | Flat list + full-text pointer | Same full-text pattern, minimal preamble |
| Zapier | Surface + topic sections | Stable, deep-linkable section anchors |

Three decisions to make for your own file, in the order they actually matter:
- Flat or nested? A single product with a few dozen pages should stay flat, like Supabase. A multi-product platform, like Cloudflare, should nest, with each product owning its own file.
- Short file, full-text export, or both? A short index alone is enough for most sites. Add an
llms-full.txtonce your docs are large enough that "answer this from the whole doc set" is a real, recurring query type. - Anything worth telling the model directly? If there is a fact your product's AI answers keep getting wrong (an old API version, a naming change, a common point of confusion), Stripe's approach of stating it plainly near the top is worth copying regardless of your site's size.
What to Leave Out of Your llms.txt
The gap most "here's what llms.txt is" articles skip is what a bad file looks like, not just a good one. A few habits will make your file actively unhelpful:
- Do not dump your full sitemap in. A file that lists every marketing page, every old blog post, and every doc page with no organization defeats the purpose. The value of
llms.txtis curation: a small, deliberately chosen index, not an automated mirror of your sitemap. - Do not let descriptions go stale. Cloudflare's file has "(deprecated)" flags baked directly into old product listings for exactly this reason. If a linked page has moved on (a renamed feature, a shut-down product), update the entry or remove it. A model following a dead link learns nothing and wastes a request.
- Do not skip the summary blockquote. It is the one line that is supposed to be non-negotiable in the spec, and it is the fastest way for a model to decide whether it is even looking at the right site.
- Do not treat it as a one-time setup task. Every example above is tied to a doc set that changes constantly. Whoever owns your documentation pipeline should treat
llms.txtas another file that gets regenerated when the docs do, not something written once and forgotten.
How to Check If a Site Has One
Before building your own, it is worth a quick habit: append /llms.txt to any site's root domain, or a specific docs subdomain, and see what comes back. A 200 with a Markdown file means that site has adopted the format; a 404 means it has not yet. This is exactly how the six examples above were pulled for this piece: fetching the live file at each company's domain, not reading a description of it somewhere else.
If you are auditing your own site's readiness for AI citation more broadly, an llms.txt file is one input among several. Structured content, clear author attribution, and up-to-date facts all matter at least as much to whether ChatGPT, Perplexity, or Google's AI Overviews decide to cite you. Murkuz's AI search readiness use case grades every page A through F on exactly those signals (structure, authority, freshness, source attribution) and generates the specific fixes for whichever ones are weak, so an llms.txt file becomes one piece of a bigger readiness picture instead of a checkbox on its own.
FAQ
What is a good example of llms.txt?
Anthropic, Cloudflare, Stripe, Vercel, Supabase, and Zapier all publish real, public llms.txt files (linked and broken down above). Cloudflare's is the strongest example for a large, multi-product site because it nests product-specific files instead of trying to flatten everything into one list.
Is there a template for llms.txt?
The official spec publishes a minimal FastHTML example: an H1 with the project name, a blockquote summary, optional free-text context, then H2 sections of Markdown links with descriptions. Every real-world file above follows that same skeleton; they differ in how much they nest and whether they add a full-text export.
Do I need both llms.txt and llms-full.txt?
Not always. A short index file alone covers most sites. Add a full-text export (as Vercel and Supabase both do) once your documentation is large enough that a model answering a broad question benefits from ingesting everything in one fetch rather than following dozens of individual links.
How do I check if my competitor has an llms.txt file?
Append /llms.txt to their root domain (and any docs subdomain) in a browser. A working Markdown file means they have adopted it; a 404 means they have not. It takes about ten seconds per site.
Does llms.txt actually help with ChatGPT or AI Overviews citations?
It is one signal among several, not a guarantee. A well-organized llms.txt makes your content easier for an AI agent to navigate and fetch cleanly, but citation still depends on the underlying content being structured, current, and credible. Treat it as infrastructure that removes friction, not as a ranking factor on its own.
Junaid Khalid is the founder of Ertiqah and the builder of Murkuz. He has spent years running SEO as the first growth channel across his own SaaS products, and reads the current crop of AI-crawler standards, including llms.txt, the same way: useful infrastructure, not a substitute for genuinely well-structured content.




