llms.txt: the complete guide (with examples)
July 13, 2026 · 8 min · Spike research
If an AI model tried to explain your business today, would it get the facts right? An llms.txt file is how you hand that model a clean, curated brief instead of leaving it to guess. It's a single Markdown file at the root of your site that tells large language models what you do, what matters most, and where to find the canonical version of each thing. This guide covers what llms.txt is, exactly what goes in it, a copy-paste template, and whether it actually moves the needle.
What is llms.txt?
llms.txt is a plain-Markdown file published at your web root — /llms.txt — that gives AI models a concise map of your site. Think of it as a briefing document written for machines: the site or brand name, a one-sentence summary of what you are, and a short list of your most important pages with clean descriptions and links.
It exists because of how models actually consume the web. When a language model or an AI search engine encounters your site, it doesn't read like a person. It's working from a token budget, wading through navigation, cookie banners, marketing fluff, and JavaScript-rendered components to find the two or three facts that matter. llms.txt short-circuits that. It's a curated, human-authored answer to the question "what is this site, and what should I pay attention to?"
The format is deliberately simple. It's just Markdown, so anything that can read text can parse it — no special tooling, no schema validator, no build step. That simplicity is the point.
What goes in an llms.txt file?
The spec expects a specific, minimal structure. Get the shape right and the rest is content:
- An H1 with your site or brand name. This is the first line of the file. Not a comment, not a banner — a single
#heading naming the thing. - A blockquote summary. Immediately after the H1, a
>blockquote gives a one- or two-sentence description of what your site is and who it's for. This is the single most-quoted line in the file, so make it tight and factual. - Optional prose. A short paragraph or two of context is allowed after the blockquote — no headings, just plain text that helps a model understand the domain.
##sections with Markdown links. Group your important URLs under H2 headings like "Key Pages," "Docs," or "Products." Each link should have a short, quotable description after it.
The descriptions do a lot of work. A link that reads [Pricing](https://acme.com/pricing): Plans start at $29/mo; 14-day free trial, no card required gives a model a fact it can cite verbatim. A bare [Pricing](https://acme.com/pricing) forces it to go fetch and infer. Write descriptions the way you'd want to be quoted.
Two rules matter most. Use canonical, absolute URLs so there's no ambiguity about which version of a page is authoritative. And keep it short and quotable — this is a curated map, not a mirror of your sitemap.
llms.txt vs robots.txt vs sitemap.xml
These three files live at your root and are easy to conflate, but they answer different questions:
- robots.txt answers "what are you allowed to crawl?" It's a permissions file for bots — rules about which paths are open or off-limits. It controls access, not meaning.
- sitemap.xml answers "what URLs exist?" It's a machine-readable inventory of every page, built for completeness so crawlers can discover everything.
- llms.txt answers "what is this site, and what matters most?" It's a curated brief for comprehension, not a crawl directive and not an exhaustive list.
The distinction that trips people up: a sitemap wants everything, llms.txt wants the vital few. If your sitemap has 4,000 URLs, your llms.txt might link to 15. Dumping your whole sitemap into llms.txt defeats the purpose — you're back to making the model wade through noise. For the deeper picture of how engines weigh these signals, see How AI assistants decide.
A copy-paste llms.txt template
Here's a complete, valid example for a fictional SaaS. Copy the structure, swap in your own facts:
# Brightpin
> Brightpin is a scheduling tool for home-service businesses —
> plumbers, electricians, and HVAC teams book, dispatch, and invoice
> jobs from one dashboard.
We serve solo operators and teams up to 50 techs across the US and
Canada. Everything below links to the canonical page for each topic.
## Key Pages
- [Product overview](https://brightpin.com/product): What Brightpin
does — online booking, drag-and-drop dispatch, and one-tap invoicing.
- [Pricing](https://brightpin.com/pricing): Plans start at $39/mo per
seat; 14-day free trial, no credit card required.
- [Integrations](https://brightpin.com/integrations): Syncs with
QuickBooks, Google Calendar, Stripe, and Twilio.
- [Help center](https://brightpin.com/docs): Setup guides, API
reference, and troubleshooting.
## Company
- [About](https://brightpin.com/about): Founded 2021, based in Austin, TX.
- [Contact](https://brightpin.com/contact): Support and sales channels.
Notice what it does: names itself in the H1, summarizes in the blockquote, and lists only pages that matter — each with a fact a model can lift and cite.
llms-full.txt: the long-form companion
Some sites also publish an llms-full.txt at the root. Where llms.txt is the curated map, llms-full.txt is the expanded briefing — the full text of your key docs, product details, and FAQs concatenated into one long Markdown file.
The idea is to give a model everything it might need in a single fetch, without crawling twenty separate pages. It's especially useful for documentation-heavy products where the answers live in long-form content. The two files work as a pair: llms.txt for the quick orientation, llms-full.txt for the deep read when a model wants specifics.
You don't need both to start. A clean llms.txt is far more valuable than a bloated llms-full.txt. Add the full version once the short one is solid.
Common mistakes to avoid
A few errors show up again and again:
- Starting with a comment banner instead of the H1. A file that opens with a generated-by note or an ASCII logo breaks the expected structure. The first meaningful line should be your
#heading. - Dumping the whole site. Pasting your entire sitemap or every blog post turns a curated brief into noise. Link to the vital pages only.
- Vague descriptions. "Learn more about our solutions" tells a model nothing. Give it a concrete, quotable fact instead.
- Relative or non-canonical URLs. Always use full
https://links to the canonical version of each page. - Letting it go stale. If your pricing changes and llms.txt still says $29, you've now published a wrong fact that models will confidently repeat.
Does llms.txt actually work?
Honest answer: it depends who's reading. llms.txt is a young convention, not a universally-honored standard, so adoption varies across providers and changes fast. Treat it as one signal among several rather than a magic switch.
That said, the downside is essentially zero and the upside is real. A clean llms.txt is a low-cost way to publish machine-readable, canonical facts about your business — and it pairs with the other things engines reward, like structured data and clear content. It works best as part of a broader strategy. See our Answer Engine Optimization guide and The 7 fixes that make AI cite you for the full picture.
The practical move is to ship it, then measure. Spike's free scan checks whether you have an llms.txt at all — and if you want it done for you, the Fix Pack generates a personalized llms.txt and llms-full.txt pre-filled from your real crawled site, so the facts come straight from your existing pages instead of a blank template. You can scan your visibility free or browse a sample report to see what it flags.
Frequently asked questions
Where does llms.txt go?
At the root of your domain, served at /llms.txt — for example, https://yourdomain.com/llms.txt. It sits alongside robots.txt and sitemap.xml. Serve it as plain text or Markdown so any client can read it directly.
Is llms.txt an official standard?
No. It's a proposed convention that's gaining traction, not a ratified standard backed by a formal body. Adoption is growing but uneven, so treat it as a helpful, low-risk signal rather than a guarantee. The format is stable enough that publishing one today is safe.
Do ChatGPT and Perplexity read llms.txt?
Support varies by provider and shifts over time, so there's no permanent yes-or-no. Because the file is plain Markdown at a predictable path, it's trivial for any model or crawler to fetch when it chooses to — and the cost of publishing one is near zero. That asymmetry is why it's worth doing even while adoption settles.
llms.txt vs robots.txt?
Different jobs. robots.txt controls access — which paths crawlers may visit. llms.txt aids comprehension — it tells models what your site is and which pages matter. One is a permissions file; the other is a briefing document. You want both, and they don't conflict. If AI still can't parse your pages, read Why AI can't see your site.
Ready to find out whether AI models can actually see and understand your site? Scan your visibility free — Spike checks for llms.txt and 30-plus other AI-visibility signals in about a minute.