What llms.txt is, and whether you need one
A short Markdown file at /llms.txt that tells an
AI what your site is and where the important pages are. It takes twenty
minutes to write. It won't move your rankings. It's still worth doing, for
reasons that are more modest than the hype.
What it is
Jeremy Howard of Answer.AI proposed it in September 2024, at llmstxt.org. The idea is simple: web pages are full of navigation, scripts and layout that a language model has to wade through, so give it one plain file instead. The shape is:
- a
#heading with the name of the site or product - a
>blockquote with a one-paragraph summary - any notes you want read first
##sections, each a list of links with a short description- optionally, a section called
## Optionalfor links that can be skipped
That's all. No schema, no registration, nothing to install.
What it doesn't do
It isn't robots.txt. It doesn't let anything in or keep anything out; if you want to block AI crawlers, that's still robots.txt's job.
It isn't a ranking signal. Google has said publicly that it doesn't use it, and none of the big AI companies has committed to reading it when answering questions. Anyone selling llms.txt as a way to "rank in ChatGPT" is selling you a file you can write yourself in twenty minutes.
Why bother, then
Because the cost is close to nothing and it does help in a few real places:
- People paste it. Someone deciding whether to use your product can paste your llms.txt into a chat and get an accurate answer instead of the assistant's guess.
- Agents and coding tools look for it. Assistants that browse, and tools that read documentation, increasingly check for it because it's cheaper than parsing your pages.
- It makes you write the summary. If you can't say in one paragraph what you do, for whom and for how much, your home page probably can't either.
It matters most for sites whose pages are hard for a machine to read: apps that render in the browser, documentation spread over hundreds of pages, or a product with plans and prices an AI keeps getting wrong.
A template
# Groomly
> Booking and invoicing software for independent dog groomers in the UK.
> One plan, £12 a month, no commission on bookings.
Groomly is made by Groomly Ltd, a two-person company in Bristol.
## The product
- [Features](https://groomly.com/features): bookings, reminders, invoices, client notes
- [Pricing](https://groomly.com/pricing): one plan at £12 a month; 30 days free
- [How it compares](https://groomly.com/compare): against the per-booking apps
## Help
- [Getting started](https://groomly.com/docs/start): setting up in ten minutes
- [Contact](mailto:hello@groomly.com)
## Optional
- [Changelog](https://groomly.com/changelog.md)
- [Plans as data](https://groomly.com/plans.json)
Serve it as plain text from the root of your domain. On Vercel, Netlify
or any static host that means putting it in public/llms.txt.
Then open yourdomain.com/llms.txt in a browser and check you
get the text, not your app's home page. Single-page app hosts answer every
unknown path with the app, and a crawler will take that as "no file".
Getting it right
- The summary says what it is, who it's for and what it costs
- Prices and plans match the site exactly
- Every link is a full URL, in the form your site actually serves (www or not, consistently)
- Only pages that exist and that you'd want quoted
- Facts an AI should get exactly right are linked as data (JSON or Markdown)
- Updated when the prices change; a stale llms.txt is worse than none
A working example: robinofloxley.com/llms.txt lists ten apps with their prices, links each app's own llms.txt, and points to the costs behind every price as JSON.
Check yours
The visibility check reads your llms.txt along with your sitemap, robots.txt and structured data, and tells you what's missing.
Check my site, free