BlogFindings

llms.txt v2 adds two link relations and drops the tool that read v1

The llms.txt proposal was revised to version 2 and the page now carries a modified date of 10 August 2026. The change its author names first is discoverability: two standard link relations, carried in an HTML link element or an HTTP Link header, so an agent can find a page's markdown version and the llms.txt covering it without guessing. The context expansion tool that version 1 described as the consumer of these files is no longer part of the proposal.

16 min read Lantad

Lantad has measured nothing about version 2. It was published the day before this post, no AI crawler documentation has been revised to mention it, and there is no adoption figure worth quoting, including ours. So what follows reports what the author wrote, and then separates the parts a site owner can act on today from the parts that depend on somebody else implementing them first. We have reported before that the measured evidence for llms.txt moving traffic is thin, and nothing in version 2 changes that. A revision to a specification is not evidence of consumption, and anyone who tells you otherwise this week is selling something. What version 2 does do is replace guessing with a declared path, and a declared path is at least the kind of thing that can be checked later.

In short

  • The llms.txt proposal by Jeremy Howard, first published on 3 September 2024, carries a modified date of 10 August 2026 and is now titled The /llms.txt file, v2.
  • Version 2 answers what its changes page calls the commonest request, discoverability, with two standard link relations: rel=alternate with type text/markdown for a page's markdown version, and rel=describedby for the llms.txt file that covers it.
  • Those relations may be carried as HTML link elements or as an HTTP Link header, and the changes page states the header form also works for non-HTML resources and can be added in web server or CDN configuration without modifying any pages.
  • Version 2 removes the llms_txt2ctx context expansion tooling from the proposal, and with it the mechanical meaning of the Optional section, which had existed to tell those tools what to omit.
  • Lantad has not measured version 2 adoption and reports the state of the proposal from llmstxt.org as read on 11 August 2026, not from any scan.
AspectVersion 1, September 2024Version 2, August 2026
Finding a page's markdown versionNot specifiedrel=alternate with type text/markdown
Finding the llms.txt that covers a pageNot specifiedrel=describedby
Where those relations may be carriedNot applicableHTML link element, or an HTTP Link header
Markdown URL formpage.html.md onlypage.html.md or page.md
llms.txt in a subpathPermitted, meaning undefinedCovers pages under its path, most specific applies
Context expansion toolingllms_txt2ctx described in the proposalNo longer part of the proposal
The Optional sectionTold those tools what to omitConvention only, no mechanical semantics
Version 1 against version 2 of the llms.txt proposal, compiled from the changes page at llmstxt.org and read on 11 August 2026. Reported from the proposal, not measured by Lantad.

What version 2 of llms.txt actually changed

The proposal is a single page, authored by Jeremy Howard, published on 3 September 2024 and now carrying a modified date of 10 August 2026 with the title The /llms.txt file, v2. A separate changes page, headed v2 (August 2026), sets out what moved and why, and it is the more useful of the two documents if you already knew version 1.

Its stated reason for the revision is adoption rather than theory. The changes page says that thousands of sites now publish an llms.txt file, that documentation platforms generate one automatically, and that coding agents use them reliably. The proposal page adds that the AI labs publish llms.txt files for their own developer documentation, naming OpenAI, Anthropic and Gemini, and notes that Chrome's Lighthouse audits sites for one as part of its agentic browsing checks, which is a detail we covered separately when that audit category appeared. None of those are numbers, and the word thousands is the most precise quantity either page offers, so treat the adoption claim as the author's characterisation rather than a measurement.

Five things changed, and they are worth separating because they carry very different weight. The first is discoverability, which the changes page calls the commonest request and which gets the rest of this post. The second is that markdown versions of pages may now use either of two URL forms rather than one. The third is that an llms.txt file placed in a subpath now has a defined meaning instead of merely being permitted. The fourth is that the context expansion tooling is gone from the proposal. The fifth is that the Optional section, which existed to serve that tooling, keeps its name and loses its mechanics.

The framing question the changes page uses for the first of those is precise enough to quote: given a page, how does an agent find its markdown version, or the llms.txt file that covers it, without guessing. That is a discovery problem rather than a content problem, and it is the reason this revision matters more to anyone doing generative engine optimisation than a longer list of formatting rules would have. A file nothing can locate is not a channel. It is a file. The rest of this post takes the five changes in the order that affects what you would actually edit, which is not the order they appear on the changes page, and ends with what none of it settles.

  • Discoverability Added Two standard link relations, rel=alternate with type text/markdown and rel=describedby, carried in an HTML link element or an HTTP Link header.
  • Markdown URL form Relaxed Version 1 specified .md appended to the full page URL. Version 2 also allows the extension to be replaced, because publishing tools already did that.
  • Subpath semantics Defined A file covers the pages under its path and the most specific file applies. Version 1 permitted subpath files without saying what they meant.
  • Context expansion tooling Removed The llms_txt2ctx tool that version 1 described for expanding a file into an LLM context is no longer part of the proposal.
  • The Optional section Demoted Still allowed and still a useful convention for secondary links, but it no longer carries mechanical semantics now that the tooling it served is gone.
The five changes the llms.txt changes page describes for version 2, read on 11 August 2026. The verdict column is our label for the kind of change, not wording from the proposal.

Two URL forms for a markdown page, and what a subpath now means

Version 1 specified one URL form for the markdown version of a page: .md appended to the full page URL, so page.html became page.html.md. Version 2 allows that form and also allows the extension to be replaced, so page.html may instead be served as page.md. The changes page is candid about why, saying that some publishing tools already replaced the extension and that version 2 blesses practice that had diverged. The proposal adds a rule for URLs with no file name in them, which should append index.html.md or index.md instead.

This is a small change with a real consequence, and it is the one place where the two versions of the proposal can disagree about the same site. Under version 1 there was one guessable URL for a page's markdown twin. Under version 2 there are two, which is exactly why the link relations matter more than the URL rule does: with a declared relation, a client does not have to try both, and with two permitted forms and no relation, it does. The proposal is coherent here. The convenience of a predictable URL was always a guess, and version 2 replaces the guess with a declaration while keeping the guessable forms as a fallback.

The subpath change is the other half of the same idea. Version 1 permitted an llms.txt file at a path within a site without defining what that scoped to. Version 2 states that a file covers the pages under its path and that where more than one file applies, agents should use the most specific one, so /docs/llms.txt covers everything in /docs/. The changes page names the case that motivated it: a site that only controls a path, such as a GitHub Pages project site, can now participate fully. That is a real gap closed, and it also quietly makes llms.txt behave more like a set of scoped manifests than a single site-wide file.

For a site owner, none of this changes what you would write in the file. It changes where you may put it and how many of them you may have, which for a large documentation set or a monorepo with several products is the difference between one unwieldy file and several accurate ones. If your stack generates pages rather than serving them from disk, the relevant question is whether your framework can emit the relation and the markdown twin at all, which for something like a Next.js site is a routing question rather than a content one. What a crawler receives from a generated page is the thing to check either way, and what GPTBot sees on a given URL is a different question from what your build produced.

Sample Illustrative, not a measurement of any real site.

The version 2 header form, on an ordinary HTML response

  • GET /docs/page.html 200 text/html
  • Link: </docs/page.html.md>; rel="alternate"; type="text/markdown" the markdown version of this page
  • Link: </docs/llms.txt>; rel="describedby" the llms.txt that covers /docs/
  • GET /docs/page.html.md 200 text/markdown
  • GET /docs/llms.txt 200 text/markdown
The two relations version 2 recommends, written as Link header fields on a page response. The proposal gives one combined example; this splits it for readability. Constructed to show the mechanism, not captured from any site.

What version 2 removed, and why a removal is the honest part

Version 1 said nothing about how llms.txt should be consumed, but it did describe a tool, llms_txt2ctx, for expanding a file into an LLM context. Version 2 removes that tooling from the proposal and replaces it with a statement of expectation: agents view or search the llms.txt to find what they need, then follow the relevant links, which should point to LLM-friendly content. The file itself stays small enough to fit in context, and the detail lives behind the links, fetched only when needed.

Read those two states next to each other and the direction is clear. Version 1 shipped with a concrete consumer, a program you could run that did something definite with the file. Version 2 has no consumer in the document and instead describes what agents are expected to do. That is a reasonable thing for a proposal to do once real agents exist, and the changes page is explicit that this reflects two years of adoption. It is also, read plainly, a proposal with a weaker claim to a mechanism than it had before, and the author does not hide that.

The Optional section is the casualty worth naming. In version 1 it carried mechanical meaning, telling context expansion tools what to leave out when they built a context from the file. With the tooling gone, the changes page states that Optional sections are still allowed and remain a useful convention for secondary links, but that they no longer carry mechanical semantics. So a field that used to instruct a program now signals intent to a reader. If you built an llms.txt around the assumption that Optional was load bearing, it is not any more, and nothing will tell you: the file still parses and the section still renders.

This is the pattern that turns up across nearly every machine-readable signal we look at, and it is why we keep writing about it. A sitemap tells a crawler where pages are rather than that they changed. A licence directive in robots.txt can state terms while changing no access. In each case the file is a declaration, and the enforcement, or the consumption, lives with whoever chooses to read it. Version 2 of llms.txt has moved further into that category rather than out of it, which does not make it useless and does mean the honest description of it is a convention rather than a protocol. For measuring AI visibility, the practical consequence is that the presence of the file remains a weak signal, and our registry of crawler tokens still records which vendors document reading which files, which is a shorter list than the proposals available to write.

Version 1

  • Said nothing about how the file should be consumed
  • Described llms_txt2ctx, a tool that expanded a file into an LLM context
  • The Optional section told that tool what to omit
  • A concrete program in the document, no stated expectation of agents

Version 2

  • States the expectation directly: agents view or search the file, then follow the links
  • The context expansion tooling is no longer part of the proposal
  • Optional sections stay allowed, with no mechanical semantics
  • An expectation of agents in the document, no program
The consumer described by each version of the proposal, quoted and paraphrased from llmstxt.org and its changes page, read on 11 August 2026.

What to check on your own site, and what this does not settle

The actionable half of version 2 is short, and it is a headers and templates job rather than a content job. If you already publish an llms.txt, the file itself needs no rewrite. What is new is that you can now declare where it is from the pages it covers, and declare where each page's markdown twin lives, using the two relations in a link element or a Link header. If you publish markdown twins, check which of the two permitted URL forms you use and be consistent, because a relation pointing at a URL that returns 404 is worse than no relation at all. If you serve documentation under a path you do not fully control, the subpath rule is the change that lets you participate.

We are obliged to apply that to ourselves, and the result is mixed. Every public page on lantad.co is already served as markdown at the same URL plus .md, which is the extension-replacement form version 2 now permits, and the markdown index lists all of them, with the home page at /index.md because /.md is not a servable filename. Those twins carry noindex and name the HTML page as canonical, so they are an alternate representation rather than a duplicate site. What we do not currently emit is either of the two relations version 2 recommends. Our layout publishes a rel of alternate for the RSS feed and nothing with a type of text/markdown, and the markdown endpoint sets no Link header. So on the specific thing this revision is about, our own site does the URL half and not the discovery half, as of this post. That is a gap in our implementation, not a criticism of the proposal, and we would rather write it down than let a reader assume otherwise.

What version 2 does not settle is the part that decides whether any of this is worth your afternoon. No AI crawler documentation we are aware of commits to fetching a page's link relations to locate an llms.txt, and a proposal cannot create that commitment on its own. The measured evidence on llms.txt influencing traffic was weak before this revision and no new measurement accompanied it. So the correct expectation for version 2 is that it makes a good idea implementable, not that it makes it effective, and the effect remains an open question that somebody will need to measure with a controlled cohort rather than assert, which is the shape of the crawlability study we publish.

Meanwhile the things that decide whether an AI system can read your pages at all have not moved. Whether the text a human sees is present in the served HTML before any JavaScript runs is still the largest single factor, which we score as prose parity. Whether your structured data survives to the crawler is still checkable. How your robots.txt resolves for a specific named token is still the thing that decides access, and our methodology sets out how we weight each of those and what we refuse to grade. A markdown twin is a good thing to publish and a poor substitute for a page a crawler can read, and the advice we give for being cited by ChatGPT starts in the same place it did last week. Our own crawler's conduct and opt-out are documented at our bot page, and it fetches robots.txt before anything else, because that is still the file every vendor agrees to read.

  • Publish an llms.txt covering the pages you want agents guided through Unchanged by version 2. The file format is broadly the same; only its scoping rules gained a definition.
  • Serve a markdown version of each page a client might want lantad.co serves every public page as markdown at the same URL plus .md, which is the extension-replacement form version 2 permits.
  • Point at that markdown with rel=alternate and type text/markdown Not emitted on lantad.co today. The layout carries a rel of alternate for the RSS feed only.
  • Point at the covering llms.txt with rel=describedby Not emitted on lantad.co today, in a link element or in a Link header.
  • Keep robots.txt correct for each named crawler token Unrelated to this revision and still the only preference file every major AI vendor documents reading.
What version 2 asks of a site, and the state of lantad.co against each item as of 11 August 2026, read from this repository rather than from a scan.

Written by

Lantad

Published .

A proposal changing version number is not usually worth a post. This one is, for a narrow reason. llms.txt is the file that site owners have been told to add for AI more often than any other, and until 10 August 2026 the document behind it had not moved since September 2024. The second version leaves the contents of the file broadly alone. What it changes is how anything is supposed to find the file in the first place, and discovery is the part of this that an outside scan can actually see. Everything below is read from the proposal page and its companion changes page, both fetched on 11 August 2026.

Common questions

Does llms.txt v2 change where the file goes?

Not the permitted locations, but it defines what a location means. Version 2 keeps the file at /llms.txt or at any subpath, and adds the rule that a file covers the pages under its path and that the most specific file applies when more than one does. Version 1 permitted subpath files without defining their scope.

Do I need to add rel=alternate and rel=describedby to my pages?

Only if you want agents that fetch your pages to find your markdown versions and your llms.txt without guessing. The proposal recommends rather than requires them, and they can be added as HTML link elements or as an HTTP Link header, the latter in web server or CDN configuration without editing any pages.

Is llms_txt2ctx still part of the llms.txt proposal?

No. Version 2 removes the context expansion tooling from the proposal and replaces it with a statement that agents view or search the file and then follow the links. The Optional section, which existed to tell that tooling what to omit, remains allowed as a convention but no longer carries mechanical semantics.

Does version 2 mean AI crawlers now read llms.txt?

No, and nothing in the revision claims that. Version 2 is a change to a proposal, published on 10 August 2026, and no crawler vendor documentation was updated alongside it. The measured evidence that publishing an llms.txt moves traffic was weak before this revision and no new measurement was published with it.

See what AI can read on your site

Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.