llms.txt is a plain-text file at the root of your site that summarises what your business is and
what each of your pages covers, written for a language model rather than a person.
It sits at /llms.txt, the way robots.txt sits at /robots.txt. Ours is at
growmintech.com/llms.txt if you want to look at a real one
before reading about them.
Let me be straight about where this stands before you spend an afternoon on it. The convention is young, adoption by the major AI companies is inconsistent and mostly undocumented, and nobody can currently show you a clean before-and-after proving it moved anything. Anyone telling you otherwise is guessing with more confidence than the evidence supports. Google, for its part, has said in its own guidance that files like this neither help nor hurt visibility in Search, so whatever it does, it does for the other assistants.
The case for doing it anyway is that it costs an afternoon, it can't hurt you, and being early is close to free while being late means being one of a million sites that added one.
What problem it's meant to solve
A model reading your site has to work out what you do from HTML. Navigation, marketing copy, cookie banners, footers, and whatever else is in the way. It usually manages. It also sometimes decides that a web studio in Mississauga is a lawn care company in Missouri, because it latched onto the wrong paragraph.
llms.txt skips that reconstruction. It is a curated summary of the site, in the order you would
explain it to someone, with no markup to parse and nothing to misread.
What goes in it
The format is Markdown, which is intentional, since models read it natively. The structure that has settled into common use:
# Business Name
> One-sentence description of what you do.
A short paragraph of context: what makes this business
distinct, stated as facts rather than adjectives.
## Services
- [Service Name](https://example.com/services/name): What it is, in one line.
## Company
- [About](https://example.com/about): What this page covers.
- [Contact](https://example.com/contact): Phone, email, form.
## Optional
- [Secondary pages](https://example.com/page): Lower-priority context.
The ## Optional section has a specific meaning. It marks content that can be skipped if the
model is working with limited context, so everything above it is what you most want read.
The parts people get wrong
Writing it in marketing voice. This is the most common failure and it defeats the whole exercise. "We deliver transformative digital experiences" gives a model nothing to repeat. "We build with Next.js and React Native, no page builders, and hold every build to a 99+ Lighthouse score" gives it five facts. Write the second kind.
Listing every page. It is a map, not a sitemap. You already have one of those, it is XML, and it is for a different audience. Ours caps the article list at ten, because a growing list of every blog post you have ever published will eventually crowd out the services and location entries that answer who you are and what you do.
Letting it drift from the site. A summary that contradicts your actual pages is worse than no
summary at all. If your prices change and your llms.txt doesn't, you have published a file whose
entire job is to state facts confidently, stating a wrong one confidently.
The fix for that last one is to generate it rather than write it. Ours is built at deploy time from the same data that renders the service pages, the location pages, and the blog index, so it cannot disagree with the site, because there is only one copy of the facts. If your site has any kind of structured content layer, do this. It is the difference between a file that stays true and one that is accurate for a month.
Address, phone, hours: get these identical
Whatever contact facts you put in it have to match your site, your schema markup, and your Google Business Profile exactly, not approximately.
Nothing arbitrates between a file that says Suite 200 and a listing that says Ste. 200. The disagreement is itself the answer, and the safe thing to do with a disputed fact is to leave it out. Same for the business name, the phone number, and the hours.
The particular risk with this file is that it sits still. Your site gets edited, your listing gets edited, and the text file nobody looks at carries on saying what was true in March. Reread it whenever anything moves.
How to know it's working
Mostly you can't, at least not directly.
There is no report for this, no verification tool, and no confirmation that anything read it. What
you can do is check your server logs for requests to /llms.txt, because if AI user agents are
fetching it then something is at least consuming it. Beyond that the honest measurement is the
same as for all AI visibility work. Ask ChatGPT, Claude, and Perplexity what they know about your
business and see whether the facts they give back match the ones you published.
If a model states your starting price correctly and you only ever wrote that number in one place, that is about as close to attribution as this gets.
So do you need one?
If you have a site with more than a handful of pages and you care about AI search, write one. It is an afternoon, it is a text file, and the worst case is that it does nothing.
If you are choosing between writing an llms.txt and fixing pages that AI crawlers can't read at
all, fix the pages first. A perfect summary file
pointing at content nothing can extract is effort spent in the wrong order.
We publish one for every site we build, generated from the site's own content so it can't fall out of date. It is part of our AI SEO service, and the wider guide covers where it fits among everything else.
Frequently asked
What is an llms.txt file?
A plain-text Markdown file at the root of your site, at /llms.txt, that summarises what your business is and what each important page covers, written for a language model rather than a person. It sits where robots.txt does. The convention comes from llmstxt.org, and the format is a heading, a one-line description, a short factual paragraph, then sections of links with a one-line summary for each.
Does llms.txt help with Google rankings?
No. Google has said that AI text files like llms.txt neither help nor harm visibility in Search, including its generative AI features. The case for one is aimed at other assistants, and even there adoption is inconsistent and mostly undocumented. Nobody can currently show a clean before-and-after proving it moved anything. It costs an afternoon and can't hurt you, which is the honest extent of the argument for it.
What should I put in an llms.txt file?
Your business name as a heading, a one-sentence description, a short paragraph of facts rather than adjectives, then sections such as Services and Company listing each key page with a one-line summary. An Optional section at the end marks lower-priority pages a model can skip. Don't list every page; it's a map rather than a sitemap. Write in specifics (technologies, cities, prices) so there's something to repeat.
How do I know if AI models are reading my llms.txt?
Mostly you can't, at least not directly. There's no report, verification tool or confirmation. You can check server logs for requests to /llms.txt from AI user agents, which at least shows something is fetching it. Beyond that, ask ChatGPT, Claude and Perplexity what they know about your business and compare the facts they return with what you published. A correct starting price you only ever wrote in one place is about as close to attribution as it gets.
Should I write my llms.txt by hand or generate it?
Generate it if your site has any structured content layer. A hand-written file drifts: prices change, pages move, and the text file nobody looks at keeps stating last spring's facts confidently. Ours is built at deploy time from the same data that renders our service and location pages, so it can't disagree with the site. If you must write it by hand, reread it whenever anything on the site or your listings changes.
Sources
- The /llms.txt file, llmstxt.org
- Optimizing your website for generative AI features on Google Search, Google Search Central
- AI features and your website, Google Search Central