Free llms.txt validator
Enter a domain to check its llms.txt file and the discovery links on its home page. No signup is needed.
This checks the file's structure. It does not give your site an agent-readiness score.
The validator requests the llms.txt file and the home page. It does not crawl the rest of the site.
How to use it
- In a browser: enter a domain in the field above.
- Without typing anything: run the checks against this site's own file.
- As an agent:
GET https://turva.dev/llms-txt-validator?url=example.comwithAccept: application/json.
The browser page and the JSON response run the same checks, listed below.
What the validator checks
Eight checks examine the file:
- It exists at /llms.txt and returns HTTP 200.
- It is plain text, not an HTML error page.
- It starts with an H1 title.
- It includes the recommended blockquote summary directly after the title. A blockquote that comes later but before the first H2 heading gets the same warning with its line number.
- H2 headings group the content.
- Markdown links parse and use absolute URLs.
- The file is small enough to read cheaply. A file over 50 KB gets a warning, and one over 256 KB is read truncated. With --strict, a warning fails the run.
- It contains no inline HTML. HTML produces a warning.
Two more checks look at the home page:
- A rel="describedby" link with a target. The validator does not fetch the target, so it cannot confirm that the target is llms.txt.
- A rel="alternate" link with type="text/markdown" to a Markdown version.
These two v2 checks report pass or information. They cannot produce a warning or a failure and do not affect the structural result. The format reached v2 in August 2026, and the version history is in llms.txt explained.
There is no total and no percentage. Eight structural checks can honestly report pass, warn or fail, and a number stacked on top of them would look like a score without measuring one.
What a valid result tells you
It tells you that the file passed the structural checks. It does not show whether an assistant reads the file, mentions your site or answers correctly.
The website and API audit measures agent readiness with an independent public scanner, published security scans and a manual review. For background on the file itself, read llms.txt explained.
What is fetched
The validator requests two documents: /llms.txt and the home page. A path in the address you enter is not used, and the report names it in an information line. Redirects are followed only to the same host or its www counterpart. The rest of the site is not crawled.
Fetched content is checked and discarded. The response uses a no-store header.
The address you enter is part of the request URL, so it appears in the Worker logs, which are kept for at most seven days as the legal page describes. Cloudflare's documentation says that when the checked site is not hosted on Cloudflare, the request to it carries your IP address in the CF-Connecting-IP header, and a Worker cannot remove that header.
Use it from an agent or CI
For JSON, request:
GET https://turva.dev/llms-txt-validator?url=example.com
Accept: application/json
The response contains the same checks and uses a no-store header.
For CI, the open npm package turva-llms-txt-validator provides the llms-txt-validate command. For a completed validation its --json output has the same target, summary and checks as the web tool's JSON. Errors are shaped differently. For an invalid domain or a fetch failure, the command returns the error and the masked target, plus a code when there is one. For an unknown option or a missing or extra target it returns the error only. The hosted tool returns the error alone for an invalid domain or a fetch failure, and the error with a docs link when the url parameter is missing.
Run:
npx turva-llms-txt-validator your-domain.com --strict
The command runs the package's strict validation. The two v2 discovery checks do not fail the build, since they are reported as information.
All free tools on this site are collected on the tools page.