/ llmtxt.info

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

Sources