Why llms.txt Exists
In short
llms.txt was proposed by Jeremy Howard at Answer.AI on September 3, 2024. It exists because LLMs work better with clean markdown than with rendered HTML, and because no native standard existed for sites to summarize themselves for AI crawlers.
LLM crawlers face a problem search engines never had to solve. A modern web page is mostly chrome: navigation, ads, cookie banners, JavaScript widgets, and tracking scripts.
For a generative model trying to summarize or cite a page, that chrome is noise. Plain markdown — headings, paragraphs, lists — is far easier to process than DOM trees with hundreds of nested divs.
llms.txt addresses this gap with a simple convention. A markdown file at your domain root tells an LLM what the site is, what it covers, and where the canonical content lives.
The pattern mirrors two existing standards:
- robots.txt tells crawlers what they may access.
- sitemap.xml lists every URL on the site.
- llms.txt curates the high-signal subset and describes it in plain language.
llms.txt is a convention. It is not enforced by any LLM provider as of 2026, but Anthropic, Mintlify, Cloudflare, and many others have already published llms.txt files publicly.
What is llms.txt in 2026?
In short
llms.txt in 2026 is a proposed markdown standard hosted at llmstxt.org, served at yourdomain.com/llms.txt. It gives LLM crawlers a curated H1 title, blockquote summary, and H2 sections of key page links. Anthropic, Stripe, Vercel, Cloudflare, Perplexity, and Hugging Face adopted it by August 2026.
The specification has not changed structurally since Jeremy Howard proposed it on September 3, 2024 — the llmstxt.org repo (github.com/AnswerDotAI/llms-txt) shows only minor clarification PRs in 2025 and 2026: tighter guidance on theOptional H2 section, an explicit llms-full.txt definition, and content-type recommendations.
What changed in 2026 is adoption, not syntax. The file went from ~120 known deployments in early 2025 to 800+ verified in the llmstxt.org directory by August 2026, driven by three things:
- Mintlify shipped auto-generation across every docs site it hosts (default-on since Q4 2025).
- Cloudflare and Vercel published deployment templates, collapsing setup from hours to minutes.
- Anthropic's own
anthropic.com/llms.txtbecame a reference implementation cited by dozens of docs teams.
For an LLMO strategy, llms.txt sits alongside LLMO consulting priorities like Schema.org markup, entity resolution, and citation-worthy content. It is a cheap, fast-to-ship signal, not a citation guarantee.
Format Spec Deep-Dive (with Examples)
In short
The llms.txt spec is intentionally minimal: an H1 title, a blockquote summary, optional H2 sections, and lists of links in the format `- [Name](url): description`. Everything is markdown, served as plain text.
The full spec is hosted at llmstxt.org. Here is the structure broken down with code.
Minimal valid llms.txt:
# Acme Analytics
> Acme Analytics is a B2B product analytics platform for SaaS teams. We help product managers measure feature adoption, retention, and revenue impact in one workspace.
## Docs
- [Quickstart](https://acme.example/docs/quickstart): Five-minute setup walkthrough
- [API Reference](https://acme.example/docs/api): REST + SDK reference
- [Event Schema](https://acme.example/docs/events): Recommended event taxonomy
## Blog
- [Product analytics 101](https://acme.example/blog/pa-101): Foundations for new PMs
- [Retention math](https://acme.example/blog/retention): Cohort analysis explained
## Customer Stories
- [How Linear used Acme to ship faster](https://acme.example/cases/linear)
- [Notion's onboarding overhaul](https://acme.example/cases/notion)
## About
- [About Acme](https://acme.example/about): Team, mission, funding
- [Contact](https://acme.example/contact): Support and sales
Anatomy of the file:
- Single H1. The site or product entity name. One line, no decoration.
- Blockquote summary. A 2-3 sentence elevator pitch. State who it is for, what it does, and the value.
- H2 sections. Group links by purpose: Docs, Blog, Cases, Product, About. Use whatever sections fit your navigation.
- Bulleted links. Format:
- [Page Name](url): description. Description is optional but recommended.
Keep total length manageable. A few hundred lines is the sweet spot. The file is meant to be a curated index, not a dump of every URL.
Where to Deploy and How
In short
Deploy llms.txt as a static file at your domain root, served at https://yourdomain.com/llms.txt with Content-Type text/plain or text/markdown and an HTTP 200 response. The same pattern as robots.txt and sitemap.xml.
Deployment is a static-file problem. There is no backend logic, no database, no auth.
Choose the option that matches your stack:
- Static site (Next.js, Astro, Hugo, Jekyll). Drop llms.txt into your
public/orstatic/folder and ship. - WordPress. Upload to the web root via FTP/SFTP, or use a plugin that exposes a custom file at root.
- CDN (Cloudflare, Vercel, Netlify). Add a route that serves the file with the correct content type.
- Custom server (Nginx, Apache). Place llms.txt in your document root next to robots.txt.
Verify three things after deploy:
- HTTP status:
curl -I https://yourdomain.com/llms.txtreturns 200. - Content-Type:
text/plainortext/markdown, nottext/html. - Public access: The file loads in an incognito window without auth.
llms.txt does not replace robots.txt. Keep both. robots.txt controls crawler access, llms.txt describes the curated content.
Talk to the team behind 100+ AI implementations
30-minute discovery call with a senior Alice Labs consultant. No slide deck, no sales pitch — just a scoping conversation.
Book a Discovery CallTools That Auto-Generate llms.txt
In short
Documentation platforms like Mintlify auto-generate llms.txt from your docs source. Static site generators have community plugins that emit the file at build time. For custom sites, a 30-line script can walk your sitemap and produce a draft.
You can write llms.txt by hand in under an hour for most sites. For larger sites, automation pays off because the file should stay in sync with your content.
Common automation paths:
- Mintlify. Auto-generates llms.txt and llms-full.txt for documentation sites hosted on Mintlify.
- Static site generator plugins. Community plugins exist for Next.js, Astro, Hugo, and Docusaurus. They read your content tree and emit llms.txt at build.
- Custom build script. A small script can read your sitemap.xml, filter by URL pattern, and emit a draft llms.txt. Treat the output as a starting point, then curate by hand.
Example: minimal generator pseudocode
# Pseudocode — adapt to your stack
1. Read sitemap.xml
2. Group URLs by path prefix:
/docs/* -> Docs
/blog/* -> Blog
/cases/* -> Customer Stories
3. Fetch each page's <title> and <meta description>
4. Emit:
# {Site name}
> {Site summary}
## Docs
- [{title}]({url}): {meta description}
...
5. Write to public/llms.txt
Whatever route you take, review the output before publishing. An auto-generated llms.txt full of low-quality pages is worse than a hand-curated one with twenty.
Anatomy of an llms.txt File 2026
In short
A 2026-compliant llms.txt has five blocks: H1 entity name, blockquote elevator summary, curated H2 sections with bulleted `- [Name](url): description` links, an optional `## Optional` H2 for lower-priority pages, and a paired `llms-full.txt` if the site is docs-heavy.
Every block has a specific job. Here is an annotated example using the pattern Anthropic, Stripe, and Vercel ship in 2026.
# Alice Labs # 1. H1 entity name — no tagline, no marketing chrome
> Alice Labs is a Nordic AI consultancy that
> has delivered 100+ enterprise AI
> implementations across Sweden, Denmark,
> Norway, and Finland. # 2. Blockquote — 2-3 sentence entity summary
## Docs # 3. Primary H2 section — highest-signal links
- [What is LLMO](https://alicelabs.ai/en/insights/what-is-llmo): Glossary definition
- [AI Search Optimization Guide](https://alicelabs.ai/en/insights/ai-search-optimization-guide): Pillar guide
## Services
- [AI SEO](https://alicelabs.ai/en/ai-seo): LLMO + GEO consulting
- [AI Search](https://alicelabs.ai/en/ai-search): Citation benchmarking
## Optional # 4. Optional H2 — lower priority, may be skipped
- [About](https://alicelabs.ai/en/about): Team + funding
- [Contact](https://alicelabs.ai/en/contact): Support
Two 2026 refinements worth calling out: the ## Optional section has explicit spec support (crawlers may deprioritize it), and Anthropic-style deployments now include an llms-full.txtat the same root, concatenating the actual markdown body of every linked page for one-shot ingestion.
llms.txt vs robots.txt vs sitemap.xml
In short
The three files coexist and solve different problems. robots.txt gates crawler access. sitemap.xml enumerates every URL for indexing. llms.txt curates a high-signal, human-described subset for LLMs. Publish all three at the domain root.
Confusing these three is the most common 2026 mistake we see in audits. Here is the disambiguation.
| Attribute | robots.txt | sitemap.xml | llms.txt |
|---|---|---|---|
| Format | Plain text directives | XML | Markdown |
| Purpose | Gate crawler access | Enumerate every URL | Curate + describe key pages |
| Audience | All crawlers | Search engines | LLM crawlers + retrieval |
| Size | Tens of lines | Every URL, often 10k+ | 20-50 curated URLs |
| Location | /robots.txt | /sitemap.xml | /llms.txt |
| Enforced by | Widely honored | Google, Bing, others | Convention (2026) |
Practical rule: robots.txt says what a bot may fetch, sitemap.xml says everything that exists, llms.txt says the parts an LLM should actually cite.
Want a hand auditing your AI-search readiness?
Alice Labs runs an LLMO Citation Benchmark across ChatGPT, Perplexity, and Claude - including llms.txt, Schema.org, and crawler-access checks - across 100+ Nordic enterprise implementations.
Request an LLMO auditHow LLMs Actually Consume llms.txt
In short
As of August 2026, no major LLM provider has confirmed inference-time use of llms.txt. Anthropic ships ClaudeBot and publishes its own llms.txt at anthropic.com/llms.txt. OpenAI, Perplexity, and Google discover it via web_search tool calls, not as a first-class ingestion channel.
The honest state of consumption in August 2026:
- Anthropic (Claude / ClaudeBot). Anthropic publishes anthropic.com/llms.txt as a reference. ClaudeBot fetches /llms.txt when it discovers the domain. Anthropic has not documented inference-time use.
- OpenAI (ChatGPT / OAI-SearchBot / GPTBot). OpenAI documents OAI-SearchBot and GPTBot but has not published guidance for llms.txt. Discovery happens indirectly when web_search retrieves the file.
- Perplexity (PerplexityBot). Perplexity itself publishes perplexity.ai/llms.txt. Its retrieval engine can surface llms.txt content when it appears in search results.
- Google (Gemini / Google-Extended). No public statement. Google-Extended controls training data, not llms.txt handling.
- Bing (Copilot). Bing indexes the file like any other URL. Copilot may cite it via web grounding. Indexability in Bing is a prerequisite for GPT/Copilot citation surface.
Treat llms.txt as a discoverable artifact that can enter LLM context via web_search or scheduled crawl, not as a private API to the model.
Enterprise llms.txt Patterns
In short
Enterprise llms.txt patterns in 2026 cover four content types: product docs (quickstart + API reference + SDK), changelog (dated releases as bullets), API reference (versioned endpoints), and legal (terms, privacy, DPA). Split by audience or ship a single curated file capped at 50 links.
The four enterprise patterns we ship for Nordic clients doing AI SEO consulting engagements:
- Product docs. H2 sections: Quickstart, Core concepts, Guides, API reference, SDK. This is the Stripe and Vercel pattern. Links go to markdown-friendly doc pages, not marketing.
- Changelog. Bulleted, dated release notes at a stable URL, referenced from llms.txt. LLMs use dates to resolve freshness questions ("what changed in v3.2?").
- API reference. Versioned endpoints linked individually. Stripe's llms.txt exposes each API resource (Charges, Customers, Subscriptions) as its own bullet.
- Terms, privacy, DPA. A
## Legalsection listing terms of service, privacy policy, and Data Processing Agreement. This is what LLM answer engines cite for compliance questions.
Cap the total at ~50 links. Beyond that, an LLM cannot use every entry and the signal-to-noise drops.
How to Generate llms.txt Automatically
In short
Three 2026 auto-generation paths: Mintlify auto-generates for hosted docs, Cloudflare Workers can emit llms.txt from a KV-stored URL list at the edge, and static generator scripts (Node, Python) walk sitemap.xml + fetch metadata to produce a draft on every build.
Which path fits which stack:
- Mintlify hosted docs. llms.txt and llms-full.txt are auto-generated. No config required as of Q4 2025. Verify the output; edit source docs to control it.
- Cloudflare Workers. A Worker route reads a curated URL list from Workers KV, formats it as markdown, and returns
text/plain. Setup takes ~30 minutes. Cloudflare published a template in 2026. - Vercel edge function. Same pattern in Next.js: a route handler at
app/llms.txt/route.tsreads a curated JSON list and emits markdown. Deploys on every push. - Static script (Node / Python). Read sitemap.xml, group URLs by prefix, fetch each page's
<title>and meta description, emit a draft topublic/llms.txt. Curate the output by hand before shipping.
The generation code is trivial; the curation is the work. Never publish an auto-generated file untouched.
Talk to the team behind 100+ AI implementations
30-minute discovery call with a senior Alice Labs consultant. No slide deck, no sales pitch — just a scoping conversation.
Book a Discovery CallCommon llms.txt Mistakes to Avoid
In short
The six most common 2026 mistakes: dumping the full sitemap instead of curating, vague link names like `[Pricing]`, missing H1 or blockquote summary, blocking AI crawlers in robots.txt while publishing llms.txt, hosting on a subpath instead of the root, and never refreshing after content changes.
The mistakes we catch most often in audits:
- Sitemap dump. Copying every URL from sitemap.xml into llms.txt destroys the signal. Cap at 20-50 curated links.
- Vague link text.
[Pricing]is worthless when extracted in isolation. Write[Alice Labs Pricing]. - Missing H1 or blockquote. The spec requires both. Validators at llmstxt.org reject files without them.
- Contradicting robots.txt. Publishing llms.txt while blocking ClaudeBot, OAI-SearchBot, or PerplexityBot in robots.txt is self-defeating.
- Wrong location. llms.txt must be at
yourdomain.com/llms.txt. Not/docs/llms.txt, not on a subdomain unless the subdomain is a separate LLMs-facing product. - Stale file. A file last touched at launch becomes misleading fast. Set a 90-day review cycle. See the maintenance loop below.
Validation and Ongoing Maintenance
In short
Validate llms.txt with the tools at llmstxt.org after every change. Set a 90-day review cycle to refresh links, descriptions, and the summary. Watch server logs for AI crawler activity to confirm the file is being fetched.
llms.txt is not fire-and-forget. Your site changes — new pages, renamed URLs, retired products. The file must keep up.
Establish three loops:
- Validation on every change. Run llms.txt through the validators at llmstxt.org. Confirm markdown parses, links resolve, and the structure matches the spec.
- 90-day content review. Re-check every link. Update descriptions for pages that have evolved. Add new pages that earned their place. Remove pages that no longer matter.
- Crawler-log monitoring. Filter server logs by AI user agents (ClaudeBot, OAI-SearchBot, GPTBot, PerplexityBot, Google-Extended). Track which fetch
/llms.txtand how often.
Pair these loops with downstream measurement. Track AI citations with prompt audits or tools like Otterly.ai and Profound. Watch GA4 referral traffic from chatgpt.com, perplexity.ai, and claude.ai.
llms.txt by itself does not produce citations. It works as one input in a larger LLMO system that includes Schema.org markup, entity-clear writing, fresh dates, and authoritative sourcing.
For a curated shortlist of vendors that operationalize these patterns, see our ai content optimization tools listicle.
About the Authors & Reviewers

CEO & Co-Founder, Alice Labs
CEO & Co-Founder at Alice Labs. Author of 7 research reports on AI adoption, governance and labor markets cited across EU, OECD and US benchmarks.
- 8+ years in AI strategy & implementation
- Top-5 AI Speaker, Sweden (Mindley 2025)
- 100+ enterprise AI engagements

Co-Founder, Alice Labs
Co-Founder at Alice Labs. Builds AI automation, agent workflows and integration systems that hold up in real business operations.
- AI automation & agent systems lead
- Workflow design across 100+ deployments
- Specialist in RAG, integrations & APIs
Frequently Asked Questions
Is llms.txt an official standard?
No. llms.txt is a proposed convention published by Jeremy Howard at Answer.AI on September 3, 2024 at llmstxt.org. It is not yet ratified by any standards body, and no major LLM provider has publicly committed to honoring it during inference. It is widely adopted in practice by sites including Anthropic, Mintlify, and Cloudflare.
Does Google support llms.txt?
Google has not publicly confirmed that it uses llms.txt for AI Overviews or Gemini grounding. Google does, however, respect Schema.org structured data and the Google-Extended user agent. Treat llms.txt as a complement to those signals, not a replacement.
Does Claude or ChatGPT actually read llms.txt?
Anthropic publishes its own llms.txt file, but neither Anthropic nor OpenAI has publicly stated that ClaudeBot or OAI-SearchBot use llms.txt during inference or retrieval. The convention is widely adopted; verified inference-time use is not guaranteed. The upside is asymmetric: low cost, zero downside.
Should I publish llms-full.txt as well?
Yes if your site is small or documentation-focused. llms-full.txt concatenates the actual content of your key pages into one markdown file, so an LLM can ingest the full text without crawling individual URLs. For larger sites, the linked llms.txt alone is usually enough.
Where exactly do I put the llms.txt file?
At the root of your domain, served at https://yourdomain.com/llms.txt. The location mirrors robots.txt and sitemap.xml. Make sure the response is HTTP 200, Content-Type text/plain or text/markdown, and accessible without authentication.
Does llms.txt replace robots.txt or sitemap.xml?
No. The three files coexist. robots.txt controls which crawlers may access which paths. sitemap.xml lists every URL for search engines. llms.txt curates a high-signal subset for LLM crawlers and describes it in markdown. You should publish all three.
What are common mistakes when creating llms.txt?
The most common mistakes are: dumping the entire sitemap instead of curating, using vague link names like `Pricing` instead of `Acme Pricing`, omitting the H1 or summary, blocking AI crawlers in robots.txt while publishing llms.txt, and never updating the file after content changes. Run through the llmstxt.org validators after every edit to catch structural issues.
What is the llms.txt specification format in 2025 and 2026?
The llms.txt specification, maintained at llmstxt.org since September 3, 2024, has not changed structurally in 2025 or 2026. The format remains: a single H1 with the site or product name, a blockquote of 2-3 sentence summary, then H2 sections listing links as `- [Page Name](url): description`. An optional `## Optional` section may hold lower-priority links. Serve the file at the root as text/plain or text/markdown.
Does llms.txt go on the site root or somewhere else?
llms.txt must go at the domain root, served at https://yourdomain.com/llms.txt — the exact same location pattern as robots.txt and sitemap.xml. Subdirectories, subdomains for docs, or CDN paths are not valid locations per the llmstxt.org spec. Crawlers only look at the root. The optional llms-full.txt also lives at the root (https://yourdomain.com/llms-full.txt), never inside /docs/ or /content/.
How often should I update llms.txt?
Update llms.txt whenever you ship a major content change — new product pages, renamed URLs, retired sections. Set a 90-day review cycle to re-check links, refresh descriptions, and prune dead entries. Re-validate at llmstxt.org after every change.
What is llms.txt in one sentence?
llms.txt is a markdown file served at yourdomain.com/llms.txt that gives LLM crawlers a curated H1 title, blockquote summary, and H2 sections of key page links — a low-cost signal of AI-readiness proposed by Jeremy Howard (Answer.AI) in September 2024 and adopted by 800+ domains by August 2026.
How is llms.txt different from robots.txt?
robots.txt gates crawler access with allow/disallow directives in plain text. llms.txt curates a small set of high-signal pages for LLMs and describes them in markdown. robots.txt says what a bot may fetch; llms.txt says what an LLM should cite. They coexist; publish both at the domain root.
Which LLMs actually read llms.txt?
As of August 2026, Anthropic publishes anthropic.com/llms.txt and ClaudeBot fetches /llms.txt when it discovers a domain, but Anthropic has not confirmed inference-time use. OpenAI, Perplexity, and Google discover llms.txt indirectly via web_search tool calls. Perplexity itself publishes perplexity.ai/llms.txt. Treat consumption as web-search-mediated, not private API.
Do I actually need llms.txt for my site?
If you want LLM visibility, yes — the cost is a single markdown file and the downside is zero. It becomes higher-leverage for documentation, API references, product catalogs, and content sites where LLMs benefit from a curated map. Pure brochureware with fewer than ten pages benefits less; the signal is already discoverable.
How do I write llms.txt from scratch?
Start with a single H1 (your entity name), a blockquote 2-3 sentence summary, then H2 sections (Docs, Blog, Cases) with bulleted `- [Page Name](url): description` links. Cap at 20-50 curated URLs. Save as llms.txt at your web root. Serve as text/plain or text/markdown with HTTP 200. Validate at llmstxt.org.
Does llms.txt help with LLM citations?
It is one input among many. No LLM provider guarantees citation lift from llms.txt alone. Aggarwal et al. (2024) found citation-rich content lifts generative-engine visibility up to 40%; llms.txt makes that content easier for crawlers to find. Pair it with Schema.org markup, entity resolution, and clean markdown for compounding impact.
Can I generate llms.txt automatically?
Yes. Three 2026 paths: Mintlify auto-generates for hosted docs (default-on since Q4 2025); Cloudflare Workers and Vercel edge functions can emit llms.txt from a curated URL list at request time; and a static Node or Python script can walk sitemap.xml and produce a draft at build time. Always review the output before publishing.
Does OpenAI read llms.txt?
OpenAI has not published guidance for llms.txt. OAI-SearchBot and GPTBot fetch the file if they discover it, and ChatGPT's web_search tool can retrieve it during grounding, but there is no documented inference-time use. Being indexable in Bing is the prerequisite: no Bing presence, no ChatGPT or Copilot citation surface — llms.txt cannot fix that.
What are the most common llms.txt mistakes to avoid?
Dumping the full sitemap instead of curating; vague link text like `[Pricing]` instead of `[Alice Labs Pricing]`; missing H1 or blockquote summary; blocking ClaudeBot or OAI-SearchBot in robots.txt while publishing llms.txt; hosting at /docs/llms.txt instead of the root; and shipping the file once then never refreshing. Run the llmstxt.org validators after every edit.
Zero-Click Search in the AI Era: What Marketers Need to Know
Next in AI Search & LLMOHow to Get Cited by Claude: How Claude Finds Sources (2026)
Further reading
- llmstxt.org — Official spec, directory, and validators· llmstxt.org
- Anthropic — anthropic.com/llms.txt (reference implementation)· anthropic.com
- Stripe — stripe.com/llms.txt (enterprise docs pattern)· stripe.com
- Vercel — vercel.com/llms.txt (deployment template)· vercel.com
- Cloudflare — cloudflare.com/llms.txt (edge implementation)· cloudflare.com
- Perplexity — perplexity.ai/llms.txt (LLM provider deployment)· perplexity.ai
- GEO: Generative Engine Optimization (Aggarwal et al., 2024)· arxiv.org
- Search Engine Land — LLMO coverage library· searchengineland.com
Related reading
What Is LLMO? Large Language Model Optimization Explained
Glossary definition of the discipline llms.txt fits within.
7 min pillarAI Search Optimization: Complete Guide for 2026
Full playbook covering ChatGPT, Perplexity, Claude, and Google AI Overviews.
14 min howtoHow to Get Cited by ChatGPT: 9-Step Playbook
Tactical step-by-step playbook for ChatGPT citation, where llms.txt is one of nine factors.
11 minSources
- llms.txt — Official specification, Jeremy Howard / Answer.AI (proposed September 3, 2024, spec repo AnswerDotAI/llms-txt on GitHub)(accessed 2026-08-14)
- Aggarwal et al. — GEO: Generative Engine Optimization (arXiv:2311.09735, 2024)(accessed 2026-08-14)
- Anthropic — anthropic.com/llms.txt (reference implementation) + Claude docs on ClaudeBot user agent(accessed 2026-08-14)
- Vercel — Publishing llms.txt on Vercel (deployment template, 2026)(accessed 2026-08-14)
- Cloudflare — llms.txt with Cloudflare Workers (edge implementation blog)(accessed 2026-08-14)
- Stripe — stripe.com/llms.txt (docs-first enterprise reference)(accessed 2026-08-14)
- Perplexity — perplexity.ai/llms.txt (LLM provider self-deployment)(accessed 2026-08-14)
- Search Engine Land — LLMO and llms.txt adoption coverage (2026)(accessed 2026-08-14)
- OpenAI — Robots.txt and OAI-SearchBot / GPTBot documentation(accessed 2026-08-14)
- Schema.org — Article, FAQPage, HowTo type documentation(accessed 2026-08-14)
Next scheduled review: