Skip to content
GrowthVector.io

llms.txt Generator and Validator: What the File Does and Does Not Do

Is an llms.txt file worth publishing, and how do you keep it valid?

Updated

An llms.txt file is a cheap Markdown map of your site, and no study to date shows that it changes what ChatGPT, Perplexity or Google cite. Google's Search Central guide says Google Search ignores the file, so it neither helps nor harms rankings.

Publish one if your site has documentation or tools that coding agents read, and treat it as a small maintenance task, not a visibility lever.

Related guides: GEO and AEO guide, SEO Oracle audit, which reports whether llms.txt is present, how search works across Google and AI platforms, GrowthVector MCP server, Claude Code best practices.

llms.txt Generator and Validator

Optional section (secondary links, written last)

Everything runs in your browser. Nothing you type or paste is uploaded, and there is no URL fetch, so paste a URL list or a sitemap body to fill the link rows. Links default to the page URL exactly as you enter it. Switch to .md links only when those Markdown files exist.

The output has no cap on sections, links or length. Titles with square brackets and URLs with parentheses or spaces are repaired, because the reference parser breaks on them. Heading marks in the notes block are removed, because the spec allows no headings there.

What the llms.txt Spec Requires

Only the H1 is required. Everything else is optional, so decide how much structure your agents need. The file is a proposal by Jeremy Howard, first published in September 2024, not an IETF or W3C standard.

The order is fixed: an optional byte order mark, the H1 with the project name, a blockquote summary, zero or more Markdown sections that contain no headings, then zero or more H2 sections that each hold a list of links. Each list item is a Markdown hyperlink, optionally followed by a colon and notes.

# Acme Docs

> Acme is a billing API for marketplaces. These pages cover setup, the API and release history.

Use the API reference for endpoint details. Quickstart assumes a test-mode key.

## Docs

- [Quickstart](https://acme.test/docs/quickstart): Send your first charge in test mode.
- [API reference](https://acme.test/docs/api): Every endpoint, parameter and error code.

## Optional

- [Changelog](https://acme.test/changelog): Release history, safe to skip for short context.

A file covers the URLs under its path, and where more than one file applies, agents should use the most specific one. That lets a docs subfolder carry its own file next to a root file.

The Optional section is a convention for secondary links an agent can skip when it needs a shorter context. In version 2 it no longer carries mechanical meaning, because the context-expansion tooling left the proposal.

The spec recommends a clean Markdown version of each page at the same URL with .md appended (page.html.md) or the extension replaced (page.md). Version 2 adds link relations so a client can find files without guessing: rel alternate with type text/markdown for a page's Markdown version, and rel describedby for the llms.txt that covers it, sent in an HTML link element or an HTTP Link header.

llms.txt is not robots.txt and not a sitemap. robots.txt signals which access is acceptable. llms.txt is used on demand, when an agent needs information about a topic. The spec says a sitemap usually covers documents too large for a context window.

What Google Says About llms.txt

Do not publish llms.txt to rank in Google. Google's Search Central guide on generative AI features says you do not need llms.txt, AI text files, special markup or Markdown to appear in Google Search, because Google Search itself does not use them.

The same guide says creating the file for other services is fine, and that doing so will neither harm nor help your visibility or rankings in Google Search. It also lists creating unnecessary AI text files such as llms.txt among the AEO and GEO tactics Google Search users can ignore. Google may still crawl and index a text file, but that is not special treatment.

To watch how your content performs in generative AI features, the guide points to the Generative AI performance report in Search Console, which does not depend on any llms.txt file.

John Mueller, a Google Search Advocate, said on his personal Bluesky account in June 2025 that no AI system currently uses llms.txt, and that the consumer chatbots fetch your pages but not the file.These are his own posts, not Google documentation.

In March 2026 he explained why log tests mislead: many sites link to every known llms.txt file, so crawlers reach them like any text file, and a self-linked cats.txt could be just as effective. In September 2026 he repeated that such tests work only because directory sites link to every file they find.

Why does Chrome audit a file that Google Search ignores?

They are different products. Lighthouse has an experimental Agentic Browsing category that includes an llms.txt audit, and testing it requires Chrome 150 or later. The docs call the category and its WebMCP support experimental and based on proposed standards.The audit measures agent readiness, not rankings. Its docs argue that without the file, agents may spend more time crawling the site to understand its structure, which is Google's claim about agents and not a measured result.Ahrefs counted 22 Lighthouse requests, roughly 1 in 1,000 fetches of the file.

What Server Logs Show About Who Fetches llms.txt

Read every log study as a count of requests, not of use. A fetch does not mean the content reached an answer, and Ahrefs calls every figure in its study a ceiling on actual consumption.

StudySample and windowResult
AhrefsAll 137,210 domains in Ahrefs Web Analytics with traffic in May 2026.Of about 38,000 domains with a valid file, 97% saw no requests in May. Of the bots that did fetch it, 77% were not AI tools, and SEO audit tools were the largest group at 21.7%. Named AI bots made 19.5% of requests.
Longato22,494 recorded requests to /llms.txt over 30 days.Verifiable LLM agents made 258 requests, 1.1% of the total. 92.2% came from agents that are neither mainstream search engines nor verifiable LLMs. OAI-SearchBot and ChatGPT-User made 209 hits across roughly 69 hosts. No request carried /llms.txt as its referrer.
BuytaertOne month of Cloudflare logs on a personal site, plus Acquia hosting.His site received 52 requests, every one from SEO audit tools. Across Acquia's hosting fleet, about 5,000 of 400 million requests (0.001%) were for llms.txt, nearly all from SEO tools.
OtterlyOne site over 90 days, file linked from the homepage.Of 62,100+ AI bot visits, 84 targeted /llms.txt. The average content page received about 265 AI bot visits.
EZY.ai83 sites with llms.txt live, 27 April to 19 July 2026, fetches by known crawlers. The panel skews to small-business sites.robots.txt versus llms.txt fetches: OpenAI 3,990 vs 7, Anthropic 3,120 vs 9, PerplexityBot 775 vs 0, Googlebot 5,125 vs 67, Meta-ExternalAgent 172 vs 193.
SE RankingNearly 300,000 domains, with a statistical and XGBoost model of citation frequency.10.13% had a file. Removing the llms.txt variable improved the model's predictions, so the study found no effect on how often a domain is cited. The result is correlational.

The studies disagree on whether any AI crawler reads the file. EZY reports that Meta-ExternalAgent fetched llms.txt more often than robots.txt, and Longato logged OpenAI agents hitting it. Ahrefs, Otterly and Buytaert see almost nothing from answer engines. The consistent part is small counts concentrated in coding agents, SEO tools and a few crawlers, with no study showing that any of it reaches answers.

Adoption figures differ because the samples differ. Ahrefs reports that 28% of the domains in its study publish a file, and says that is an upper bound because its customers skew technical.SE Ranking reports 10.13% of nearly 300,000 domains. Longato probed 4,685 hosts and only 137 returned a 200 at /llms.txt. Do not average them.

Ahrefs saw zero AI-bot requests to llms.txt URLs that returned an error. It reads this as AI tools fetching the file only when something points to it.Ahrefs did not test whether the files were well formed against the spec, which is one reason to run the validator above on your own file.

What OpenAI, Anthropic and Perplexity Say and Publish

Control AI crawlers with robots.txt, because that is the file their documentation names. None of the three crawler pages tells site owners to publish llms.txt, and none says its crawlers or answer products read the file on third-party sites. That is an absence on those pages, not a statement that they ignore it.

CompanyWhat its crawler documentation tells site ownersWhere it publishes llms.txt
OpenAIAllow OAI-SearchBot in robots.txt and allow its published IP ranges. ChatGPT-User is user-initiated, so robots.txt rules may not apply. The developer docs at developers.openai.com/llms.txt.
AnthropicThree bots, ClaudeBot, Claude-User and Claude-SearchBot. Opting out of being crawled requires changing robots.txt. The developer docs at platform.claude.com/llms.txt. The marketing domain serves no file at the root.
Perplexityrobots.txt tags for PerplexityBot and Perplexity-User. Because a user requests the fetch, Perplexity-User generally ignores robots.txt. The API docs at docs.perplexity.ai/llms.txt. The marketing domain serves no file at the root.
GoogleSearch ignores the file (see the Google section above).The Gemini API docs at ai.google.dev/gemini-api/docs/llms.txt and a Google DeepMind site file.

The pattern is consistent: the labs publish llms.txt where developers and coding agents read documentation, and not on their marketing sites. The spec page makes the same claim about OpenAI, Anthropic and Gemini.Copy that placement: put the file where an agent goes to learn your product, and keep AI-crawler access rules in your technical SEO checklist under robots.txt.

Where llms.txt Helps: Docs and Coding Agents

Publish the file if people use agents to work with your product. The spec author says llms.txt files are used most heavily for software documentation, where coding agents follow them to API references and tutorials, and that the structure also fits a business, a personal site or a school.He also says coding agents use them reliably, which is his statement and not a measurement.

The one independent signal points the same way. In the Ahrefs data, Claude-Code, Anthropic's coding agent, out-fetched every AI retrieval bot, every AI assistant and every AI training crawler except statespace-indexer and GPTBot.Ahrefs' verdict is that for visibility in ChatGPT, Perplexity or AI Overviews the file is largely decoration, and that the nearest thing to an intended audience is coding agents. Longato's advice is to create it because it is cheap, not because it will get you cited in ChatGPT today.

Documentation platforms already do the work. Mintlify generates and hosts llms.txt and llms-full.txt, serves the file at /.well-known/llms.txt too, and adds a Link header and an X-Llms-Txt header to every response. Its links carry a .md extension so tools fetch the Markdown page directly, and it cuts descriptions taken from page frontmatter at 300 characters.The llms-full.txt file is not defined on the spec page. It is a convention from documentation platforms.

For a marketing site with no docs, the file is a small task and carries no ranking upside. If you want an agent-facing interface that is actually in use, the GrowthVector MCP server shows what a structured alternative looks like, and the Claude Code best practices page covers how coding agents consume project context.

What the llms.txt Validator Checks and Which Checker Agrees

Three checkers disagree on what a valid file is, so the validator labels each message with its source. A file can pass Lighthouse and still fail the spec or the reference parser, so fix errors first and treat warnings as judgment calls.

RuleSeverityWho enforces it
No H1, or H1 not on the first lineErrorThe spec requires the H1 first. Lighthouse tests for an H1 anywhere in the file with a multiline pattern, so a file can pass the audit and fail the spec.
No Markdown link anywhereErrorLighthouse fails a file with no [text](url) link ("File does not appear to contain any links.").
File under 50 charactersErrorLighthouse ("File is suspiciously short.").
Title contains ], URL contains ) or a spaceErrorThe reference parser matches titles without ] and URLs without ). The generator repairs these automatically.
List item without a linkErrorThe spec requires a hyperlink in each file-list item.
Headings other than H2 after the H1ErrorThe spec allows no headings in the notes block and uses H2 to delimit file lists.
Text pasted as HTMLErrorA soft 200 error page served at /llms.txt looks like this.
No blockquote summaryWarningThe spec lists it, but only the H1 is required. The reference parser expects it directly after the H1.
Relative, http or duplicate URLsWarningAgents read the file out of context, so absolute https URLs are safer. Not enforced by Lighthouse.
Fragments, tracking parameters, login, cart or dashboard pathsWarningAgents cannot use these pages. Generators such as Writesonic filter them out.
Link without a noteWarningThe spec guidelines ask for brief, informative link descriptions.
Bullets other than a hyphenWarningThe reference parser matches only hyphen bullets.
Optional section not lastInfoA convention in the spec, with no mechanical meaning in version 2.

Lighthouse is the loosest checker. In its source, the pass rules are an H1 matched by a multiline pattern, at least one link, and a length of at least 50 characters. It does not check Content-Type, line order, the blockquote, H2 sections or whether links resolve.It also fetches only /llms.txt at the root of the final displayed URL, never a subpath file.

The reference parser from the spec author's organization is the strictest on link syntax. It needs a leading hyphen, a title without a closing bracket and a URL without a closing parenthesis, and it expects the H1 first, then the blockquote, then H2 sections.

Measure size as information only. The spec sets no limit and asks only that the file fit in context, so the tool reports bytes, characters and an estimated token count and never blocks or trims the output. For a larger site, the Mintlify approach of splitting an index above 100,000 characters into nested index files is one model.

Publishing and Checking Your llms.txt File

Serve the file at /llms.txt and confirm the response, not just the editor preview. The spec says nothing about Content-Type, encoding, size or caching. In practice, OpenAI, Anthropic, Perplexity and GrowthVector serve text/plain with a UTF-8 charset, and Google's Gemini docs serve text/markdown. Use text/plain; charset=utf-8 unless you have a reason not to.

curl -sI https://example.com/llms.txt
# Expect: HTTP 200 and Content-Type: text/plain; charset=utf-8
curl -s https://example.com/llms.txt | head -5
# Expect: the H1 on line 1, not an HTML page

The soft 200 is the failure to test for. A catch-all route that returns your 404 page as HTML with a 200 status passes a status check and fails every parser. In his crawl of 4,685 hosts, Longato found 137 with a 200 at /llms.txt, 111 of them as text/plain, and only 20 with real content. 23 of 175 responses with a 200 were HTML (175 counts crawl rows, 137 counts distinct hosts).

Do not trust a single tool's error message. A Lighthouse issue closed in June 2026 shows the audit once reported "Fetch of llms.txt failed" for a spec-compliant file that Google's PageSpeed Insights fetched with a 200. A maintainer said a later version would display the error more clearly.Confirm with curl, then paste the exact body into the validator.

Make the file discoverable. Agents fetch it when something points to it, so send the link relation from the pages it describes.

Link: </llms.txt>; rel="describedby", </docs/page.md>; rel="alternate"; type="text/markdown"

GrowthVector's own llms.txt is a worked example of the plain version. It has an H1, a blockquote summary and H2 sections of links to HTML pages, and no Optional section or .md page versions, so it makes no claim to the Markdown convention. To see whether any site publishes a file, run the SEO Oracle audit, which reports whether llms.txt is present with its section and link counts.

Risks and Maintenance for llms.txt

Keep the file a factual map of real pages, and regenerate it when the site changes. A stale file misleads every agent that reads it, and Ahrefs lists prompt injection through a stale or compromised file as a risk. That framing is Ahrefs' opinion, but the observation behind it is real: the largest single research crawler in its data identified itself as prompt-injection-survey/1.0.

The academic basis for manipulation concern is a 2024 paper showing that crafted website content can steer LLM search engines, tested on Bing and Perplexity, and plugin selection for GPT-4 and Claude. The paper does not study llms.txt.The practical rule follows: never put claims in the file that the visible page does not support. Mueller joked about sites writing into llms.txt that they are the top authority in their field, and a model that reads the visible page will see the gap.

Resist building a separate agent-only copy of your site. Mueller wrote that making a separate agent-friendly version to fix accessibility issues is building technical debt, and that LLMs have always read and parsed normal web pages, so HTML is not a problem for them.

Generate the file from your sitemap or CMS in the build, keep it in version control and review the diff on release. For the work that does move AI visibility, read the GEO and AEO guide, the overview of how search works across Google and AI platforms and the SEO guide.

Common Questions

My server logs show requests to /llms.txt. Does that mean AI systems are using it?

Not by itself. Ahrefs reports that 77% of the bots fetching llms.txt were not AI tools, and calls its AI numbers a ceiling because fetched does not mean read. Longato reports 92.2% of requests came from agents that are neither mainstream search engines nor verifiable LLMs, and Buytaert's 52 requests all came from SEO audit tools. Filter by user agent before you draw any conclusion.

Agents do not go looking for llms.txt, so how do I make sure the ones that do can find mine?

Link to it. Ahrefs reports zero AI-bot requests for llms.txt URLs that returned an error, so agents fetch the file only when a link, an index or an instruction points to it. The spec's v2 answer is a Link header or an HTML link element with rel describedby for the llms.txt, plus rel alternate with type text/markdown for any Markdown page versions.

Lighthouse has an llms.txt audit but Google says Search ignores the file. Which one matters for rankings?

Neither affects rankings. Google's Search Central guide says llms.txt neither helps nor harms Google Search visibility. The audit sits in Lighthouse's experimental Agentic Browsing category, which needs Chrome 150 or later. From its source, a file passes with an H1, at least one Markdown link and at least 50 characters. A missing file is Not Applicable, and a server error flags the page.

How long can the file be before it stops being useful, and when should I split it?

The spec sets no size limit. It says only that the file should stay small enough to fit in a context window, with detail behind the links. Mintlify, a documentation platform, caps auto-generated index files at 100,000 characters and moves page links into nested index files above that, which is a vendor choice, not a spec rule. Move secondary links into the Optional section first.

Do I need Markdown versions of every page, or an llms-full.txt?

Neither is required. The spec recommends clean Markdown versions of pages that agents may need, but it does not define llms-full.txt, which is a convention from documentation platforms such as Mintlify. Mueller has called separate agent-only versions of pages technical debt. If you link .md URLs, they must resolve, or the file sends agents to dead pages.

My /llms.txt returns 200 but a checker says it is invalid. What usually goes wrong?

Usually a soft 200. Longato probed 4,685 hosts: 137 returned a 200 at /llms.txt, 111 as text/plain, and only 20 held real content. 23 of 175 responses with a 200 were HTML. The reference parser also needs hyphen bullets in the form dash, title in brackets, URL in parentheses. Confirm with curl, then run the validator on the exact body.