The Complete Guide to llms.txt: What It Is, Why It Appeared, and How Much to Expect
A practical llms.txt guide for anyone who only knew robots.txt and sitemap.xml. We cover how to write one, real examples, what to include and what to leave out, plus realistic expectations that neither overhype nor dismiss it.

Why look at llms.txt now
Open your access logs and you'll see lines that weren't there before. Names like GPTBot, PerplexityBot, and ClaudeBot. These aren't traces of people arriving through search. They're records of generative engines reading your pages to build an answer to someone's question. A site that only ever dealt with search engines now has a brand-new kind of reader.
This reader plays by different rules. Search engines followed links, ranked pages, and showed those rankings to users as they were. Generative engines, by contrast, read a page, pull out the essentials, and fold them into their own answer as a citation. So is there a way to tell this new reader, in advance, "this is the part of our site that actually matters"? llms.txt emerged as one answer to exactly that question.
Before we dive in, though, it's worth setting expectations. llms.txt is not a master key. Uploading a single file won't suddenly make AI start citing your brand. But that doesn't mean it's something to ignore, either. It costs almost nothing to write, and for a site with solid fundamentals there's little downside. This article aims to pin down exactly where it sits between those two extremes.
What llms.txt actually is
llms.txt is a single-page Markdown file placed at your site root (for example, example.com/llms.txt). It's a curated brief meant to guide large language models (LLMs) as they make sense of your site. In short, it's a "curation" of what's worth showing, written in "Markdown."
Here's a quick analogy. If sitemap.xml is the full directory listing every room in a building, llms.txt is closer to a single-page note you hand to first-time visitors at the front desk. Instead of naming every room, it narrows things down: "What you're looking for is usually in one of these three places."
Why Markdown? An HTML page mixes navigation bars, ads, footers, JavaScript, and styling all together. It looks natural to human eyes, but a machine has to work to isolate the core text. Markdown, on the other hand, is a clean format where the hierarchy of headings, body text, and links is right there on the surface, which makes extraction easy. That's why llms.txt acts as a stripped-down, machine-friendly front door.
The structure itself is simple. At the very top you put the site or project name as an H1, and right below it a one-sentence summary as a blockquote. Then you add free-form paragraphs that give context, and finally a link section grouped under H2 headings. The format is light enough that anyone can write it directly in a text editor.
How it differs from robots.txt and sitemap.xml
All three are text files placed at the site root. But each does a different job, and a table makes the distinctions easy to keep straight.
| Aspect | robots.txt | sitemap.xml | llms.txt |
|---|---|---|---|
| Core question | Where can crawlers go | Which pages exist | What matters most |
| Nature | Access control (allow/block) | Full list (exhaustive) | Curation (selective) |
| Format | Directive text | XML | Markdown |
| Primary reader | Crawlers | Search engine indexers | LLMs and AI agents |
| Enforcement | Convention (compliance is the bot's call) | Reference hint | Reference hint |
In one line: robots.txt is the gatekeeper, sitemap.xml is the full index, and llms.txt is the recommended route. The three complement each other rather than compete. Order matters, though. If robots.txt blocks AI bots, no llms.txt, however well-written, will ever get read. So the natural flow is to allow access first, announce the full picture with a sitemap, and finally highlight the essentials with llms.txt.
Let's clear up one common misconception. llms.txt does not replace robots.txt. If you want to control access, that's still the job of robots.txt (or per-bot User-agent policies). llms.txt is a file that guides, not one that blocks.
How to actually write one: starting from a minimal example
The format clicks fastest when you see an example. Below is a skeleton llms.txt for a fictional company, "Sundown."
# Sundown
> Sundown is an inventory and ordering automation SaaS for small Singapore cafes. Shop owners manage beans and supply orders without spreadsheets.
Sundown learns from a small shop's ordering data to suggest the right stock levels and automate orders with suppliers. The documents below are the pages most essential to understanding the product accurately.
## Core Documents
- [Product Overview](https://sundown.example.com/product): What it solves and who it's for
- [Pricing](https://sundown.example.com/pricing): Features and prices by plan
- [Onboarding Guide](https://sundown.example.com/docs/getting-started): A 10-minute walkthrough to your first automated order
## Frequently Asked Questions
- [FAQ](https://sundown.example.com/faq): Data security, supplier integrations, cancellation policy
## Optional Reading
- [Blog](https://sundown.example.com/blog): Insights on running a cafe
- [Careers](https://sundown.example.com/careers): Join the team
Read it slowly and the intent shows through. The first-line H1 says what the site is about, the blockquote gives the identity in one sentence, the next paragraph supplies context, and the link section signals priority: "start here." Putting "Core Documents" up top and "Optional Reading" at the bottom isn't an accident either, it's a deliberate hierarchy.
One step further: bundling the body text too
Some implementations also serve the clean Markdown body of each page separately. For example, appending .md to the end of a page URL returns just the body as Markdown. Do this and the AI reads the body directly, with none of the cost of parsing HTML. That said, this approach is relatively easy on static site generators or documentation sites, but takes extra work on a typical site. So there's no need to force everything into place from day one.
What to include and what to leave out
The value of llms.txt comes not from filling it up but from paring it down. Copy your sitemap verbatim and list every URL, and the very meaning of curation evaporates. The following criteria make the cleanup easy.
- Include: pages that explain the identity of your product and service, pages with clear-cut facts like pricing and policies, information ready to use in an answer such as FAQs and guides, and authoritative core documents.
- Leave out: transactional pages like login, cart, and checkout, auto-generated tag and pagination URLs, duplicate or outdated pages, and dozens of marketing landing-page variants.
Here are four principles worth following as you write.
- Make the one-sentence summary truly one sentence. That single blockquote line is likely to be lifted as-is when an AI introduces you in one line. So write a clear definition, not a vague slogan.
- Add a description to every link. Don't just list URLs; jot down briefly what each page covers. A machine reads these descriptions to gauge what a page is for.
- Get the facts right. Pricing, features, and policies must match the actual pages. If a machine finds contradictions across sources, credibility drops. llms.txt presents itself as a trustworthy primary source, so exaggeration backfires.
- Keep it current. Move or remove a page while llms.txt stays the same, and all you're left with is broken links. If your site changes often, generating it automatically during the build is the safer route.
Current limits and realistic expectations
This is the part of the article where we have to be most honest. Expectations for llms.txt are often inflated. Breaking it into three pieces brings the shape into focus.
First, it's a proposal, not a standard. robots.txt became a de facto convention over a long stretch of time. llms.txt, by contrast, is a relatively recent, community-driven proposal. So there's no guarantee that every AI service reads the file. Some engines consult it, others ignore it.
Second, it has no enforcement. Like a sitemap, llms.txt is, in the end, just a hint. Nowhere is there a rule that an AI must follow this file. Used well it can help, but installing it doesn't guarantee a citation.
Third, the effect is hard to measure cleanly. Even if citations rise after you add an llms.txt, it's tricky to tell whether the cause was the llms.txt, an improvement in content quality, or some other change. So treat flat claims like "we added llms.txt and our citation rate doubled" with suspicion. It's rare that only one variable changes at a time.
So why bother? Because the return outweighs the cost. It takes an hour or two to write and almost no effort to maintain, the downside risk is small, and if some AI tools consult it, that's pure upside. Just be wary of the illusion that "I did this, so GEO is done." llms.txt is the finishing touch you lay on top of a foundation, not the foundation itself.
llms.txt can make good content easier to read, but it can't make nonexistent content appear out of thin air. The priority is always content first.
Practical checklist
A checklist for anyone applying this right now. Work through it top to bottom and the flow lines up.
- Have you allowed AI search bots in robots.txt? Block them, and everything after that is pointless.
- Is your sitemap.xml current and does it include every page you've published, with none missing?
- Have you placed llms.txt at the site root (
/llms.txt) and opened it yourself to confirm it returns a 200 response as Markdown? - Does it have the basic structure: a one-line H1, a one-sentence blockquote summary, a context paragraph, and a link section?
- Did you pick only the core pages? You didn't just copy the sitemap, did you?
- Did you add a one-line description to each link?
- Do pricing, policies, features, and other facts match the actual pages?
- Have you set things up so llms.txt updates when your page structure changes (auto-generated if possible)?
- Did you establish a baseline to compare AI engine citations before and after rollout?
That last item is really the crux. If you've changed something, you need to be able to verify the effect. So every GEO effort, llms.txt included, should be judged not by "did it" but by "did it work."
That's why the starting point is measurement. The right order is to first check which brands generative engines like ChatGPT, Perplexity, and Google AI Overview currently cite for questions in your category, and whether you're among them. Infrastructure work like llms.txt can only be evaluated against that baseline. Let's start with measurement, not guesswork. NUDGEO helps you with exactly that first step: seeing where your citations stand today.
Key takeaways
- llms.txt is a single-page Markdown file at your site root, closer to a front-desk note that curates "what matters most" for LLMs.
- robots.txt (access control), sitemap.xml (exhaustive list), and llms.txt (core selection) have different roles and complement each other; if AI bots are blocked, llms.txt won't get read, so check your access policy first.
- The value lies in paring down, not filling up, so keep only the essentials like identity, pricing, and FAQs, and leave out transactional, duplicate, and auto-generated pages.
- llms.txt is a non-binding community proposal, so installing it doesn't guarantee citations, but it costs almost nothing and is worth doing. Just don't overhype it as a master key.
- Content comes first and llms.txt is only the finishing touch, so set a baseline to measure AI engine citations before and after rollout before you can judge the effect.
Frequently asked questions
If I create an llms.txt, will ChatGPT or Perplexity cite my brand?
If I have an llms.txt, do I still need sitemap.xml or robots.txt?
Should I list every page of my site in llms.txt?
Keep reading
Is AI citing
your brand?
Check right now whether 9 AI engines are citing your brand.