AI Search & LLMOHow-to GuideFreshLast reviewed: · 59d ago

    llms.txt Guide: How to Create and Optimize the File (2026)

    TL;DR

    Quick Answer
    Cited by AI
    To create an llms.txt file, write a markdown document with an H1 title, a one-paragraph summary as a blockquote, and H2 sections (Docs, Blog, Cases) listing key URLs in the format `- [Page Name](url): description`. Save it as llms.txt at your site root, optionally publish a longer llms-full.txt with concatenated content, and validate with the tools at llmstxt.org.

    llms.txt is a markdown summary of your site placed at the domain root. This guide walks through the format spec, deployment, validation, and ongoing maintenance — with real code you can copy.

    llms.txt is a proposed web standard introduced by Jeremy Howard at Answer.AI on September 3, 2024. It is a markdown file served at the root of a domain (e.g. yourdomain.com/llms.txt) that gives Large Language Model crawlers a curated, machine-readable summary of the site. The specification lives at llmstxt.org and defines a simple format: an H1 title, a short summary, and lists of links to clean markdown versions of key pages.

    Time

    2-4 hours

    Difficulty

    Beginner

    Tools

    Any markdown editor (VS Code, Obsidian, plain text), Access to your site root for file deployment, llmstxt.org validators and examples…

    Before you start

    • Basic familiarity with markdown syntax
    • Ability to deploy a static file at your domain root
    • A clear list of your site's most important pages

    What you'll have at the end

    A valid llms.txt file deployed at your root, optionally paired with llms-full.txt, that gives LLM crawlers a clean, curated summary of your site — and a monitoring loop to track AI crawler activity over time.

    Linus Ingemarsson - Author at Alice Labs
    Written by
    Eric Lundberg - Reviewer at Alice Labs
    Reviewed by
    Published ·Updated
    12 min read

    9-step process

    0/9 complete
    1. Step 1: Inventory the pages an LLM should know about

      Before writing the file, list the pages you want LLMs to surface: your homepage, product or service pages, top documentation, key blog posts, customer cases, and About/Contact. Skip duplicates, thin pages, archives, and anything time-sensitive. Aim for 20-50 high-signal URLs, not the full sitemap.

    2. Step 2: Write the H1 title and one-paragraph summary

      Start the file with a single H1 (the site or product name) and a blockquote summary describing what the site does. Keep the summary to 2-3 sentences. State the entity, the audience, and the value. This block is what LLMs use to classify your site.

    3. Step 3: Organize the body into H2 sections

      Group your URLs under H2 headings such as Docs, Blog, Customer Stories, Product, About. Each section should reflect how a human would navigate. Sections give the LLM context about the type of content behind each link, which helps with citation accuracy.

    4. Step 4: Add links in the spec format

      Inside each section, list links one per bullet using the format `- [Page Name](url): Optional description`. Keep page names entity-clear. Descriptions should be 5-15 words explaining what is on the page. Always link to canonical URLs, not redirects.

    5. Step 5: (Optional) Create clean .md versions of key pages

      The llmstxt.org spec encourages linking to plain markdown versions of pages where possible. LLMs prefer markdown over rendered HTML because it removes nav, ads, and chrome. If your site cannot serve .md, link to the canonical HTML and skip this step — it is optional.

    6. Step 6: Deploy llms.txt to your site root

      Save the file as llms.txt and serve it at https://yourdomain.com/llms.txt. The location pattern mirrors robots.txt and sitemap.xml. Make sure the response is 200 OK with Content-Type text/plain or text/markdown. Verify it is reachable in an incognito window.

    7. Step 7: (Optional) Publish llms-full.txt for full content

      If your site is small enough, also publish llms-full.txt at the root. This file concatenates the actual clean content of every key page into one document. It is useful for documentation sites and product manuals where the LLM benefits from full context, not just a list of links.

    8. Step 8: Validate the file using llmstxt.org tools

      Run your llms.txt through the validators linked from llmstxt.org. Check that markdown parses cleanly, links resolve, and the structure matches the spec. Re-validate every time you ship a content change. Malformed llms.txt is worse than none — it can confuse retrieval.

    9. Step 9: Monitor AI crawler activity in your logs

      Once llms.txt is live, watch your server logs for AI crawlers: ClaudeBot, OAI-SearchBot, GPTBot, PerplexityBot, Google-Extended. Note which agents fetch /llms.txt and how often. Combine this with citation tracking (Otterly.ai, Profound) and GA4 referral analytics to measure impact.

    Key Takeaways

    • llms.txt was proposed by Jeremy Howard (Answer.AI) on September 3, 2024 as a machine-readable site summary for LLM crawlers.
    • The file is markdown, lives at /llms.txt at your root, and follows a simple H1 + summary + sections + links structure.
    • It is a convention, not yet officially supported by every major LLM provider — but already adopted by Anthropic, Mintlify, Cloudflare, and many others.
    • llms.txt does NOT replace robots.txt or sitemap.xml. They coexist: robots.txt controls access, sitemap.xml lists every URL, llms.txt curates the highlights.
    • The optional llms-full.txt concatenates clean content into one file, useful for smaller sites and documentation.
    • Pair llms.txt with Schema.org markup, fast-loading clean HTML, and citation-rich content for measurable AI-search visibility (Aggarwal et al. 2024 found up to 40% lift).
    01 / 05Step

    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.

    02 / 05Step

    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.

    03 / 05Step

    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/ or static/ 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:

    1. HTTP status: curl -I https://yourdomain.com/llms.txt returns 200.
    2. Content-Type: text/plain or text/markdown, not text/html.
    3. 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.

    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 audit
    04 / 05Step

    Tools 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.

    05 / 05Step

    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:

    1. Validation on every change. Run llms.txt through the validators at llmstxt.org. Confirm markdown parses, links resolve, and the structure matches the spec.
    2. 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.
    3. Crawler-log monitoring. Filter server logs by AI user agents (ClaudeBot, OAI-SearchBot, GPTBot, PerplexityBot, Google-Extended). Track which fetch /llms.txt and 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.

    About the Authors & Reviewers

    Published ·Updated
    Written by
    Linus Ingemarsson - Co-Founder, Alice Labs at Alice Labs
    Linus Ingemarsson

    Co-Founder, Alice Labs

    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
    Reviewed by
    Eric Lundberg - Co-Founder, Alice Labs at Alice Labs
    Eric Lundberg

    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
    Published · Updated
    Reviewed for technical accuracy, methodology and source integrity.·All claims trace to public sources cited in-line.

    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.

    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.

    Previous in AI Search & LLMO

    Zero-Click Search in the AI Era: What Marketers Need to Know

    Next in AI Search & LLMO

    How to Get Cited by Claude & Anthropic: 2026 Guide

    Further reading

    Related reading

    Sources

    1. llms.txt — Official specification, Jeremy Howard / Answer.AI (proposed September 3, 2024)(accessed 2026-05-06)
    2. Aggarwal et al. — GEO: Generative Engine Optimization (arXiv:2311.09735, 2024)(accessed 2026-05-06)
    3. Anthropic — anthropic.com (publicly available llms.txt example)(accessed 2026-05-06)
    4. OpenAI — Robots.txt and OAI-SearchBot documentation(accessed 2026-05-06)
    5. Schema.org — Article, FAQPage, HowTo type documentation(accessed 2026-05-06)

    Next scheduled review:

    Ready to accelerate your AI journey?

    Book a free 30-minute consultation with our AI strategists.

    Book Consultation
    Share

    Get in Touch!

    The lab usually responds within 24 hours.

    Need help with AI?Get in touch