/ 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 after an optional UTF-8 BOM.
  • 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.
  • No preamble headings. The free-form context before the first H2 cannot add H3-H6 headings.
  • 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`);

Next steps

A file that validates can still be the wrong file. The ten best-practice rules cover what no validator can check: whether the pages you listed are the ones a model actually needs, which are rarely the most-visited ones. Starting from nothing? The generator builds a valid file from your sitemap, and how to create llms.txt covers deployment stack by stack. For the syntax itself see the format reference, or read real files published by Anthropic, Cloudflare and Stripe.

Sources