Tool

llms.txt Validator

The llms.txt validator checks a pasted file or one fetched from a domain against the v2 proposal. Every finding says whether it comes from the specification or from a convention.

A domain check fetches its root /llms.txt file; pasted text stays in your browser.

llms.txt
⌘↵ to run
report.log
{ }

Validate a file to see its findings.

Rules

Requirements and conventions checked

error
  • Missing H1. The proposal calls an H1 naming the project or site its only required section.
  • Second H1. The file has one H1; file-list sections use H2 headings.
  • Content before the H1. The defined order starts with an optional byte-order mark and then the H1.
  • Headings in the detail region. Between the summary and the first H2, the proposal permits any Markdown except headings.
  • Nested headings in a section. File lists sit directly under H2 headings.
  • List item without a link. Each item in a file-list section contains a Markdown link.
  • Malformed link. The expected form puts a name in brackets immediately before a URL in parentheses.
  • Empty link name or URL. A link needs both a label and a destination.
warning
  • No summary blockquote. The summary is optional, but it gives an agent context for the links below it.
  • Summary not next to the H1. The proposal places the blockquote before any free-form detail.
  • Relative URL. An agent may read the file without knowing the base URL needed to resolve it.
  • Insecure URL. The link uses http rather than https.
  • Duplicate URL. The same destination appears more than once.
  • Empty section. The H2 has no links for an agent to fetch.
  • Repeated section name. Two H2 sections use the same name.
  • Optional section out of place. Convention reserves this section for links an agent can skip, so it belongs last.
  • Prose inside a file-list section. Free-form detail belongs before the first H2.
info
  • Link without notes. Notes are optional, but they can tell an agent what it will find at the link.
  • Byte-order mark present. The proposal permits a byte-order mark but does not require one.
Reference

What the spec requires

The llms.txt v2 proposal defines an ordered Markdown file that points an agent to useful pages. Only the H1 naming the project or site is required, so a file can satisfy the proposal while offering little context.

Everything after the H1 is optional. The proposed order is a blockquote summary, free-form detail without headings, and H2 sections containing lists of links.

  1. An H1 naming the project or site. This is the only required part.
  2. A blockquote summary. It gives an agent the context needed to interpret the file.
  3. Free-form detail. This region may contain any Markdown except headings.
  4. H2 file-list sections. Each item is a Markdown link, optionally followed by a colon and notes.

What validation does not prove

A valid llms.txt file does not prove that an AI system will fetch it, use it, or cite the pages it lists. Validation only tells you how the file compares with the proposal and with clearly labelled conventions.

Google's generative AI guidance, updated 10 July 2026, says Google Search does not use AI text files and that creating one will neither help nor harm visibility or rankings. Use this validator when you have chosen to publish llms.txt, not as evidence that the file improves AI visibility.

Frequently asked questions

What does the spec actually require?

Only one H1 naming the project or site is required. The validator labels every other finding so you can distinguish the proposal's structure from a convention.

Is a pasted file uploaded anywhere?

No. The page validates pasted text in your browser. A domain check sends the domain to the site's fetch endpoint because the browser cannot read another origin directly.

Where should the file live?

Publish it at /llms.txt, or at a subpath such as /docs/llms.txt. A file applies to URLs beneath its own path.

Does llms.txt control AI crawlers?

No. The file offers context and links; it does not grant or deny crawler access. Put crawler permissions in robots.txt.