What is llms.txt?
llms.txt is a plain-markdown file served at your domain root (yoursite.com/llms.txt) that gives AI systems a concise, curated overview of your site: what it is, a one-paragraph summary, and organized links to your most important pages with short descriptions — so a language model can find and use your best content efficiently.
That’s the 44-word version. The motivation, per the proposal: language models have small context windows relative to a whole website, and HTML pages are cluttered with navigation, scripts and boilerplate that waste those tokens. A hand-curated markdown index lets an AI system skip the archaeology and go straight to the pages that matter, with your own framing of what each one is.
The spec, walked through
The proposal comes from Jeremy Howard of Answer.AI (September 2024) and is deliberately minimal. An llms.txt file is standard markdown with a fixed skeleton, parsed top to bottom:
- 1An H1 with the site or project name. The only strictly required element.
- 2A blockquote summary directly after — a short paragraph capturing what the site is and the key context needed to read everything else.
- 3Optional free markdown (paragraphs, lists — no headings) for extra context about the site or how to interpret the files.
- 4H2-delimited sections, each containing a markdown list of links in the form: link title, URL, then an optional colon-separated one-line description.
- 5An optional “Optional” section — a specially-named H2 whose links can be skipped when an AI needs a shorter context; secondary material goes here.
The proposal also describes a companion convention: llms-full.txt, a single file containing the full expanded text of your key content (not just links) for systems that prefer to ingest everything in one fetch. It additionally suggests offering clean markdown versions of individual pages at the same URL with .md appended — same spirit, page level.
What to include, section by section
| Section | What goes there | Example entries |
|---|---|---|
| H1 + blockquote | Name plus a 2–3 sentence summary of what the site/product is and who it serves | “Acme — cookieless analytics for B2B SaaS…” |
| Docs | Getting-started guides, API reference, integration pages | Quickstart, API reference, install guide |
| Guides / Blog | Your best evergreen explainers — curated, not the full archive | Top 5–10 guides with one-line descriptions |
| Product | Pricing, feature overviews, comparison pages | Pricing, feature tour, vs-competitor pages |
| Policies | Privacy, terms, security — pages an AI may need to answer trust questions | Privacy policy, terms of service |
| Optional | Secondary material safely skipped in short contexts | Changelog, careers, press kit |
The keyword is curated. This is not a sitemap; dumping every URL defeats the purpose. Pick the pages you would hand a smart new hire on day one, and describe each in one honest line.
A full example you can adapt
Here is a complete llms.txt for a fictional SaaS, following the spec end to end — H1, blockquote summary, context paragraph, H2 link sections with descriptions, and an Optional section:
# Acme Analytics
> Acme Analytics is a cookieless web analytics platform for
> B2B SaaS teams. It identifies the companies behind anonymous
> traffic and ties marketing channels to revenue, with a free
> tier and paid plans from $19/month.
Acme is GDPR-compliant by design: no cookies, no personal
data in the analytics layer. The docs below assume the
JavaScript snippet is installed.
## Docs
- [Quickstart](https://acme.example/docs/quickstart): install the
tracking snippet and verify events in under five minutes
- [API reference](https://acme.example/docs/api): REST endpoints
for events, goals and exports, with authentication examples
- [Integrations](https://acme.example/docs/integrations): Slack,
Stripe and CRM setup guides
## Guides
- [Cookieless tracking explained](https://acme.example/guides/cookieless):
how identification works without cookies, and its limits
- [B2B attribution basics](https://acme.example/guides/attribution):
first-touch vs multi-touch, honestly compared
## Product
- [Pricing](https://acme.example/pricing): free tier, paid plans,
and what gates each feature
## Optional
- [Changelog](https://acme.example/changelog): weekly release notes
- [About](https://acme.example/about): company background and teamNote the pattern in every link line: title, URL, colon, one-line description. The descriptions are doing real work — they’re what lets a model decide which page to fetch without fetching all of them.
If you’d rather not hand-write it, our free llms.txt generator builds a spec-compliant file from your site’s pages that you can edit and download.
Honest framing: who actually reads llms.txt?
Here is the part most articles skip: llms.txt is an emerging convention, not an adopted standard. It has real momentum — thousands of sites have published one, and several developer-tool companies generate them automatically — but the major AI vendors have not committed to reading the file, and none documents llms.txt as an input to its crawlers or answers. Claims that publishing one directly improves ChatGPT or Gemini citations are, today, unproven.
Treat it as one item in a broader generative engine optimization program — after crawler access and citable content, not instead of them.
llms.txt vs robots.txt
The two files sit at the same level of your site and get confused constantly, but they answer opposite questions — robots.txt is about access, llms.txt is about comprehension:
| Aspect | robots.txt | llms.txt |
|---|---|---|
| Question it answers | May you crawl this? | What is this, and what matters here? |
| Standardization | Formal standard (RFC 9309) | Proposal (llmstxt.org), adoption uneven |
| Format | Directive syntax (User-agent, Disallow) | Plain markdown (H1, blockquote, link lists) |
| Audience | Crawlers deciding what to fetch | AI systems deciding what to read and how to frame it |
| Effect of omission | Everything crawlable by default | AI systems fall back to crawling raw HTML |
| Enforcement | Voluntary but honored by major crawlers | Voluntary; no vendor commitment documented |
They compose: robots.txt decides whether AI crawlers get in at all (see our note on CDN-level blocking — the common silent failure), and llms.txt helps whatever gets in understand what it found. Publishing llms.txt while blocking every AI crawler is decoration.
How to verify it works
Three checks, in order:
- 1Fetch it yourself. Open yoursite.com/llms.txt in a browser. It should return the raw markdown with a 200 status — not a 404, a redirect to your homepage, or an HTML-wrapped version.
- 2Confirm AI crawlers can reach it. A perfect llms.txt behind a CDN rule that 403s AI user agents is invisible. Our AI crawler checker tests how your domain responds to the major AI bots in one click.
- 3Keep it current. Stale links teach a model an outdated map of your site. Revisit the file when you ship major pages — quarterly is a fine cadence for most sites.
We practice what we describe: BusinessMCP serves its own file at businessmcp.com/llms.txt, generated and maintained alongside the guides it links. If you want to see a live production example beyond the fictional one above, that’s it.
Frequently asked questions
What is an llms.txt file?
It’s a plain-markdown file served at your domain root (/llms.txt) that gives AI systems a curated overview of your site: an H1 with the name, a blockquote summary, and H2 sections listing your key pages with one-line descriptions. It was proposed at llmstxt.org in 2024 as a way to help language models use websites efficiently.
Do ChatGPT and Google actually read llms.txt?
There is no public commitment or documentation from OpenAI, Google or Anthropic saying their systems consume llms.txt, so treat direct-benefit claims as unproven. Adoption among websites and developer tools is growing, and the cost of publishing one is near zero — which is the honest case for doing it: asymmetric upside, no downside.
What’s the difference between llms.txt and llms-full.txt?
llms.txt is an index — links to your key pages with short descriptions, which an AI follows selectively. llms-full.txt is the companion convention containing the full expanded text of your important content in a single file, for systems that prefer to ingest everything in one fetch. Start with llms.txt; add llms-full.txt if your docs are the main attraction.
Does llms.txt replace robots.txt?
No — they do opposite jobs. robots.txt (a formal standard, RFC 9309) tells crawlers what they may access; llms.txt (a proposal) tells AI systems what your site is and which pages matter. You need robots.txt and CDN settings to grant access first; llms.txt only helps systems that can already reach you.
Should I list every page of my site in llms.txt?
No. The file’s value is curation — a sitemap dump defeats the purpose and wastes the model’s context window. Include the pages you’d hand a smart new hire: core docs, your best guides, pricing, and policies, each with an honest one-line description. Put secondary material under the spec’s “Optional” section.
Sources
Richard Hopp
Founder of BusinessMCP. Every guide is written from running BusinessMCP on its own platform — the match rates, reply rates, and deliverability lessons are from our own data, not recycled blog folklore. About Richard
Turn your business into one AI-ready MCP server
Connect your tools, install one tracking script, and expose your unified data to any AI agent through a single secure endpoint.
Get started free