Free tool

llms.txt Validator

A free online llms.txt checker: test that an llms.txt or llms-full.txt file has the structure readers expect. Every problem comes with its line number and a plain explanation, and the checks follow the current V2 version of the proposal.

Validate a file

Last updated

Check an llms.txt file

Fetch a live file, upload one, or paste it. You get a structure score, every problem with its line number, and a report you can download.

We also check how it is served: location, content type and redirects.
Which kind of file?
Options

Result

What does the validator check?

The checks below are the ones the validator runs, listed from the same source the code uses, so this table cannot drift out of date. An llms-full.txt file is judged on its headings and serving only, because its job is to hold text rather than links.

CheckSeverityApplies toWhy it matters
A single H1 at the topErrorBoth filesThe H1 is the site name. Parsers use the first one and get confused by several.
Blockquote summary after the H1WarningBoth filesOptional, but it is the one line most likely to be read in full.
At least one H2 sectionNote (llms.txt), Error (llms-full.txt)Both filesOnly the H1 is required by llms.txt v2, so a file without sections is valid but gives agents nothing to follow. In llms-full.txt each page starts with an H2.
H3 or deeper headingsWarningllms.txtOnly H2 marks a section in an llms.txt index. Deeper headings are fine inside llms-full.txt.
Links use Markdown link syntaxErrorllms.txtBare URLs and HTML anchors are commonly skipped.
Links are absoluteErrorllms.txtRelative paths cannot be resolved once the file is read out of context.
Each link has a descriptionWarningllms.txtA link with no description gives a model nothing to judge relevance on.
Descriptions stay on one lineWarningllms.txtA description that wraps onto the next line breaks the list item in some parsers.
A useful number of linksWarningllms.txtFewer than 3 links says little; more than 500 reads like a sitemap rather than a curated index. None at all is valid under v2 but noted.
## Optional sectionNotellms.txtSince llms.txt V2 (August 2026) it is a convention for secondary links with no special meaning, so its position is only noted.
Where the file is servedNote / WarningBoth filesThe domain root is the most widely supported place. V2 also allows files in subdirectories, which cover the pages beneath them. Any other filename is a warning.
Served as plain text or MarkdownErrorBoth filesA file returned as HTML is a web page, not an llms file.
Served without a redirectWarningBoth filesSome readers do not follow redirects for this file.
SizeWarningBoth filesAn index over 50 KB is usually doing the job of llms-full.txt. A full file over 500 KB is too large for many tools to load.

Errors will stop a parser; warnings and notes will not. A file with only warnings is still usable, so fix the errors first and treat the rest as polish.

How is the score worked out?

The score measures structure, nothing more. It does not predict rankings or whether any model will read the file. Each part below is worth the points shown. Parts that use a proportion, such as links with descriptions, earn points in proportion, so 18 described links out of 20 earn 90% of that part.

Part of the scorePointsCounts for
Single H1 at the top20Both files
Blockquote summary10Both files
H2 sections15Both files
Markdown link syntax15llms.txt only
Absolute links10llms.txt only
Links with descriptions15llms.txt only
One-line descriptions5llms.txt only
Link count between 3 and 5005llms.txt only
Served correctly (URL checks only)5Both files

The total is the points earned divided by the points available for that kind of file, as a percentage. Serving only counts when you validate by URL, since a pasted file has no server to judge.

What does your score mean?

The label beside your score comes from these bands. A high score means the file is well formed. It says nothing about whether you listed the right pages or described them well, which matters more and only you can judge.

ScoreWhat it meansWhat to do next
Well formed
90 to 100
Every structural rule passes or nearly passes.Nothing to fix. Spend the time on the descriptions: are they specific, and are these the right pages?
Usable, worth tidying
70 to 89
A reader can use the file, but some links or headings will be skipped or misread.Fix any errors first, then work through the warnings from the top.
Needs work
0 to 69
Something basic is missing or broken, often the H1, the link format or how the file is served.Fix the errors listed first. They usually account for most of the missing points.

How do you fix the most common problems?

These are the problems that cost the most points. In the report, each one links straight to its fix below.

No H1, or more than one

The first line must be a single # heading with your site or project name. Move anything above it below, and turn any second # heading into a ## section.

Before

Welcome to Northgate Tools
## Products

After

# Northgate Tools

> Hand tools for woodworkers, sold and sharpened in Leeds.

## Products

A model reads the file on its own, with no page around it to resolve a path against. Write every link in full, with the scheme and domain.

Before

- [Chisels](/chisels): Bevel-edge and mortise chisels.

After

- [Chisels](https://example.com/chisels): Bevel-edge and mortise chisels.

Each entry is one list item: a dash, the page title in square brackets, the full URL in round brackets, then a colon and the description, all on one line.

Before

- https://example.com/chisels
- <a href="https://example.com/planes">Planes</a>

After

- [Chisels](https://example.com/chisels): Bevel-edge and mortise chisels, 6mm to 38mm.
- [Hand planes](https://example.com/planes): New and restored bench and block planes.

Links without descriptions

Add a colon and one sentence that says what is on the page and who it is for. Facts beat adjectives: sizes, prices, turnaround times, versions.

Before

- [Sharpening](https://example.com/sharpening)

After

- [Sharpening](https://example.com/sharpening): Postal sharpening, GBP 6 per edge, back within 3 working days.

Served as HTML

The server is returning a web page (often a 404 page or a theme template) instead of the file. Put the file at the site root and make sure it is served as text/plain or text/markdown. The platform guides cover WordPress, Shopify and Next.js.

Before

Content-Type: text/html; charset=utf-8

After

Content-Type: text/plain; charset=utf-8

The index is too large

An llms.txt index should point to your most useful pages, not every page. Keep the pages that answer real questions, move long text into llms-full.txt, and let the sitemap list everything else.

Before

## Blog
- [Post 1](https://example.com/blog/1): ...
- [Post 2](https://example.com/blog/2): ...
(400 more)

After

## Guides
- [Choosing a first chisel](https://example.com/guides/first-chisel): Which sizes to buy first and why.

## Optional
- [Blog archive](https://example.com/blog): Every post, newest first.

What changed with llms.txt V2?

The proposal was revised in August 2026. Two changes affect validation. Files in subdirectories are now defined: /docs/llms.txt covers the pages under /docs/, so the validator notes the location rather than calling it an error. And the ## Optional section lost its special meaning, so its position is only noted. The full summary is in llms.txt V2: what changed.

Frequently asked questions

Is an llms.txt checker different from a validator?

No, they are names for the same job. Whether a tool calls itself a checker, tester, verifier or validator, it reads the file and reports what breaks the format. What differs is how much each checks; this one covers structure, links, descriptions and how the file is served, and publishes its scoring.

Is there an official specification to validate against?

There is a public proposal (the llms.txt proposal at llmstxt.org), revised as V2 in August 2026 (the V2 change notes), but no standards body behind it. These checks follow that proposal and the structure the widely used parsers expect.

Why is my score different on another validator?

There is no official score. Every validator decides its own checks and weights, so the same file can score differently from one tool to the next. This one publishes its weights in the table above, and the score breakdown in each report shows where every point came from.

What does the validator not check?

It cannot judge whether you chose the right pages, whether a description is accurate, or whether the summary describes your business well. Those decide how useful the file is, so read it through once yourself after it passes.

My file passes but nothing seems to read it.

Validation proves the file is well formed and reachable. Whether a given assistant fetches it is up to that vendor. Coding agents use llms.txt files routinely; general chat assistants are less consistent.

Why does link checking take so long?

It requests each link in turn and waits for the answer, up to 60 links. Leave it off unless you are hunting broken URLs.

Is an uploaded file stored?

No. Your browser reads the file and sends its text for checking, the same as pasting it. The file is not kept on the server.