llms.txt is a simple text file that tells AI language models what your website is about and which pages matter most. It is one of the easiest AI visibility improvements you can make — and most websites do not have one yet.
A well-structured llms.txt file has four sections: your site name as an H1, a brief description prefixed with >, an optional extended description, and a list of your most important pages grouped by section.
Run the LLMs.txt Auditor — it crawls your site, identifies your key pages, and generates a ready-to-deploy llms.txt file tailored to your site structure. Download and upload to your server root.
Create a plain text file named llms.txt. Follow the format above. List your 10-20 most important pages with clear descriptions. Upload to your server root so it is accessible at yoursite.com/llms.txt.
Visit yoursite.com/llms.txt in a browser. It should display plain text content — not a 404 page or formatted HTML. Check your server returns Content-Type: text/plain for the file.
llms.txt was proposed in September 2024 by Jeremy Howard of Answer.AI, and the specification lives at llmstxt.org. It is short, and it is stricter than most implementations realise. A file that "looks about right" frequently is not.
| Element | Syntax | Required? |
|---|---|---|
| Site name | A single # H1 | Yes — the only required element |
| Summary | A blockquote, prefixed > | Optional, strongly recommended |
| Free prose | Plain markdown, no headings | Optional |
| Link sections | ## H2, then a list of - [name](url): notes | Optional, zero or more |
## Optional | A reserved H2 with a special meaning | Optional |
## Optional section is not a suggestionThis is the part almost everyone gets wrong. ## Optional is a reserved section name with a defined meaning: it marks links that a consumer may skip when it needs a shorter context. It is not "a section for optional extras" and it is not a synonym for "further reading".
It follows that ## Optional must be the last section in the file. A file with three sections after it has told a machine to discard content it then presents as important, which is incoherent. If a link matters, it does not belong under ## Optional.
The notes after each link are the whole point of the format — they are what distinguishes it from a sitemap. A description that overstates what a page contains does not gain you anything: it produces a citation for a claim the page does not support, which is worse than no citation. Describe what is actually on the page.
This file has attracted a large amount of marketing nonsense, and believing any of it leads to real mistakes.
robots.txt and by what your server actually serves. Anyone selling llms.txt as an opt-out is selling a fiction.Three honest reasons, none of which depend on a vendor announcement:
If the goal is being quoted in an AI answer, the file at your root is a long way down the list of things that matter. These are the things that decide it, roughly in order.
Every AI system has its own user agents, and they do different jobs. Blocking them is a legitimate choice — but it must be a choice, not an accident inherited from a robots.txt somebody copied in 2019.
Many AI retrieval systems fetch and parse rather than executing a full browser render. Content that only exists after JavaScript has run may simply not be seen. Server-render anything you want quoted. This is the single largest technical determinant of AI visibility and it has nothing to do with llms.txt.
A retrieval system is looking for an extractable passage that answers a question. A page that states the answer in a direct sentence under a question-shaped heading is trivially quotable. A page that builds to its point over eight paragraphs of throat-clearing is not — the answer exists, but it cannot be lifted out.
Answer engines favour claims they can see supported in more than one place. Being cited, referenced and linked by other sites is as central to AI visibility as it has always been to search. There is no file you can publish that substitutes for it.
The page above covers creating and uploading the file. These are the things that then quietly break it — every one of them common, every one invisible unless checked.
/llms.txt with a 200 status. It looks fine in a browser tab. It is not a text file. Check the response, not the render.llms-full.txtA separate convention has grown up around llms-full.txt: rather than links to your content, it contains the content itself, concatenated as markdown. It is not part of the core specification and is best understood as a related practice. It suits documentation and reference material, where a machine benefits from having the whole corpus in one fetch. It suits a marketing site considerably less — and a very large file has its own costs, both to generate and to consume.
llms.txt is a plain text file placed at the root of your website (yoursite.com/llms.txt) that provides AI language models with a structured guide to your site. It follows a Markdown-like format with your site name, a brief description, and links to your most important pages with descriptions of what each covers. It is the AI equivalent of a sitemap.xml.
Be clear-eyed about this: no major search or assistant provider has publicly committed to reading llms.txt, and claims of widespread adoption circulating in the SEO industry are inference rather than confirmation. There is no published evidence that the file improves citation rates. The honest case for publishing one does not rest on vendor support — it is that the file costs almost nothing, that curating twenty links and one honest sentence each is a content audit in disguise, and that the clean, plainly-stated content the exercise produces is what retrieval systems consume however they arrive at it.
robots.txt tells crawlers which pages NOT to visit. llms.txt tells AI systems which pages ARE most important and what they cover. They serve complementary purposes. robots.txt is for access control. llms.txt is for content guidance. Both should be present on a well-optimised site.
No. llms.txt grants nothing and blocks nothing — it is content guidance, not access control. It cannot prevent your pages being crawled or used, and anyone presenting it as an opt-out is mistaken. Access is governed by robots.txt and by what your server chooses to serve.
It is a reserved section name with a defined meaning in the specification: it marks links a consumer may skip when it needs a shorter context. It does not mean "optional extras" or "further reading". Because its contents are the first thing to be discarded, it must be the last section in the file, and anything you actually want read should not be in it.
The most common causes are that the server is returning HTML rather than plain text — a framework catch-all route will serve your app shell at that path with a 200 status and it looks fine in a browser — or that the URLs listed in the file 404, or are themselves blocked in robots.txt, which is a direct self-contradiction. Check the response, not the rendered page, and re-validate every URL each time the file is regenerated.
Four things, all ahead of it. Whether the relevant crawler is permitted to fetch you at all — noting that the agent retrieving a page to answer a live question is usually distinct from the one gathering training data, so blocking the wrong one removes you from answers rather than from the training set. Whether the content exists in the served HTML rather than only after JavaScript runs. Whether the answer is stated plainly and near the top, in a passage that can be extracted. And whether other sites corroborate you.
Run the LLMs.txt Auditor and get actionable results in minutes. Pay as you go.
Audit LLMs.txt →aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical website tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.