Field Note
llms.txt Is Not a Second robots.txt
llms.txt works best as a clean AI-readable content map. It should not be filled with crawler directives that belong in robots.txt.
llms.txt is easy to misunderstand because it sounds like another crawler-control file.
It is not.
robots.txt tells crawlers what they are allowed to access. llms.txt tells language models what the site is about and which pages are worth understanding first.
That difference matters. When a website treats llms.txt like a second robots.txt, the file can technically exist while failing at its actual job.
The Job of robots.txt
robots.txt is a rules file.
It can allow or disallow crawlers. It can point to XML sitemaps. It can keep login pages, admin areas, internal search results, thank-you pages, and duplicate URLs out of crawler paths.
A good robots.txt is direct:
User-agent: *
Disallow: /wp-admin/
Allow: /
Sitemap: https://example.com/sitemap.xml
That is useful, but it is not content strategy. It does not explain the business, the services, the documentation, the service areas, or the pages a model should read first.
The Job of llms.txt
llms.txt is a Markdown guide for AI systems.
It should start with the name of the site, then a short summary of what the business or product does. After that, it should organize important links into clear sections.
For a local business, that usually means:
- core service pages
- service-area pages
- FAQ pages
- pricing or process guides
- contact or quote pages
- high-value articles
The format should be easy for a language model to parse:
# Example Local Service Company
> Example Local Service Company provides same-day residential and commercial services across a defined local service area.
## Services
- [Main Service](https://example.com/services/main/): Explains the primary service and booking process.
- [Specialty Service](https://example.com/services/specialty/): Covers specialty jobs, pricing factors, and limitations.
## Service Areas
- [City Service Page](https://example.com/city/): Local service page for customers in that city.
That file is not trying to control crawlers. It is trying to reduce ambiguity.
The Common Mistake
The most common mistake is mixing both ideas into one file.
The top half looks like a useful llms.txt: a summary, business facts, service pages, and blog links. Then the bottom half suddenly becomes:
User-agent: GPTBot
Allow: /
Disallow: /admin/
That belongs in robots.txt.
In llms.txt, those lines are just noise. Worse, they can confuse the purpose of the file. A model looking for a clean site map now has to separate useful content guidance from crawler-policy syntax that was never part of the Markdown spec.
What to Do Instead
Keep the files separate.
Use robots.txt for access rules:
- which crawlers can access the site
- which private or low-value paths should be excluded
- where the XML sitemap lives
Use llms.txt for understanding:
- what the site does
- who it serves
- which pages explain the core offer
- which supporting resources are worth reading
Then add llms-full.txt as the deeper companion file. That file should include cleaned-up page content from the important pages, stripped of navigation, ads, footers, and layout clutter.
The Clean Rule
If the line starts with User-agent, Allow, or Disallow, it probably belongs in robots.txt.
If the line explains a page, service, article, product, location, API, or documentation section, it probably belongs in llms.txt.
That simple separation makes the site easier for crawlers to access and easier for AI systems to understand.
The takeaway: do not create llms.txt just to say you have one. Make it a clean, useful map of the content you actually want AI systems to understand and cite.