llms.txt is a markdown file at the root of a domain describing what the site contains and where the important parts are — written for a language model reading the site rather than for a crawler indexing it.
It is a young convention, not a standard, and it costs very little to publish.
How it differs from a sitemap
| Audience | Contains | Ordered by | |
|---|---|---|---|
sitemap.xml |
Search crawlers | Every URL | Nothing meaningful |
llms.txt |
Language models | The URLs that matter, with context | Importance |
A sitemap says these pages exist. An llms.txt says this is what this site is, here is what to read first, and here is what each section is for. The second is useful to something that will read a handful of pages and then answer a question about you.
What belongs in it
- One or two sentences on what the product actually does.
- Links to the pages that answer the common questions, each with a line of context.
- The awkward parts. A model summarising your product will find the gaps anyway; the difference is whether it finds your description of them or its own inference.
What does not belong is marketing language. It is read by something that will paraphrase it, and adjectives paraphrase badly.
Generate it, do not write it
A hand-maintained llms.txt goes stale in a week, and a stale one is worse than none — it will describe routes that no longer exist and omit the ones that do. Ours is generated at request time from the same content the site renders, so it cannot disagree with the pages. A route that goes live appears in it without anyone remembering to add it.
The same idea, one layer down
llms.txt helps a model read your site. An MCP server lets a model call your product. They are complementary and both are discovery surfaces that have nothing to do with search rankings — which for a small product is the point: they are distribution that does not require out-ranking anybody.