11 KiB
llms.txt Format Specification
This document provides a complete reference for creating llms.txt files according to the official specification at https://llmstxt.org/
Overview
llms.txt is a standardized markdown file format designed to provide LLM-friendly content summaries and documentation. It solves a critical problem: context windows are too small to handle most websites in their entirety.
Purpose
- Provides brief background information, guidance, and links to detailed markdown files
- Optimized for consumption by language models and AI agents
- Used at inference time when users explicitly request information
- Helps LLMs navigate documentation, understand projects, and access the right resources
- Enables chatbots with search functionality to retrieve relevant information efficiently
Why Markdown?
The specification uses markdown rather than XML/JSON because "we expect many of these files to be read by language models and agents" while still being "readable using standard programmatic-based tools."
File Structure
The format follows a specific structural hierarchy:
- H1 heading (
# Title) - REQUIRED - Blockquote summary (
> text) - Optional but recommended - Descriptive content (paragraphs, bullet lists) - Optional
- H2-delimited sections (
## Section Name) with file lists - Optional
Basic Template
# Project Name
> Brief summary of what this project does and why it exists.
- Key principle or feature
- Another important concept
- Third key point
## Documentation
- [Main Guide](https://example.com/docs/guide.md): Getting started guide
- [API Reference](https://example.com/docs/api.md): Complete API documentation
## Examples
- [Basic Usage](https://example.com/examples/basic.md): Simple examples
- [Advanced Patterns](https://example.com/examples/advanced.md): Complex use cases
## Optional
- [Blog](https://example.com/blog/): Latest news and updates
- [Community](https://example.com/community/): Join discussions
Required Elements
H1 Title (Required)
The project or site name - this is the ONLY mandatory element.
# Project Name
Optional Elements
Blockquote Summary (Recommended)
Brief project description with key information necessary for understanding the rest of the file.
> Project Name is a Python library for data processing. It provides efficient
> stream transformations and supports multiple output formats.
Descriptive Content (Optional)
Any markdown content EXCEPT headings. Use paragraphs, bullet lists, etc.
Key features:
- Fast stream processing with lazy evaluation
- Built-in error handling and recovery
- Zero-dependency core library
- Extensible plugin system
Project Name follows these principles:
1. Simplicity over complexity
2. Performance by default
3. Developer experience first
Important: Do NOT use H2, H3, or other headings in descriptive content. Only H1 (title) and H2 (section headers) are allowed.
File List Sections (Optional)
H2-headed sections containing links to resources.
## Section Name
- [Link Title](https://full-url): Optional description or notes about the resource
- [Another Link](https://url): More details here
Link Format Requirements
Each file list entry must follow this exact pattern:
- [Link Title](https://full-url): Optional description
Rules:
- Use markdown bullet lists (
-) - Include markdown hyperlinks
[name](url) - Optionally add
:followed by notes about the file - Links should point to markdown versions of documentation (preferably
.mdfiles) - Use full URLs, not relative paths
Examples:
## Documentation
- [Quick Start](https://docs.example.com/quickstart.md): Get up and running in 5 minutes
- [Configuration Guide](https://docs.example.com/config.md): All configuration options explained
- [API Reference](https://docs.example.com/api.md): Complete API documentation with examples
Special Sections
Optional Section
The "Optional" section has special meaning: content here can be skipped when shorter context is needed.
## Optional
- [Blog](https://example.com/blog/): Latest news about the project
- [Case Studies](https://example.com/cases/): Real-world usage examples
- [Video Tutorials](https://example.com/videos/): Visual learning resources
Use this section for:
- Secondary resources
- Community links
- Blog posts and news
- Extended tutorials
- Background reading
Common Section Names
Documentation-focused Projects
## Documentation
- Core docs, guides, tutorials
## API Reference
- Function references, method documentation
## Examples
- Code samples, patterns, recipes
## Guides
- How-to guides, best practices
## Development
- Contributing, setup, testing
## Optional
- Blog, community, extended resources
Tool/CLI Projects
## Getting Started
- Installation, quickstart
## Commands
- CLI reference, usage examples
## Configuration
- Config files, options
## Examples
- Common workflows, patterns
## Optional
- Advanced usage, plugins
Framework Projects
## Core Concepts
- Architecture, principles
## Documentation
- Guides, tutorials
## API Reference
- Component APIs, hooks
## Examples
- Starter templates, patterns
## Plugins/Integrations
- Extensions, third-party tools
## Optional
- Blog, showcase, community
File Placement
Repository Location
Place at /llms.txt in the repository root, alongside README.md.
Web Serving
For websites, serve at the root path /llms.txt (e.g., https://example.com/llms.txt).
Companion Files
You can create expanded versions:
llms-ctx.txt- Expanded content without URLsllms-ctx-full.txt- Expanded content with URLs
For referenced pages, create markdown versions:
page.html→page.html.md- Or use
index.html.mdfor pages without filenames
Best Practices
Content Guidelines
- Be Concise: Use clear, brief language
- Avoid Jargon: Explain technical terms or link to explanations
- Information Hierarchy: Most important content first
- Test with LLMs: Verify that language models can understand your content
- Keep Updated: Maintain accuracy as your project evolves
Link Best Practices
- Descriptive Titles: Use meaningful link text (not "click here")
- Helpful Notes: Add context after colons to explain what each resource contains
- Stable URLs: Link to permanent, versioned documentation
- Markdown Files: Prefer
.mdfiles over HTML when possible - Complete URLs: Use full URLs with protocol (https://)
Organizational Strategy
- Start with Essentials: Put most important docs first
- Logical Grouping: Group related resources under descriptive H2 headings
- Progressive Detail: Basic → Intermediate → Advanced
- Optional Last: Secondary resources go in the "Optional" section
- Consistent Format: Use the same link format throughout
Examples from the Wild
Real-World Implementations
- Astro: https://docs.astro.build/llms.txt
- FastHTML: https://www.fastht.ml/docs/llms.txt
- Shopify: https://shopify.dev/llms.txt
- Strapi: https://docs.strapi.io/llms.txt
- Modal: https://modal.com/llms.txt
Example: FastHTML Style
# FastHTML
> FastHTML is a Python library for building web applications using pure Python.
FastHTML follows these principles:
- Write HTML in Python with no JavaScript required
- Use standard Python patterns and idioms
- Deploy anywhere Python runs
## Documentation
- [Tutorial](https://docs.fastht.ml/tutorial.md): Step-by-step introduction
- [Reference](https://docs.fastht.ml/reference.md): Complete API reference
- [Examples](https://docs.fastht.ml/examples.md): Common patterns and recipes
## Optional
- [FastHTML Blog](https://fastht.ml/blog/): Latest updates
Example: Framework Style
# Astro
> Astro is an all-in-one web framework for building fast, content-focused websites.
- Uses island architecture for better performance
- Server-first design with minimal client JavaScript
- Supports React, Vue, Svelte, and other UI frameworks
- Zero JavaScript by default
## Documentation Sets
- [Getting Started](https://docs.astro.build/getting-started.md): Installation and first project
- [Core Concepts](https://docs.astro.build/core-concepts.md): Islands, components, routing
- [Complete Docs](https://docs.astro.build/llms-full.txt): Full documentation set
## API Reference
- [Configuration](https://docs.astro.build/reference/configuration.md): astro.config.mjs options
- [CLI Commands](https://docs.astro.build/reference/cli.md): Command-line reference
- [Integrations API](https://docs.astro.build/reference/integrations.md): Building integrations
## Optional
- [Astro Blog](https://astro.build/blog/): Development news
- [Showcase](https://astro.build/showcase/): Sites built with Astro
Allowed Markdown Elements
Supported
#H1 for title (required)##H2 for section headers>Blockquotes for summary-Bullet lists[text](url)Markdown links:Colon separator for notes after links- Plain paragraphs
- Numbered lists (
1.,2., etc.)
Not Used/Forbidden
- H3, H4, H5, H6 headings in descriptive content
- XML, JSON, or other structured formats
- Complex markdown tables
- Images (focus on text content)
- Code blocks (link to them instead)
Tools and Integration
CLI Tool
llms_txt2ctx - Command-line tool for processing and expanding llms.txt files
Framework Plugins
- VitePress: https://github.com/okineadev/vitepress-plugin-llms
- Docusaurus: https://github.com/rachfop/docusaurus-plugin-llms
- Drupal: https://www.drupal.org/project/llm_support
- PHP: https://github.com/raphaelstolt/llms-txt-php
Directories
- https://llmstxt.site/ - Directory of available llms.txt files
- https://directory.llmstxt.cloud/ - Community directory
Common Mistakes to Avoid
- Using Relative URLs: Always use full URLs with protocol
- Too Much Content: Keep it concise, link to details
- Missing Descriptions: Add helpful notes after link colons
- No Structure: Use H2 sections to organize links
- Outdated Links: Keep URLs current as docs evolve
- Complex Formatting: Stick to simple markdown
- No Summary: Always include a blockquote summary
- Wrong File Location: Must be at repository root as
/llms.txt
Validation Checklist
Before publishing your llms.txt:
- ✅ File is named exactly
llms.txt(lowercase) - ✅ File is at repository root
- ✅ Has H1 title as first element
- ✅ Has blockquote summary
- ✅ Uses only H1 and H2 headings
- ✅ All links use full URLs
- ✅ Links use proper markdown format
[text](url) - ✅ Descriptive notes added after colons where helpful
- ✅ Sections logically organized
- ✅ Essential content comes before optional
- ✅ Links point to markdown files when possible
- ✅ Content is concise and clear
- ✅ Tested with an LLM for comprehension
Additional Resources
- Official Site: https://llmstxt.org/
- GitHub: https://github.com/answerdotai/llms-txt
- Issues: https://github.com/AnswerDotAI/llms-txt/issues/new
- Community: Discord channel (check official site for link)
Version
This reference is based on the llms.txt specification as of November 2025. Check https://llmstxt.org/ for the latest updates.