llms.txt for your app: what it is and how to write one
A plain text file at the root of your site that tells an AI model what your product is. Here is what goes in it, what to leave out, and a copy-and-paste template.
- Written by
- SpacerrApps
- Published
- Reading time
- 3 min read
An llms.txt is a plain text file served at the root of your site, at /llms.txt, written in Markdown, that tells a language model what your product is, who it is for and where to read more. It is the robots.txt idea turned around: robots.txt says what a crawler may not read, and llms.txt says what a model should read first.
The proposal is from Jeremy Howard at Answer.AI, from late 2024. It is not a standard yet and no model vendor has promised to honour it. Plenty of tools already fetch it, and the cost of having one is ten minutes, so the bet is cheap.
The short answer
Create a file at https://yourapp.com/llms.txt. Put a level-one heading with your product's name, one sentence in a blockquote saying what it does and who it is for, then a short list of links to the pages that explain it best, each with a one-line description. Keep it under a screen. Serve it as text/plain or text/markdown. That is the whole thing.
What it is for
AI answer engines now recommend software by name. When somebody asks ChatGPT, Perplexity or an AI Overview what to use for a job, the answer is assembled from pages the model has read or can fetch. Most product sites are hard to read that way: the home page is a stack of components, the tagline is an image, and the pricing is behind a toggle.
An llms.txt is the version of your site that reads well to a machine. It does not replace the pages; it points at them, in the order you would want somebody to read them, with the one-line summary each page never quite carries in its own markup.
What goes in it
The proposal has a fixed shape, and following it matters more than being clever.
- A level-one heading. The product's name, nothing else.
- A blockquote. One or two sentences: what the product is, who it is for, what it costs if that fits. This is the sentence a model will quote, so write it the way you would want to be quoted.
- Optional paragraphs. Anything that does not fit a link list: what the product is not, which platforms it runs on, a note about pricing.
- Sections of links. A level-two heading, then a Markdown list. Each entry is a link, a colon, and one line saying what is on that page. Docs, pricing, comparisons, the changelog.
- An Optional section. A level-two heading literally called Optional, for links a model can skip when it is short of room.
A full-text companion at /llms-full.txt, with the pages themselves inlined, is part of the same proposal and worth adding once the short file exists.
A template
Copy this, replace the brackets, and save it as llms.txt at your site's root.
# [Product name]
> [Product] is a [what it is] for [who it is for]. [One thing that makes it different.]
> Free tier available; paid plans from $[n] a month.
[Product] runs on [platforms]. It does not [the thing people wrongly assume it does].
## Start here
- [What it does](https://yourapp.com/): the home page, with the short pitch and screenshots
- [Pricing](https://yourapp.com/pricing): every plan, what each includes, and what cancelling keeps
- [Docs](https://yourapp.com/docs): setup in five minutes, then every feature in order
## Compare
- [Product vs Competitor](https://yourapp.com/vs/competitor): where the two differ, honestly
## Optional
- [Changelog](https://yourapp.com/changelog): what shipped, week by week
- [About](https://yourapp.com/about): who builds it
What to leave out
- Marketing copy. "Supercharge your workflow" tells a model nothing it can repeat. Say what the product does in the words a user would type into a search box.
- Every page you have. A file with two hundred links is a sitemap, and there already is one. Ten to twenty links, in the order they should be read.
- Claims you cannot back. A model that quotes "the fastest" and gets corrected by a user learns to discount the source. Numbers with a date beside them travel better than adjectives.
- HTML. The file is Markdown, served as plain text. A framework that wraps it in a layout has defeated it.
How to check it works
Open the URL in a browser and read it. Then ask an AI assistant that can browse to describe your product from your site, and see whether the sentence it gives back is the one in your blockquote. If it is not, the blockquote is the thing to rewrite.
Where this fits with everything else
An llms.txt is one input. The others are pages that say plainly what a product is, structured data that names it, and listings on sites the models already read. A directory listing is the last of those: a page about your app, in plain language, on a domain that gets crawled. Full disclosure, SpacerrApps is one, it is free, and here is how to get your app cited covers the rest.
