How to check your llms.txt
To check an llms.txt file, fetch https://yourdomain.com/llms.txt and confirm five things: it returns 200 with a text content type (not your HTML 404 page), it starts with an H1 naming the site, it has a short blockquote summary and markdown links under H2 sections, every link resolves, and it's small enough to load in one request. The free AgentsReady check runs the format checks as part of its scan and also looks on your docs host. The free AgentsReady llms.txt checker (agentsready.dev/llms-txt-checker) runs all of these in a few seconds and tests the first 15 links.
From our data: As of 3 Nov 2026, 174 of the 214 software vendors in our rankings published a valid llms.txt, 28 of them only on their docs host, and 60 also published llms-full.txt.
What a checker should test
It's really there
A 200 status with text/plain or text/markdown. Many sites return 200 with their HTML "page not found" template; that isn't an llms.txt.
It starts with an H1
The proposal at llmstxt.org makes the H1 with the site or project name the only required section.
It has a summary
An optional blockquote right after the H1. In practice it's the line assistants quote, so write it.
Links sit in H2 sections
File lists are markdown list items, [name](url), with an optional note after a colon. An H2 called "Optional" marks links an agent can skip.
Every link works
Each URL should return 200, ideally as markdown (.md or Accept: text/markdown). Most validators check format only, not links.
It loads in one request
A huge file defeats the purpose. Keep llms.txt a curated index and put full text in llms-full.txt.
A checker you can paste
URL=https://example.com/llms.txt
curl -s -o llms.txt -w "status %{http_code}, type %{content_type}, %{size_download} bytes\n" "$URL"
head -3 llms.txt # expect "# Name" then "> summary"
grep -c '^## ' llms.txt # H2 sections
grep -oE '\]\(https?://[^)]+' llms.txt | cut -c3- | sort -u > links.txt
wc -l < links.txt # number of links
while read -r u; do
code=$(curl -s -o /dev/null -w "%{http_code}" "$u"); [ "$code" = 200 ] || echo "$code $u"
done < links.txt # prints only broken linksCommon failures
HTML instead of markdown
A catch-all route answers /llms.txt with your app shell. Add a real route or static file.
Links to HTML pages only
Agents load markdown far more cheaply. Link .md versions where you have them.
Stale links
Pages get renamed and the hand-written file doesn't. Generate it at build time from the same source as your sitemap.
Only on the docs host
Fine for developer platforms, but link it from your main site's footer too so agents on your homepage can find it.
Free llms.txt validators
Chat Thing's llms.txt Generator & Validator grades a file from A to F and checks link health, free and with no sign-up. The AFDocs CLI (npx afdocs check) checks that llms.txt exists, is valid, fits in one fetch and has links that resolve, as part of a docs audit. There is no official validator: llms.txt is a community proposal, not a ratified standard.
Check it yourself
You want a # heading at the top, markdown links below it, and 200 with text/plain or text/markdown at the end. If you see <!DOCTYPE html>, your server answered with a page, not an llms.txt.
curl -s -w "\n%{http_code} %{content_type}\n" https://example.com/llms.txt | head -20Questions
Is there an official llms.txt validator?
No. The format is a community proposal at llmstxt.org by Jeremy Howard, first published on 3 Sep 2024. Validators are third-party tools that check against it.
Does a valid llms.txt help with Google?
No. Google's AI optimization guide says Search doesn't use llms.txt. It helps coding agents and docs tools that read it on purpose.
How big can llms.txt be?
The proposal sets no limit. Keep it to a curated list an agent can load in one request, and move full text to llms-full.txt.
Should llms.txt be on my main domain or docs domain?
Either works; our scanner checks both. If your docs live on a subdomain, publish it there and link it from your main site.