Asva AIPower the future
Free tool · No signup · Runs in your browser

llms.txt Validator

Paste your llms.txt and check it against the llmstxt.org format in seconds: H1 title, blockquote summary, markdown links, section headings and file size. Errors, warnings and notes with line numbers, nothing uploaded.

Paste Your Content

Paste the contents of your llms.txt file below to check for common issues.

Why Validate?

Incorrect llms.txt syntax can lead to AI crawlers ignoring your site map or misinterpreting your data.

Compliance Rules

  • Start with # Title
  • Follow with > Summary
  • Use Markdown link syntax
  • Keep it under 50,000 chars
  • Include optional/required sections

An llms.txt validator checks a site’s llms.txt file against the llmstxt.org format: an H1 project name on line one, a blockquote summary under it, H2 sections of markdown links, and an optional "## Optional" section. This one runs five checks in your browser, grades each miss as an error, warning or note, and never uploads your file.

How the llms.txt validator works

The tool is a linter for one file format. It splits your file into lines, applies five checks in a fixed order, and grades each miss by how much it would hurt a model using the file. No account, no crawl, no upload.

  1. 1

    Paste the file, not the URL

    Open your live llms.txt (usually yourdomain.com/llms.txt), copy the whole thing and paste it into the box above. Paste the served file rather than the source in your CMS; the validator reads raw text exactly as a model would.

  2. 2

    Click Validate File

    The checks run in your browser. Nothing is sent to a server, so an unpublished draft or a staging file is safe to paste. Results appear directly under the editor.

  3. 3

    Read the status, then the list

    ERROR means a hard rule failed. WARNING means the file is usable but missing something the format recommends. SUCCESS means all five checks passed. Each issue names the rule and, where it applies, the line.

  4. 4

    Fix errors before warnings

    Errors are the two things a model cannot work around: no H1 on line one, or no markdown links anywhere in the file. Fix those first, then the warnings, then the note.

  5. 5

    Re-run and ship

    Validate again until you see SUCCESS, publish the file as plain text at the root of your domain, and re-validate whenever you add, remove or move a page you want answer engines to prioritise.

Every rule this validator checks

The exact checks the tool runs, in execution order. Severity decides the overall status: any error fails the file, a warning without an error gives a warning, and a file with only notes passes.

Rules run by the validator, in execution order.
RuleSeverityWhy it mattersHow to fix
Line 1 starts with "# "ErrorThe H1 is the site name, the first thing a model reads and the only required element in the llmstxt.org proposal. A file that opens with a comment, a blank line or a bare URL has no name to anchor the rest to.Make the very first line "# Your Site Name". No leading blank line, no byte-order mark, no front matter.
First line after the H1 is a blockquoteWarningThe blockquote summary tells a model what the site is and who it is for. The proposal marks it optional, hence a warning rather than an error, but it is the highest-value sentence in the file.Put a single-line blockquote after the H1. Blank lines between the title and the summary are fine, as in the llmstxt.org example; the check finds the first non-blank line and expects it to start with "> ".
A recognised H2 section existsNoteThe tool looks for an exact "## Optional", "## Documentation", "## Website" or "## Resources" heading. Sections group links by purpose; "## Optional" marks links a model can skip when context is tight.Group links under H2 headings and use "## Optional" for secondary pages. Other heading names are valid for the format; they just will not clear this note.
At least one markdown linkErrorllms.txt is an index; its job is to point a model at pages worth reading. A file with only prose, or bare URLs instead of [text](url) links, gives a model nothing to follow.Write every link as "- [Page title](https://example.com/path): one-line note". Bare URLs do not count; the check needs square brackets followed by parentheses.
File is 50,000 characters or fewerWarningThe file is meant to be read whole. Past 50,000 characters a model with a smaller context budget is likely to truncate it, and the links at the bottom silently disappear.Move long descriptions and secondary pages into llms-full.txt or "## Optional", and keep the main file to the pages you want prioritised.
The validator does not fetch your site, check that linked URLs return 200, or test whether AI crawlers can reach the file. For crawler access, run your robots.txt through the robots.txt validator linked below.

Common llms.txt failures and how to fix them

Most files fail for one of four reasons, none obvious from a quick read. Failing pattern on the left, passing version on the right.

Fails: no H1 on line 1

<!-- llms.txt for Acme -->

# Acme
> Acme makes inventory software for D2C brands.

Passes

# Acme
> Acme makes inventory software for D2C brands.

A comment, a blank line or CMS front matter on line one means the file does not start with "# ", and the validator errors at line 1. Delete everything above the H1. This is the most common failure in files exported from a headless CMS.

Fails: bare URLs, no markdown links

# Acme
> Inventory software for D2C brands.

## Docs
https://acme.com/docs/getting-started
https://acme.com/docs/api

Passes

# Acme
> Inventory software for D2C brands.

## Docs
- [Getting started](https://acme.com/docs/getting-started): Install and first sync
- [API reference](https://acme.com/docs/api): REST endpoints and auth

Bare URLs are not links in the llms.txt format. The check needs [text](url); without it the file errors with "No Markdown links found". Add a title in square brackets and, after the closing parenthesis, a colon and a short note on what the page is for.

Warns: no summary after the title

# Acme

## Docs
- [Getting started](https://acme.com/docs/start): Install guide

Passes

# Acme
> Inventory software for D2C brands.

## Docs
- [Getting started](https://acme.com/docs/start): Install guide

The summary is optional in the proposal, but it is the one line a model reads to understand what the site is before it follows any link. The check looks at the first non-blank line after the H1; if that line is a section heading or a link rather than a blockquote, you get a warning. Add a one-sentence "> " summary under the title.

Notes: links with no section headings

# Acme
> Inventory software for D2C brands.

- [Pricing](https://acme.com/pricing): Plans
- [Changelog](https://acme.com/changelog): Release notes
- [Careers](https://acme.com/careers): Open roles

Passes

# Acme
> Inventory software for D2C brands.

## Website
- [Pricing](https://acme.com/pricing): Plans

## Optional
- [Changelog](https://acme.com/changelog): Release notes
- [Careers](https://acme.com/careers): Open roles

A flat list of links validates, but the tool adds a note because nothing tells a model what to read first. Group links under H2 headings and move anything skippable under "## Optional". The proposal treats that heading name as a signal, so spell it exactly.

What the llms.txt spec requires versus what is convention

llms.txt is a proposal published at llmstxt.org, not a standard with a governing body. That matters when you read validator output: some of what tools flag is required by the proposal and some is convention that has hardened into expectation.

ElementIn the proposalWhat the validator does
H1 project nameRequired. The only mandatory element.Error if line 1 is not an H1.
Blockquote summaryOptional, but described as the key information about the project.Warning if the first non-blank line after the H1 is not a blockquote.
Free-form markdown after the summaryOptional. Paragraphs and lists, but no headings.Not checked.
H2 sections of file listsOptional. Each section is a list of markdown links with an optional note after a colon.Note if none of the four recognised headings is present; error if there are no markdown links.
"## Optional" sectionOptional, but the name is reserved: it marks links that can be skipped when context is short.Counts as a recognised section heading.
llms-full.txtA companion convention, not part of the proposal: one file with the full text of every page, for models that can take it all.Not checked. Validate it separately if you publish one.
File locationServed at /llms.txt at the root of the domain.Not checked. The tool validates content, not hosting.

The proposal exists because HTML pages carry navigation, scripts and layout that waste a model’s context window. llms.txt is the plain-text index a model reads in one pass; llms-full.txt is the expanded companion for models with room for everything. Keep the index short and let the full file be long.

One caution on crawlers. Retrieval agents such as OAI-SearchBot, ChatGPT-User, PerplexityBot and ClaudeBot fetch pages when a user asks a question; training crawlers such as GPTBot, CCBot and Google-Extended collect pages for model training. As of this writing, none of the vendors behind those agents have documented fetching llms.txt on their own. Treat it as a curated index you hand to a model, a coding assistant or a documentation platform, and make sure your robots.txt lets the retrieval agents reach the pages it links to.

Validator vs generator vs checker: which one you need

Three different jobs get bundled under one keyword. A validator takes a file you already have and tells you whether it follows the format; that is this page. A generator builds the file from a list of pages, a sitemap or a crawl, and hands back something that should validate on the first run. A checker usually means a validator, but sometimes means a tool that fetches yourdomain.com/llms.txt and reports whether the file exists and what status code it returns.

No file yet? Start with the llms.txt generator, which writes one in the right shape and lets you download it. Have a file and want to know whether it is well-formed? You are in the right place. Want to know whether it is reachable on your live domain? Open the URL in a browser: a 200 status with a text/plain response is what you want; a 404 or a redirect to an HTML page is a hosting problem this tool cannot see.

Who uses an llms.txt validator

Three roles run this tool for three different reasons.

  • SEO and AEO leads

    Add it to the pre-launch checklist next to the sitemap and robots.txt checks. The question is whether the pages you want answer engines to cite are in the file, linked correctly and grouped with the important ones first.

  • Developers and docs engineers

    Paste the build output before it ships. Most failures come from a template that emits a comment or front matter above the H1, or a docs generator that writes bare URLs. Catch it in the pipeline, not after a model has cached the broken file.

  • Agencies

    Validate every client file on the same rules so audits are comparable across accounts. The rules table on this page is the reference to hand a client when they ask why a file failed; the error, warning and note grades map directly to priority.

Frequently asked questions

What does the llms.txt validator check?+

Five things, in order: line one is an H1 title, line two is a blockquote summary, a recognised H2 section such as "## Optional" or "## Documentation" exists, the file has at least one markdown link in [text](url) form, and it is 50,000 characters or fewer. Two are errors, two are warnings, one is a note. It does not fetch your site or test your links.

Why does my llms.txt fail when it looks correct?+

Almost always one of three reasons. Something sits above the H1, such as a comment, a blank line or CMS front matter. Your links are bare URLs rather than markdown links with a title in square brackets. Or there is no blockquote summary after the H1 at all. Delete anything above the title, wrap links in [text](url), and add a one-line "> " summary under the H1.

Is an llms.txt validator the same as an llms.txt checker?+

Usually. Both names describe a tool that tests a file against the llmstxt.org format. Some tools called checkers also fetch yourdomain.com/llms.txt and report whether it exists and what status code it returns. This validator does the format check only, on text you paste, so it works on drafts and staging files that are not live yet.

Does this tool upload my file anywhere?+

No. The checks run in your browser and the text stays on your machine. That is deliberate, because many llms.txt drafts describe unreleased products or internal documentation. You can validate a file for a site that does not exist yet without sending it anywhere.

What is the difference between llms.txt and llms-full.txt?+

llms.txt is the short index: a name, a summary, and grouped links to the pages worth reading. llms-full.txt is a convention for a companion file with the full text of those pages in one document, for models and tools that can take the whole thing. The index should stay small; the full file can be long. This validator checks the index only.

Do ChatGPT, Perplexity or Claude read llms.txt automatically?+

As of this writing, none of the vendors behind the retrieval agents OAI-SearchBot, ChatGPT-User, PerplexityBot and ClaudeBot have documented fetching llms.txt on their own, and neither have the training crawlers GPTBot, CCBot and Google-Extended. The file is most useful when you hand it to a model, a coding assistant or a documentation tool directly. Publish it anyway; it costs nothing and tools are standardising on it.

Does a blank line between the title and the summary cause a warning?+

No. The check finds the first non-blank line after the H1 and expects it to be a blockquote, so a blank line between the two is fine and matches the layout of the llmstxt.org reference example. You only see a warning when that first non-blank line is something else, such as a section heading or a bare link, meaning the file has no summary at all.

How large can an llms.txt file be?+

The validator warns above 50,000 characters. The format sets no hard limit, but the file is meant to be read whole, and the longer it gets the more likely a model with a smaller context budget truncates it and loses the links at the end. If you are near the limit, move secondary pages under "## Optional" or into llms-full.txt.

Should the validator also check my robots.txt?+

It does not, but you should. llms.txt tells a model which pages matter; robots.txt decides whether retrieval agents can fetch those pages at all. A perfect llms.txt pointing at pages that block OAI-SearchBot or PerplexityBot does nothing. Run the robots.txt validator linked below to confirm the agents you care about are allowed, then re-validate the index whenever a prioritised page is added, removed or moved.