llms.txt validator
Paste your file (or a URL) and check it against the spec. Runs entirely in your browser — nothing is sent to a server.
Last updated:
Validator
Fetches go through a browser fetch(). Some sites do not
return CORS headers; in that case, paste the file content below.
What we check
The validator implements the rules from llmstxt.org:
- H1 required. Exactly one level-1 heading, first non-empty line.
- Blockquote summary. Recommended right after the H1.
- H2 file-list sections. Each section is a Markdown list of
- [name](url)items, with optional: notes. - Absolute URLs. Relative URLs are flagged as warnings.
- No content outside sections. After the first H2, only file lists are expected.
- Size guard. Files larger than 50 KB get an info-level note suggesting
llms-full.txt.
Each diagnostic includes a rule code (e.g. H1_REQUIRED, URL_RELATIVE) so you can grep for it in CI logs.
Use it from CI
The same parser is published in the open-source repository for this site, so you can wire it into your build. A minimal Node check:
import { readFileSync } from 'node:fs';
import { parseLlmsTxt, summarize } from 'llmtxt-info/validate';
const input = readFileSync('public/llms.txt', 'utf8');
const parsed = parseLlmsTxt(input);
const sum = summarize(parsed);
if (!sum.passes) {
for (const d of parsed.diagnostics) {
console.error(`${d.severity.toUpperCase()} [${d.rule}] line ${d.line}: ${d.message}`);
}
process.exit(1);
}
console.log(`OK — ${parsed.sections.length} sections, ${parsed.sizeBytes} bytes`);