llms.txt: structure, example and what it actually does
An llms.txt is a markdown file in your website root that tells a language model in a few lines what this site is about and which pages it should read. It takes five minutes and is routinely overrated. Both facts are in this article.
| File | Who reads it | What it governs | Required |
|---|---|---|---|
| robots.txt | All crawlers | Who may read, who may not | Yes, in practice |
| sitemap.xml | Search engines | Which addresses exist | Yes, in practice |
| llms.txt | Language models | What the site is about, what matters | No, voluntary |
| llms-full.txt | Language models | The full content in one file | No, optional |
| schema.org (JSON-LD) | Both | Facts in unambiguous form | No, works well |
The idea behind llms.txt is old and simple: give a visitor in a hurry an overview. Except here the visitor is a language model that has to answer a question and first has to decide which of your pages to read at all.
A website is awkwardly built for that purpose. Navigation, footer, consent dialogue and section headings live in the same HTML as the content, and a model with a limited context window reads all of them. The llms.txt is an attempt to shortcut that.
How it is structured
The structure that has settled has four parts.
- A level-one heading with the name of the site.
- A blockquote with one sentence on what it is about.
- Optionally a few paragraphs of context.
- Level-two headings as sections, each holding a list of links with one line of explanation.
The format is deliberately markdown rather than XML or JSON: a language model reads markdown most comfortably anyway, and a human can fix the file by hand if needed.
A complete example
# Steinweg Tax Advisors
> Tax advice for trade businesses with five to fifty staff
> across North Rhine-Westphalia. Fixed monthly fees from
> €290, digital receipts, no paper.
We work exclusively with trades and construction. Building,
electrical, plumbing, roofing. We do not take other sectors
because the specifics differ too much.
## Services
- [Bookkeeping](https://example.com/services/bookkeeping):
Monthly accounts with digital receipt submission, reports
by the tenth of the following month.
- [Payroll](https://example.com/services/payroll): Up to 50
employees, including construction payroll and levy filings.
- [Annual accounts](https://example.com/services/accounts):
Balance sheet and e-filing, with a review meeting before
submission.
## About
- [The firm](https://example.com/firm): Nine staff, based in
Solingen, founded 2004.
- [Pricing](https://example.com/pricing): Monthly fees by
receipt volume, from €290, worked examples for three sizes.
- [Contact](https://example.com/contact): Phone, email,
callback within one working day.
## Optional
- [Blog](https://example.com/blog): Articles on trades and
construction, roughly monthly.
Three things about this example matter more than they look.
The blockquote carries the whole file. It is the one part a model will certainly read in full. If it says „your partner for all tax matters“, the file was wasted. Three lines naming offer, audience and price range are the entire trick.
The line behind each link is not decoration. It decides whether a model opens the page. „Services“ helps nobody, „monthly accounts with digital receipt submission“ does.
The ## Optional section carries special meaning. It marks what a model may drop when it needs to save room. Everything above counts as important.
Where the file belongs
In the root directory, reachable at your-domain.com/llms.txt. Not in a subfolder, not behind a redirect, served as text/plain or text/markdown.
The check is one browser request. If the browser offers the file for download instead of showing it, the content type is wrong. Not fatal, but it looks like an accident.
What it does and does not do
It does two things. It saves a model context: instead of reading five pages to work out what you do, it reads thirty lines. And it sets priorities your navigation cannot express.
It does not do what it is often credited with. It does not improve Google rankings. It does not make you get cited. And it does not replace good copy: a model ends up quoting what is on the page, not what the file claims about the page.
The honest assessment is therefore: llms.txt is the last mile, not the road. Publishing it before the six basic questions are answered in your copy leaves you with a well-organised map of empty terrain. How to check whether your copy holds up is in the AEO guide.
Written yourself in five minutes
- Open a text editor and write the heading with your site name.
- Write the blockquote: offer, audience, price range. Three lines, no adjectives.
- List your five to fifteen most important pages as links, grouped into two to four sections.
- Add one line behind each link saying what is there. Concrete, not the menu label.
- Save as
llms.txtand put it in your root directory.
To skip that, put your address into our llms.txt creator. It reads your real subpages, writes the file and explains every line. Free, no sign-up, in about thirty seconds.
How we do it ourselves
This website generates its llms.txt at build time from its own data. The reason is experience: a hand-maintained file points at dead addresses after the third restructure, and nobody notices because nothing fails.
The same logic sits inside our AI Website Templates. The llms.txt ships with the package, is generated during the build, and therefore stays current even when you add or rename pages.
Frequently asked questions
No. It is a proposal from practice that spread from 2024 onwards and is supported by many tools and some providers. There is no specification obliging anyone to read it. It costs five minutes and cannot break anything.
In the root directory, reachable at your-domain.com/llms.txt, served as text/plain or text/markdown. Not in a subfolder, not behind a redirect.
llms.txt is the map, llms-full.txt is the terrain. The first lists addresses with a line of explanation, the second contains the full text of your important pages in one file. Anyone running documentation should offer both.
No. Google has said several times that the file is not used for search. It addresses assistants that read a website at the moment of the question.
With every change to your site structure, otherwise it points at addresses that no longer exist. Anyone generating it should do so at build time, then it cannot go stale.
Nothing bad. A model then reads your pages the way it reads any website. The file is an advantage, not a prerequisite.
Keep reading
- Answer Engine Optimization: how to get cited by ChatGPT AEO puts you inside the answer instead of on the result list. What language models cite, the six questions your page must answer, and how to measure it.
- AI Website Templates, What They Are and Why They Win What separates an AI website template from an ordinary one, why machine-readable context changes the economics, and when a normal template still wins.
- How to Build a Website with Claude Code (Complete 2026 Guide) Yes, Claude can build a website. This guide shows how with Claude Code, from setup to launch, and where the tool needs guardrails.
- 7 Best Vacation Rental Website Templates 2026 (Cabins and Glamping) Seven website templates for holiday cabins, vacation rentals and glamping compared on season, full price, arrival, direct enquiries, three-year cost and who owns the site.