The format we validate against
The llmstxt.org proposal defines a markdown file at /llms.txt with these parts, in this order:
- An H1 with the site or project name. This is the only required part.
- A blockquote summary: one or two sentences a model needs to understand everything below it.
- Optional paragraphs or lists with more detail. No headings here.
- H2 sections, each a list of links in the form
- [Name](https://url): optional notes. - By convention, a section called Optional for secondary links a tool can skip when it’s short on context.
What we check
- That
/llms.txtexists, returns 200, isn’t an HTML page, and its Content-Type. - Exactly one H1, placed first; the blockquote summary; H2 sections with at least one link each.
- List items without a proper markdown link, headings before the first H2, and plain text inside link sections, each with the line number.
- Up to 20 of the linked URLs, requested live to confirm they respond without errors.
- Whether
/llms-full.txtexists. It’s optional and outside the spec, so a missing file is only a note.
What a useful llms.txt contains
Keep it short and curated. Link the pages that explain what you do, pricing, docs and key guides, not every URL in your sitemap. Write the notes after each link for a reader who has never heard of you. The spec also suggests serving markdown versions of pages at the same URL with .md appended, which are easier for models to read than HTML.
No file yet? The llms.txt generator builds one that passes this validator. We generate ours from the same page registry that builds our sitemap, so the two never drift. Versely’s llms.txt is generated too; see the case study.
An honest caveat
llms.txt is a proposal, not a standard that search engines have adopted. Whether a given AI assistant reads it is up to that assistant. Getting cited by AI depends far more on having clear, crawlable pages, and on AI crawlers being allowed in robots.txt, which you can test with the AI crawler checker.