The llms.txt that returns HTML
4 of the 48 sites we measured answer /llms.txt with a 200 and a page of HTML. Any check that looks only at the status code calls all 4 of them healthy.
How a missing file comes back as 200
Most modern sites route every unknown path to the application shell so that client-side routing works. That shell is an HTML document, it renders fine in a browser, and it is served with a 200. So the moment a site adds a catch-all route, /llms.txt stops returning 404 — it returns the app, and every naive checker starts reporting a healthy file that does not exist.
The three-part test we use
- The content type must be text/plain or text/markdown. text/html means you got the app.
- The first non-empty line must start with #. The format’s whole structure is a heading and a list; a file that does not open with a heading is not following it.
- The body must not begin with a doctype or an html tag. This catches the fallback even when a proxy rewrites the content type, which happens more often than you would think.
A 200 means the server answered. It does not mean a file exists — and every one of the three parts of the test above is invisible to a status code.
What we found in 48 sites
- 23 had a real llms.txt — correct type, heading first line.
- 4 returned a 200 that was HTML. The status code said fine; the body said nothing.
- The rest had no llms.txt at all, which is at least honest — a 404 is a clear answer.
The one field almost nobody sets
While reading those files we also looked at Content-Signal, the field that tells a machine how the content may be used. Across all 48 sites, 0 of them set it. Not rare — absent.
That is a statement about this sample, not about the web. These are pages that compete for AI citations, so you would expect them to be ahead of average, not behind it.
Check yours in ten seconds
Open /llms.txt on your own domain. If it renders as a web page rather than as plain text, you have the fallback problem and you do not have an llms.txt. Our readability check runs the three-part test for you, and the generator writes a file that passes it.
Questions this piece raises
My /llms.txt returns 200. Is it fine?
Not necessarily. Check the content type and the first line. A 200 that returns HTML is the most common false positive in this category, and it is why a status-code check is not a check.
Does llms.txt actually improve citations?
We have not measured that, and we do not claim it. What we measured is whether the file exists and is real. Treat a real llms.txt as hygiene, not as a lever — the same way we treat six of the eight checks.
Why does the format have no standard?
It is a proposal, not a standard, and we say so on our own ai.txt. Most sites do not have one. That is exactly why a page that returns a real one is worth noticing.
Check your own page
Enter one URL and get the eight checks, including the ones that fail. Free, no signup, no score.