llms.txt has no official validator: the spec at llmstxt.org is a proposal, not a ratified standard shipped with a test suite. Third-party checkers exist, but they read syntax — they miss the three things that actually stop the file from working: your server returns it as an HTML page, the links are dead, the facts are stale. So the check is manual. Here it is.
To produce an llms.txt file, create a plain Markdown document with four required elements: an H1 heading with the site name, a blockquote with a one-line summary, H2 sections that group links to key pages, and a short description after each link. Place it at the domain root, as yoursite.com/llms.txt. Budget under an hour, including review.
This guide addresses implementation only. If you are still weighing whether to publish the file (adoption figures, who reads it, the honest case for and against), that analysis is in What is llms.txt and does your site need one?. This guide assumes the decision is made and covers solely the construction: the exact structure the specification demands, a complete example, deployment per platform, validation, and the mistakes that render the file ineffective.
What structure does the llms.txt specification require?
The specification at llmstxt.org defines a fixed skeleton; the order of parts is not negotiable:
- An H1 heading containing the site or project name. This is the only element the specification designates as strictly required.
- A blockquote placed immediately after the H1, containing a one-paragraph summary of what the site is and who it serves.
- Optional plain paragraphs or lists providing context that does not fit into the summary.
- H2 sections, each containing a Markdown link list in the form
[Page name](url): one-line description. - An H2 section with the literal name
Optional, which has reserved semantics: links an AI assistant may skip when its reading budget is constrained.
Markdown rather than XML or JSON is a deliberate choice. Language models parse Markdown natively: it survives tokenization with its structure intact, and it costs nothing to parse compared with rendered HTML. The specification fits on a single page. Read it once before writing.
How do I write the file, step by step?
- Enumerate every page a first-time visitor with purchase intent would need: product, pricing, documentation, FAQ, about, contact.
- Reduce the list to 5–15 links. llms.txt is curation, not enumeration; if every page is important, no page is.
- Write one factual sentence for the blockquote: what the site is, who it serves, and one concrete fact such as a price or a location.
- Write a description for each link: what the reader learns there, in under fifteen words, after a colon.
- Assemble the parts in the order the specification mandates: H1, blockquote, H2 sections,
Optionallast. - Save the result as a UTF-8 plain-text file named
llms.txt.
Here is a complete, valid file for an imaginary project management SaaS:
# Brightpath
> Brightpath is a project management tool for construction teams.
> Plans start at $12 per user per month; API and mobile apps included.
## Product
- [Features](https://brightpath.app/features.md): Scheduling, budgets, and site reports
- [Pricing](https://brightpath.app/pricing.md): Plans, limits, and trial terms
## Docs
- [API reference](https://brightpath.app/docs/api.md): REST endpoints and authentication
## Optional
- [Blog](https://brightpath.app/blog.md): Product updates and industry guides
Note the .md link targets: where clean Markdown versions of pages exist, the specification prefers them because they are far cheaper for a model to ingest than full HTML. Linking the standard HTML pages is acceptable if you have no Markdown versions.
Where do I put the file on my platform?
The file must resolve at the domain root, https://yourdomain.com/llms.txt, the same convention that robots.txt follows. Tools look for it at that exact path; a file in a subdirectory will never be discovered. Deployment varies by stack:
- Static sites and frameworks such as Next.js, Astro, or Nuxt serve everything in the
public/directory (or its equivalent) from the root — placellms.txtthere and deploy. - WordPress sites need the file uploaded to the web root next to robots.txt via the hosting file manager or SFTP; several plugins can also generate and serve it.
- Hosted platforms that do not permit root file access require checking the platform's documentation for custom root files or an app that serves them; a redirect from
/llms.txtto a hosted file functions as a fallback, but a direct 200 response is preferable.
Verify the deployment from the command line:
curl -sI https://yourdomain.com/llms.txt
Expect an HTTP 200 status and a text/plain or text/markdown content type. An HTML content type indicates that your platform routed the request to a rendered page, which defeats the purpose of the file.
How do I validate the finished file?
No official validator exists. llms.txt is a proposal, not a ratified standard accompanied by a test suite. Third-party checkers have appeared and will flag a malformed heading, but syntax is rarely what breaks the file. A manual checklist covers the points that actually matter:
- The URL returns raw Markdown: opening it in a browser displays plain text, not a styled page.
- Every link in the file resolves with a 200 status; a dead link wastes the small fetch budget an assistant allocates to your site.
- The summary sentence matches what the site sells today, including any prices you chose to state.
- The file has an owner and an update trigger: whenever a key page, price, or product name changes, llms.txt changes in the same release.
Which mistakes make the file useless?
- Dumping the entire sitemap into it. Enumeration is the job of sitemap.xml; llms.txt is editorial selection, and a 500-line file is as useless as no file.
- Writing marketing copy. A model summarizes. It does not applaud. "Award-winning innovative solutions" contains zero retrievable facts; product names, prices, and capabilities contain many.
- Linking pages whose content appears only after JavaScript execution. Most AI fetchers read raw HTML and execute nothing; link pages that render their facts server-side.
- Letting the file rot. A stale price in llms.txt is worse than no file, because a model will repeat it with confidence.
- Expecting a ranking boost. No major provider has confirmed reading the file, and in June 2025 Google's John Mueller stated flatly that no AI system currently uses llms.txt. Publish it as cheap optionality, not as an SEO tactic.
Frequently asked questions
How many links should llms.txt contain?
Between 5 and 15 links serves most business sites. The specification imposes no limit, but the file's value lies in selection. Documentation sites are the legitimate exception: a manual with forty well-described pages remains a curated map, not a dump.
Should I also create llms-full.txt?
Only if you operate a documentation-heavy site. llms-full.txt inlines the full text of your content into a single file so a model can load everything in one request. AI coding assistants rely on it heavily. For a typical business site, the curated link list in llms.txt suffices.
Can I generate llms.txt automatically?
Yes. Generators exist, and several will draft the file from your live pages. Treat any generated draft as a starting point: the selection of which ten pages define your business is a judgment call, and that judgment is where the file's value resides.
Written from tobecited.com, where we measure whether AI assistants name a brand or one of its competitors — llms.txt is one of the fixes we hand back, which is why we had to write the boring version of this guide. Original, kept current: https://tobecited.com/blog/how-to-create-llms-txt
Top comments (0)