lintpage
~/tools/llms-txt-checker

llms.txt Checker

Validate your llms.txt against the llmstxt.org spec - and find out whether your robots.txt is blocking the same AI crawlers the file is written for.

§ what this tool checks

Rules applied to every scan.

llms.txt is a proposed standard for giving AI assistants a curated index of your site. It is a markdown file with a specific shape, and the most common failure is not a formatting mistake - it is a single-page app catch-all route serving your HTML shell at /llms.txt and returning a 200, so every naive checker reports the file as present. This tool fetches the file, tells you whether what came back is actually markdown, validates the structure, and separates what the spec requires from what is our opinion.

File present at /llms.txt with a 200 and a text content type
Response is markdown, not your app shell rendered as HTML
H1 project name - the one element the spec requires
Blockquote summary and well-formed "- [Title](url): notes" entries
Listed links resolve, and URLs are absolute
Whether /llms-full.txt exists, and whether robots.txt blocks AI crawlers
§ faq

Questions, answered.

What is an llms.txt file?
llms.txt is a proposed standard (spec at llmstxt.org) for a markdown file at your site root that gives AI assistants a curated index of your most useful pages. It opens with an H1 project name, a blockquote summary, and H2 sections listing links in the form "- [Title](url): notes". It is not a robots.txt - it grants no permissions and blocks nothing. It is a reading list.
Is this an llms.txt validator or a tester?
Both - the terms are used interchangeably for this file, and this page does what all three names imply. It fetches the live file (a tester), checks it against the llmstxt.org format (a validator), and reports what is missing or malformed (a checker). Every finding is labelled with its source, so you can see which rules come from the spec and which are LintPage recommendations that a valid file can ignore.
Why does my llms.txt return 200 but fail the check?
Almost always because a catch-all route is serving your application shell. Single-page frameworks answer any unmatched path with index.html and a 200 status, so /llms.txt "exists" in the sense that something came back - it is just your HTML. A model fetching that file gets a page of markup and no index. This tool checks the body, not just the status code, which is why it catches what a plain existence check cannot.
Does having an llms.txt actually help?
There is no confirmed evidence that any major AI assistant reads llms.txt to decide what to retrieve or cite today. Adoption is growing, the file is cheap to add, and it costs you nothing if it turns out to matter later - but anyone telling you it improves your AI visibility right now is guessing. If you are adding one, add it because you want a curated index to exist, and make it well-formed.
What is the difference between llms.txt and llms-full.txt?
llms.txt is an index: links and one-line notes, small enough for a model to read in full before deciding what to fetch. llms-full.txt is the expanded version - the actual content of those pages concatenated into one file. If your llms.txt has grown past a few dozen kilobytes, the content in it belongs in llms-full.txt, and the index should go back to being a list of links.
§ run the full audit

Stop guessing. Scan everything in one click.

60 automated checks across meta tags, robots.txt, Open Graph, sitemaps, headings, AI visibility, and more — free, no signup.

run a full scan →