passcite

Guide

How to write an llms.txt

The format, what belongs in it, where it has to live — and an honest answer about how much it is worth, from people who give away the tool that generates these.

Published

The short answer

A markdown file at the root of your site: an H1, one sentence on what you do, for whom and where, then sections of described links to the pages that answer buyers’ questions. Publish it — it takes fifteen minutes. But it is rarely why an engine recommends somebody else; a missing page usually is.
On this page
  1. The format
  2. Discovery
  3. The rules
  4. Failure modes
  5. The honest answer
  6. Questions
The format

The format, in full

It is smaller than people expect. A markdown file with an H1 — the only required part — then a blockquote summary, then optional plain paragraphs, then ## sections containing lists of links. Each link is [name](url), optionally followed by a colon and a note. That is the whole specification as llmstxt.org describes it at v2.

llms.txt · example
# North Austin Dentistry> A family dental practice in North Austin, taking new patients, open Saturdays.We serve North Austin, Cedar Park and Round Rock. We do not take Medicaid.## Services- [Invisalign](https://example.com/invisalign): cost, timeline, and who it suits- [Emergency care](https://example.com/emergency): what to do, and same-day availability## Answers- [What a first visit costs](https://example.com/pricing): ranges, insurance, payment plans- [Sedation options](https://example.com/sedation): for patients who are anxious## Optional- [About the practice](https://example.com/about)

## Optional is a convention for secondary links — things an agent can skip when context is short. In v1 it had a mechanical meaning for a context-expansion tool; that tool is no longer part of the proposal and neither is the special handling. Every other section you name yourself.

Discovery

The part of v2 almost nobody has done yet

v2 answers the question two years of adoption kept raising: given a page, how does an agent find its markdown version, or the llms.txt that covers it, without guessing? The answer is standard link relations.

In the page's <head>
<link rel="alternate" type="text/markdown" href="/docs/page.md"><link rel="describedby" href="/docs/llms.txt">

Or as an HTTP header, which is the more useful form — it works for non-HTML resources and can be set in your CDN without touching a single page:

HTTP response header
Link: </docs/page.html.md>; rel="alternate"; type="text/markdown",      </docs/llms.txt>; rel="describedby"

The markdown version of a page may be page.html.md or page.md; v2 allows both because publishing tools had already split on it. If you run a documentation site, this is the most valuable half of v2 and hardly anybody has shipped it.

The rules

Four rules that decide whether it is any good

  • The summary is the file. One sentence naming what you do, who for, and where. It is read first and it is what everything else is interpreted against. Most published llms.txt files skip it.
  • Link pages that answer a question. Pricing, FAQ, a real comparison, a service page with actual detail. Not your privacy policy, not every blog post.
  • Describe every link. The text after the colon is free context and nearly everyone leaves it out. Invisalign: cost, timeline, and who it suits is worth more than the URL alone.
  • Absolute URLs. The file is read away from your site. A relative path has nothing to resolve against by then.
Failure modes

The three ways a published file ends up doing nothing

  1. It is at an address that covers nothing. example.com/llms.txt covers the site; /docs/llms.txt covers /docs/. A page at /pages/llms-txt covers nothing and is not called llms.txt.
  2. It is served as HTML. A hosted builder with no setting for the file lets you make a page called llms.txt, wrapped in your nav and footer, and that is not the same object. Several have added one — Shopify serves a default file a theme can replace, and Webflow, Squarespace and Wix each have a setting for it on some plans — but BigCommerce still needs a redirect or a proxy in front of the domain.
  3. It goes stale. A curated index that points at four moved pages is worse than no index, because it curates wrongly.

The validator reads the live URL for exactly this reason. A file that looks right in your editor and 404s on your domain is the common case, not the rare one.

The honest answer

How much is this actually worth?

We ship a free tool that writes these files, so take the following as costing us something to say: llms.txt is rarely the reason an engine recommends somebody else. Across the reports we run, the sites that lose buyer questions lose them because no page on the site answers the question — not because the index pointing at the missing page was formatted wrong.

Publish it anyway. It is fifteen minutes, it is entirely within your control, it costs nothing if adoption stalls, and it forces you to write down what your site is for — which is an exercise worth doing on its own merits.

Ours is at passcite.com/llms.txt, built by the generator on this site and checked by the validator on this site. Read it as a worked example, including the part most files leave out: it says which of our features are not built yet, because the expensive failure for this file is not going unlisted — it is an assistant describing you with a feature you do not have.

Then spend the rest of the afternoon on the two things that do decide outcomes: whether the crawlers can reach you (if they cannot, the AI robots.txt generator rewrites only the AI groups of your file) and which buyer questions you are losing.

Discuss this post with AI

Opens your assistant with a question about this post, ready to send.

Share
FAQ

Questions

Does anything actually read llms.txt?
Coding agents do, reliably, and that is what carried the proposal to v2 in August 2026: thousands of sites publish one, documentation platforms generate them automatically, Chrome's Lighthouse audits for one, and OpenAI, Anthropic and Google all publish llms.txt files for their own developer docs. What nobody has committed to publicly is the consumer answer engines using it to decide who to recommend. Publish it; do not expect it to be what gets your client named.
Where does it go?
Conventionally at example.com/llms.txt, served as text/plain. Since v2 it can also live at a subpath — /docs/llms.txt covers the pages under /docs/, and where several files apply an agent uses the most specific. What does not count is an HTML page with that name, which is all some hosted builders will let you make.
Is it the same as a sitemap?
No. A sitemap is an inventory: every URL, no meaning. llms.txt is a curated index with explanations. If yours lists every page you have, you have written a sitemap with extra steps and buried the part that was useful.
How long should it be?
Ten to twenty links for a small business site. The summary at the top does most of the work and gets buried in a long file.
What changed in v2?
Four things, as of September 2026 (the proposal is at llmstxt.org). Subpath files got a defined meaning. Discoverability got standard link relations — rel="alternate" type="text/markdown" to a page's markdown version and rel="describedby" to the llms.txt covering it, as a <link> tag or an HTTP Link header. Markdown versions of pages may be either page.html.md or page.md, where v1 allowed only the first. And the Optional section lost its mechanical meaning along with the context-expansion tool that read it — it is still a fine convention for secondary links.
Should I do this before anything else?
No. Check the AI crawlers can reach you at all, then check your pages are not empty shells rendered by JavaScript. Both of those make llms.txt irrelevant if they are wrong, and both take a minute to check.
Keep reading

See who the engines recommend instead

The prompts your client loses, who wins them, and the tasks that would change it.

10 free credits — your first report, 10 prompts across ChatGPT, Claude and Google AI Mode. A free account, no card. About 3 minutes.