The specification for llms.txt changed this month, and almost nobody has noticed.
On 13 August 2026 we fetched /llms.txt from twenty-five SaaS, developer-tooling and website-platform companies — the population most likely to have already shipped one. Eighteen serve a valid file. Two have implemented the one feature version 2 added. In HTML, none have.
This is the practical guide: what the file is, what the new version requires, what shipped implementations actually look like when you measure them, and how to write one that is worth having.
First, what it is — and what it is not
An llms.txt is a markdown file at the root of your site that gives a language model a curated map of it. A title, a short summary, then lists of links with a sentence explaining each. The point is not to hold your content; it is to be small enough to fit in a model's context while telling it exactly where the detail lives.
It was proposed by Jeremy Howard in September 2024. It is not a ranking factor in any search engine, and no assistant has published a commitment to reading one. We said that in our answer engine optimization article and it is still true.
Two things have moved since, and both are worth knowing before you decide:
- Chrome's Lighthouse now audits sites for one, as part of its agentic-browsing checks.
- OpenAI, Anthropic and Google all publish one for their own developer documentation.
Neither makes it a ranking signal. A Lighthouse audit is not a search engine, and shipping one for your docs is not a promise to read anyone else's. But "a proposal nobody uses" is no longer an accurate description either, and we would rather update the picture than repeat the version of it that suited us.
What version 2 changed
The v2 proposal landed in August 2026. Four changes matter:
| Change | v1 | v2 |
|---|---|---|
| Finding the file | Guess the root path | Standard link relations: describedby points to it |
| Markdown version of a page | page.html.md only | page.html.md or page.md |
| Files in subfolders | Allowed, undefined | Covers pages under its path; most specific file wins |
The Optional section | Told tooling what to skip | Convention only, no mechanical meaning |
The first one is the headline. Under v1, an agent holding one of your URLs had no way to discover the llms.txt that describes it short of guessing at the root. v2 answers that with two relations you can set in HTML or as an HTTP response header:
rel="describedby"— points to thellms.txtcovering this pagerel="alternate"with typetext/markdown— points to this page's markdown version
The header form is the more useful of the two, because it also works on responses that have no HTML head to put a tag in: your sitemap, your feed, the llms files themselves.
What shipped implementations actually look like
Everyone writes this guide from the specification. We wanted to know what people who have already done it actually did, so we measured. Twenty-five hosts, one unauthenticated request each, 13 August 2026.
Read the percentages as a ceiling, not an average. The sample deliberately over-selects companies likely to have adopted early. It is not a survey of the web.
| Measured on 13 August 2026 | Result |
|---|---|
Serve a valid /llms.txt | 18 of 25 |
Also serve /llms-full.txt | 9 of 18 |
| Open with an H1 on the first line | 17 of 18 |
| Include the summary blockquote | 13 of 18 |
| Both, i.e. the shape the spec describes | 12 of 18 |
Send rel="describedby" as a response header | 2 of 18 |
Ship rel="describedby" in HTML | 0 of 18 |
| Serve a working markdown version of the homepage | 4 of 18 |
The seven with no file include two SEO platforms and one documentation company whose own product generates these files automatically. Adoption is not where the noise level suggests.
There is no house style yet
File sizes ran from 2,088 bytes to 210,736 — a hundredfold spread between companies solving the same problem. The median was 16,299 bytes. The largest carried 1,535 links, which is not a map; it is the thing a map is supposed to save you from reading.
The failure mode is prose without links
One platform's file has an H1, three lines of summary and zero markdown links. It reads well and it is useless: an agent that fetches it learns some adjectives and has nowhere to go next. The links are the file. Everything else is framing.
Businesses and documentation sites write completely different files
Developer-facing files are indexes — hundreds of links, almost no prose. Business-facing ones are marketing copy; one opens with sixty words of platform positioning and proof statistics before a single link.
If you are a business rather than a docs site, you will instinctively write the second kind. The second kind is where the quality is worst. Write the summary a buyer would recognise, then spend the rest of the file on links.
How to write one
The structure is fixed and short:
- An H1 with your name. The only required element.
- A blockquote summary — one paragraph a model can quote to describe you. Say what you do, where, and for whom. This is the line that gets repeated back, so write it like it will be.
- Optional prose for anything a model needs in order to interpret the rest.
- H2 sections holding lists of links, each entry a markdown link followed by a colon and one sentence.
Our own file runs to 13,359 bytes across 11 sections and 52 linked entries as this publishes — close to the measured median, and a fraction of the largest. It was 13,004 bytes before this article existed; publishing it is what added the difference, without anyone editing the file. The sections are: core pages, services, industries, markets, selected work, recent insights, engagement model, key queries answered, entity information, machine-readable resources, attribution.
Three of those are worth stealing:
- Engagement model. How buying from you works. Ours says engagements are custom-scoped after a discovery call, with no public rate card and a three-month initial term. If you do not answer that, a model will infer an answer.
- Entity information. Company, type, headquarters, area served, services, contact, verified profiles. Flat facts, no adjectives. This is the section that stops an assistant guessing.
- Selected work. We shipped ours without one. An assistant asked who has this agency actually built for had no way to answer from the file written to answer exactly that. Fixed this week.
Generate it, do not maintain it
A hand-written llms.txt is correct on the day you write it and drifts every day after. Ours is built by a route that reads the same service, market and article data the website renders from, so a new article appears in it without anyone remembering. The section structure is code; the contents are generated. That distinction is worth being precise about — it is not magic, it is just a refusal to keep the same list in two places.
The step almost nobody has taken
Two of eighteen send the describedby header. Zero ship it in HTML. The spec is two weeks old, so this is a statement about timing, not competence — and it is a window that closes.
In HTML, one tag in the head:
<link rel="describedby" type="text/plain" href="/llms.txt">As a response header, which also covers your sitemap and feed:
Link: </llms.txt>; rel="describedby"; type="text/plain"
We shipped both to this site before publishing this article, because writing a guide to a feature we had not implemented is the exact thing we spend our time telling clients not to do.
One warning for anyone auditing this. Two of the sites we measured return HTTP 200 for a markdown version of their homepage and serve an HTML document at that URL. A status-code check would have scored six working markdown versions where there are four. Read the body, not the code. A third sends a describedby header pointing at something that is not its llms.txt at all.
What we have not done
We have not built markdown versions of our pages. That is the other half of the proposal and it is a real project, not an afternoon — every page needs a clean markdown twin at a predictable URL. Four of eighteen measured sites have done it. We have not, and we will not imply otherwise while recommending it.
What it is worth
The honest case has not changed since we last wrote it. A good llms.txt costs a morning. It is not a ranking factor, the traffic it produces is badly attributable, and anyone showing you a confident revenue chart for it is showing you an estimate.
What the measurement adds is narrower and more useful: the file is now common enough among serious companies to be a normal expectation, and the version everyone is running is already out of date. Doing it properly today costs the same morning it always did and puts you ahead of sixteen of the eighteen companies we measured.
Do the ordering from the previous article first — the robots.txt catch-all, honest structured data, pages that answer questions in plain sentences. This is step four, not step one.
We build these as part of SEO and AI-powered search, and generate them from the site's own data under website and app development. If you want the checks above run against your site — file, structure, v2 relations, markdown versions — that is a fixed-scope audit and the output looks like the tables here, with your name in them.
Book a 30-minute call and we will run it first.



