/ llmtxt.info

llms.txt validator

Free llms.txt checker: paste your file or enter a URL and test it against the spec. Validation runs entirely in your browser.

Last updated:

Validator

Enter a domain (we fetch its /llms.txt) or a full file URL. The fetch runs through our edge function, so CORS restrictions on the target site do not apply.

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 that powers this page can be wired into your build: the rule codes below are stable, so a script can grep them in CI logs. A minimal Node check:

import { readFileSync } from 'node:fs';
import { parseLlmsTxt, summarize } from './validator/validate'; // same parser as this validator

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`);

Sources