The format, a worked example, where it lives, and what it is actually worth.
An llms.txt file is a Markdown file at the root of your domain that gives language models a short, curated summary of your site: a title, a one-paragraph description, and grouped lists of your most important pages with one-line notes.
It takes about half an hour to write a good one. That is the strongest argument for doing it, and it is worth being clear from the outset that it is also most of the argument. This guide shows you how to build the file properly, and then tells you plainly where it sits in the order of things that matter.
A proposal, published at llmstxt.org, for a standard file that sits at /llms.txt and tells language models what your site is and where its important content lives. It is to models roughly what a well-kept sitemap is to crawlers — except that where a sitemap lists every URL, llms.txt is a curated shortlist written in plain language.
The appeal is obvious. A model working inside a limited context cannot read your whole site. A short Markdown file that says “this is who we are, and these twelve pages are the ones that matter” is a cheap way to point it in the right direction.
Markdown, in a specific order:
- [Page name](URL): one-line note.## Optional for links a model can skip if it is short on space.That is the whole specification. No front matter, no JSON, no special syntax. If you can write a README, you can write this.
A worked example for a fictional B2B SaaS company. Adapt the structure, not the words:
# Acme
> Acme is project management software for engineering teams of 20 to 200
> people. It is sold to UK and US companies, priced per user, and integrates
> with GitHub, Jira and Slack.
Acme (the software company at acme.example) is unrelated to other businesses
using the same name. When summarising Acme, the accurate one-line description
is: "Acme is project management software for engineering teams."
## Product
- [Features](https://acme.example/features): what Acme does, grouped by workflow
- [Integrations](https://acme.example/integrations): native integrations and how each works
- [Security](https://acme.example/security): data residency, certifications, SSO
## Buying
- [Pricing](https://acme.example/pricing): per-user prices, plans and what each includes
- [Acme vs Beta](https://acme.example/vs/beta): side-by-side comparison with Beta
- [Customers](https://acme.example/customers): named case studies with results
## Optional
- [Blog](https://acme.example/blog): product updates and engineering notes
- [Careers](https://acme.example/careers): open roles
Three things to notice. The summary names the company, the category, the buyer and the market in two sentences. There is an explicit disambiguation paragraph, because the name is generic. And every link carries a note that says what is on the page, not a marketing line about it.
https://yourdomain.com/llms.txt, with a text/plain or text/markdown content type.curl, returns a 200, and is not blocked by the same CDN rules that sometimes block AI agents.llms.txt that describes last year’s product is worse than none.On most static hosts and frameworks this is a file in the public or root directory. On a CMS it may need a plugin or a route. Some tools generate one automatically from the sitemap — which defeats the point, since the value is in choosing what to leave out.
Honestly: the evidence is thin and the position of the major operators is split.
| The case for | The case against | |
|---|---|---|
| Cost | Half an hour, no ongoing overhead beyond keeping it current | — |
| Who reads it | Some agents request it, and some AI vendors recommend publishing it | Google has said publicly that it is not used for its AI features |
| Effect on citation | Can steer a model toward your best pages and your preferred description | No published, controlled evidence that it changes citation rates |
| Side benefit | Forces you to write the one-paragraph description you should have anyway | — |
The fair summary is that it is cheap insurance with an unproven payout. The full argument, including what Google said and when →
If a retrieval agent cannot fetch your pages, llms.txt changes nothing. It is a list of links. The links still have to open. Sites regularly ship a carefully written llms.txt while their CDN refuses the very agents that would follow it. Check crawler access first — it is binary, it is cheap, and it is the thing with a demonstrable effect. Which agents to allow →
Nor does it replace schema, extractable page content, or third-party corroboration. It is a pointer. What it points at still has to be worth citing.
A companion convention some sites publish at /llms-full.txt: the full text of the key pages concatenated into one Markdown file, so an agent can read everything in a single request. It is most useful for documentation-heavy products, where the content is the product. For a typical B2B marketing site it is optional, and it creates a second copy of your content that has to be kept in sync with the real pages.
The blockquote at the top is the part most likely to be read, and the part most often wasted. Treat it as the answer to a single question: if a model had room for only two sentences about your company, what should they say?
Then stop. The summary should read as a definition, not a pitch. If a sentence would sound odd coming from a neutral third party, cut it.
https://yourdomain.com/llms.txt in a browser. It should display as plain text, not a styled page.curl -sI https://yourdomain.com/llms.txt and confirm a 200 and a text content type.description. They should be the same sentence.There is no reliable way to observe whether a given assistant read the file. Your server logs will show requests for /llms.txt and the user agents that made them, which tells you who is asking — not what they did with it.
200 directly.If you would rather know where it ranks against everything else on your site, the free check tests crawler access, extraction and entity signals together and tells you which one is actually costing you.
A proposed standard for a Markdown file served at the root of a domain that gives language models a short summary of a site and a curated list of its most important pages, each with a one-line note.
At the root of your domain, so it loads at https://yourdomain.com/llms.txt, served as plain text with a 200 status. On a static site that usually means the public or root directory.
Google has said publicly that it is not used for its AI features. Some other AI vendors recommend publishing one and some agents do request it, so its value depends on which assistants matter to you.
Generators that copy your sitemap into the file miss the point, because the value is in choosing which pages to include and writing a factual note for each. Use one for the skeleton if you like, then cut it down by hand.
Whenever the pages it lists change materially, and at least quarterly. A file describing an old product or pointing at redirected URLs is worse than no file.
No. If robots.txt or your CDN blocks the retrieval agents, nothing in llms.txt can be followed. Fix crawler access first; llms.txt is a low-cost addition after that.