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.

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.

# 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.

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.

<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:

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.

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.

The three ways a published file ends up doing nothing

  1. It is at an address that covers nothing. yoursite.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. Shopify, Webflow, Wix, Squarespace and BigCommerce will not give you an arbitrary root file unless you put a proxy in front of the domain — see the platform pages for which ones. Without one, what you can make is a page, wrapped in your nav and footer, and that is not the same object.
  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.

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 and which buyer questions you are losing.

FAQ

Questions

See who the engines recommend instead

12 buyer questions across ChatGPT, Perplexity and Gemini. You get the questions your client loses, who won them, and what is missing from the site. No score, no signup wall.

Get your free reportOne client website, no signup. Paid plans will ask the same questions 2.5× deeper.