Free tool · no signup · instant result
llms.txt Validator — Check the Structure, and Know What It Buys You
llms.txt is a community proposal published at llmstxt.org, not a web standard, and no major AI engine has
confirmed that it reads one. What a malformed file definitely does is waste the effort you spent writing it.
Paste a URL: this validator fetches /llms.txt, checks it against the published format —
required H1, summary blockquote, H2 link sections,
link syntax — HEAD-probes the URLs it lists for 404s, and scores the structure with the fix
for every failure. The score is structural conformance. It is not an AI-visibility number, and this page never
pretends otherwise.
Reads only /llms.txt and HEAD-samples up to 10 of the URLs it lists. Nothing is stored. The score measures structural conformance to a community proposal — not AI visibility.
What this llms.txt validator checks
The tool inspects the file and the URLs inside it. It does not and cannot check whether an AI engine reads your file, because no major vendor publishes that behaviour. A result here means the file is structurally correct, and nothing more.
- Whether
/llms.txtexists and returns 200 - Whether it is Markdown rather than an HTML fallback page
- The required H1, and whether it comes first
- The blockquote summary and its position
- H2 file-list sections and whether they are populated
- Markdown link syntax on every list item
- Absolute vs relative URLs, and duplicates
- Link notes after the
:separator - Broken links across a sample of up to 10 URLs
- Presence of a companion
/llms-full.txt
- Whether any AI engine reads your file (no vendor publishes this)
- Whether the linked pages are good (see the AI Visibility Audit)
- Crawler access rules (see the AI Crawler Checker)
- Schema markup on the linked pages (planned)
- Every listed URL (a sample of 10 is checked, not the full list)
How the score is calculated
Ten weighted checks. Any structural failure caps the score below 50, so a passing number never hides a broken file. Link reachability is scored but never flips conformance — a dead URL is a content defect, not a format violation.
| Points | Check | What has to be true |
|---|---|---|
| 20 | File served as Markdown | A 200 response at /llms.txt that is Markdown, not an HTML fallback page. |
| 15 | H1 present and first | The site or project name — the only element the format requires. |
| 12 | Populated H2 file lists | At least one ## section containing an actual list of links. |
| 10 | Valid link syntax | Every list item carries a real [name](url) hyperlink. |
| 10 | Blockquote summary | The > line under the H1 that frames the rest of the file. |
| 8 | Absolute URLs | Full https:// URLs a reader can resolve without your site as context. |
| 8 | Link descriptions | Notes after the : separator saying what each URL covers. |
| 7 | Sampled links resolve | Up to 10 listed URLs are HEAD-checked for 4xx/5xx responses. |
| 5 | No duplicate URLs | The same page is not listed twice. |
| 5 | Sane size and heading depth | Not a stub, not a sitemap dump, no headings deeper than H2. |
The llms.txt format, section by section
The structure below is the one documented at llmstxt.org. Only the H1 is required; everything else is optional but is what makes the file useful. Sections appear in this order.
# Example CompanyH1 — required. The project or site name. The only element the format mandates.> Example Company does X for Y.Blockquote — optional. A short summary carrying the key information needed to understand the rest of the file.Free-form paragraphs…Detail sections — optional. Markdown of any type except headings, for context that does not fit the summary.## DocsH2 file list — optional, repeatable. Each H2 opens a list of URLs. This is the mechanism that hands over your pages.- [Name](https://…): notesList item. A required Markdown hyperlink, then optionally a : and notes about the file.## OptionalSpecial section. URLs here may be skipped when a shorter context is needed. Use it for secondary material.What llms.txt actually is — and what it is not
llms.txt is a proposal that has been adopted without ever being ratified. Jeremy Howard of Answer.AI published it in September 2024; it lives at llmstxt.org and has no standards body behind it, unlike robots.txt, which is RFC 9309. No AI search vendor has committed to reading it, and Google has said its systems do not. Where it is demonstrably consumed is narrower than the marketing suggests: documentation platforms generate it, and AI developer tools read it when you point them at the file. That leaves a modest, honest case for publishing one — it costs an hour, it cannot hurt you, it forces someone to decide which twenty pages actually matter, and it leaves you ready if adoption widens. It is not a ranking factor. It cannot block a crawler. It adds nothing to any index and removes nothing from one.
Common llms.txt errors and how to fix them
Ranked roughly by how often they turn up. The first two account for most files that look published but are not.
- llms.txt returns your homepage HTML. A framework catch-all route answers /llms.txt with the app shell, so a 200 status hides a file that does not exist. Fix: Put the file in the static assets directory (public/, static/, wwwroot/) so it is served before the router sees it.
- The file 404s but your CMS shows it. The file was created inside the CMS rather than at the domain root, so it lives at a path like /pages/llms-txt. Fix: Serve it at exactly https://yourdomain.com/llms.txt — root path, lowercase, no extension change.
- No H1. The file opens with a paragraph or a list. The H1 naming the site is the one element the format requires. Fix: Make `# Your Site Name` the first line.
- Headings used as the file list. Each page gets its own H3 heading instead of being a list item, so nothing parses as a file list. Fix: Use `##` for the section and Markdown list items for the pages inside it.
- Relative URLs. Links written as `/docs/start` cannot be resolved by anything reading the file outside your domain context. Fix: Write full absolute URLs including the scheme and host.
- Links with no notes. A bare list of URLs forces a reader to fetch every page to learn what it covers, which defeats the purpose of the file. Fix: Append `: one clause about what this page covers` to each link.
- The whole sitemap pasted in. Several hundred URLs turn a curated map into a dump that is more likely to be truncated than read. Fix: Keep llms.txt to the pages that matter and move bulk listings to llms-full.txt or the XML sitemap.
- The file is never updated. URLs drift after a migration or a restructure, and the file quietly fills with 404s. Fix: Regenerate it in the build, or re-run this validator whenever URLs change.
llms.txt templates you can copy
Four starting points, all structurally valid. Replace the URLs and notes, save as llms.txt in your
static assets directory, deploy, then re-run the validator above to confirm it is served correctly.
# Example Company
> Example Company does one specific thing for one specific audience. State it here in a sentence.
## Core pages
- [What we do](https://example.com/services/): the service, who it is for, what it costs
- [About](https://example.com/about/): who runs the company and their background
- [Contact](https://example.com/contact/): how to reach us # Example Agency
> Example Agency runs technical SEO and content programmes for B2B SaaS companies in the EU. Founded 2019, team of 12.
Our methodology pages are the canonical source for how we work. Case studies carry real client numbers.
## Services
- [Technical SEO](https://example.com/services/technical-seo/): audits, migrations, crawl and index management
- [Content strategy](https://example.com/services/content/): topical maps, briefs, editorial operations
## Methodology
- [How we audit](https://example.com/method/audit/): the 47-check process and what each check means
- [Reporting](https://example.com/method/reporting/): the metrics we report and why
## Case studies
- [SaaS migration](https://example.com/cases/saas-migration/): 340 URL migration, traffic recovered in 6 weeks
## Optional
- [Blog](https://example.com/blog/): weekly notes on search and AI visibility
- [Team](https://example.com/team/): who works here # Example API
> Example API is a REST and webhook API for payment reconciliation. This file points to the canonical docs in Markdown.
## Getting started
- [Quickstart](https://example.com/docs/quickstart.md): authenticate and make your first call in 5 minutes
- [Authentication](https://example.com/docs/auth.md): API keys, OAuth scopes, rotation
## Reference
- [Endpoints](https://example.com/docs/api.md): every route with request and response schemas
- [Webhooks](https://example.com/docs/webhooks.md): event types, retry behaviour, signature verification
- [Errors](https://example.com/docs/errors.md): every error code and how to resolve it
## Optional
- [Changelog](https://example.com/changelog.md): versioned release notes
- [Status](https://status.example.com/): live uptime and incident history # Example Store
> Example Store sells workwear and safety equipment to trade customers in Ukraine. Around 4,300 SKUs across six brands.
## Buying information
- [Shipping and delivery](https://example.com/shipping/): carriers, timelines, costs by region
- [Returns](https://example.com/returns/): the 14-day policy and how to start a return
- [Payment methods](https://example.com/payment/): accepted cards and cash-on-delivery terms
## Categories
- [Boots](https://example.com/boots/): sizing guidance and the brands stocked
- [Outerwear](https://example.com/outerwear/): seasonal ranges and material specifications
## Optional
- [About us](https://example.com/about/): company registration and warehouse location llms.txt vs robots.txt vs sitemap.xml
Three root-level files, three different jobs. They are complements, not alternatives — and only one of them controls anything.
| llms.txt | robots.txt | sitemap.xml | |
|---|---|---|---|
| Job | Point readers at your key pages, with notes | Tell crawlers which paths they may request | List every URL you want crawled |
| Status | Community proposal (2024) | Standard — RFC 9309 | Long-established protocol |
| Format | Markdown | Plain text directives | XML |
| Controls access? | No — no blocking syntax exists | Yes, for compliant crawlers | No |
| Selective or complete? | Selective — curated | Rules, not a page list | Complete — inventory |
| Documented consumers | Docs platforms and AI dev tools; no major AI search vendor commitment | All mainstream crawlers | All mainstream search engines |
| Affects ranking? | No documented effect | Indirectly — blocked pages cannot rank | Aids discovery, not ranking |
Publishing llms.txt does not replace either of the other two. Check crawler access with the AI Crawler Checker, and the structured-data side with the Schema Validator.
Does a valid llms.txt guarantee AI visibility?
No. A perfect score here means the file is structurally correct — nothing else. Whether an AI engine cites you depends on whether its crawlers can reach you, whether your pages are indexed, and on content quality, topical relevance, authority, structure and each engine's own retrieval. A valid llms.txt is a low-cost, low-risk piece of housekeeping, not a visibility mechanism. The gap between "technically correct" and "actually cited" is what the AI Visibility Audit measures and what AEO and GEO work on.
llms.txt validator — FAQ
Is llms.txt an official standard?
No. It is a proposal published at llmstxt.org by Jeremy Howard in 2024, adopted by a number of sites and endorsed by no search or AI vendor. There is no RFC, no W3C track, and no committee. That is a reason to keep the file cheap to maintain, not a reason to skip it.
Does Google use llms.txt?
Google has said no AI-specific file is required for AI Overviews or AI Mode, and has not documented llms.txt as an input. Anyone telling you Google reads it is guessing. Google's own published position is that its AI features run on the same crawl and index as Search.
Do ChatGPT, Claude or Perplexity read llms.txt?
None of them has confirmed it. Their published documentation covers crawler user-agents and robots.txt, not llms.txt. The honest summary is that the file is cheap, harmless, and unproven — which is exactly how this validator scores it: structural conformance, no visibility claim.
Where should the llms.txt file be located?
At the root: https://example.com/llms.txt, served as text/plain or text/markdown. A subdirectory copy is not part of the proposal, and a file that returns HTML — usually your 404 page — is the single most common failure this validator reports.
What is the required structure of llms.txt?
An H1 with the site or project name is the only strictly required element. After it: an optional blockquote summary, optional free prose, then H2 sections whose bodies are Markdown link lists, each link optionally followed by a colon and a one-line note. A section named Optional carries links a reader may skip.
What is the blockquote summary for?
It is the one paragraph a machine can lift without parsing the rest — what this site is, in a sentence. Skipping it is technically valid and practically wasteful, because it is the highest-value line in the file and the cheapest to write.
What is the difference between llms.txt and llms-full.txt?
llms.txt is an index: names, links, one-line notes. llms-full.txt inlines the actual content of those pages into one long Markdown file. The first is a map, the second is the territory. This validator reports whether llms-full.txt exists but does not grade it — a file that size needs a different kind of check.
Can llms.txt block AI crawlers?
No. It has no access-control semantics at all — no Disallow, no enforcement, nothing a crawler is expected to obey. Access is robots.txt's job, and blocking at the network edge is your WAF's. Putting a "do not train on this" line in llms.txt achieves nothing.
Does a broken link in llms.txt matter?
It wastes the one thing the file is for. A 404 in the list sends any tool that follows it to nothing, and if enough entries are dead the file reads as abandoned. This validator HEAD-probes a spread of the URLs you list rather than the first ten in one section, so a rotten section does not hide behind a healthy one.
How often should llms.txt be regenerated?
Whenever the pages it points at change URL, and at least whenever you would refresh a sitemap. It is a hand-maintained index with no automatic invalidation — the failure mode is not an error message, it is a file that quietly stops describing the site.
A valid llms.txt is housekeeping. The audit is the diagnosis.
The free AI Visibility Audit runs 47 checks across crawler access, JSON-LD, metadata, content extractability, brand-as-entity signals and current AI visibility — the layers that decide whether anything gets cited — and emails a 0–100 score with the three fixes that move it most.
Run the free AI Visibility Audit