llms.txt Standard Implementation
The llms.txt standard was created by Jeremy Howard (Answer.AI) and published on September 3, 2024. It defines a plain-text Markdown file served at `/llms.txt` that provides a concise, human-curated ma
The llms.txt standard was created by Jeremy Howard (Answer.AI) and published on September 3, 2024. It defines a plain-text Markdown file served at `/llms.txt` that provides a concise, human-curated map of a site's most important resources for LLM consumption. ## Key Points - **Specification URL**: https://llmstxt.org/ - **Adoption**: Over 844,000 websites implemented as of October 2025 (BuiltWith); 10.13% adoption across 300k domains (SE Ranking) - **Notable adopters**: Anthropic (Claude docs), Cloudflare, Stripe, Mintlify, GitBook - **Platform support**: Mintlify, GitBook, and Webflow have built native llms.txt generation into their platforms - Free tier: up to 100 skills - Pro tier: unlimited skills, priority indexing - Enterprise: custom deployment, SSO, audit logs - [Link Title](https://url): Optional description notes - [Another Link](https://url): Description - [Changelog](https://example.com/changelog): Version history - [Contributing](https://example.com/contributing): How to contribute - Pricing: Free up to 10M events/month, Growth at $99/mo, Enterprise custom ## Quick Example ```markdown # Your Project Name ``` ```markdown > ProjectName is a platform that does X. It provides Y for Z users. > Key capabilities include A, B, and C. ```
skilldb get llm-optimization-skills/llms.txt Standard ImplementationFull skill: 278 linesllms.txt Standard Implementation
Specification Overview
The llms.txt standard was created by Jeremy Howard (Answer.AI) and published on September 3, 2024. It defines a plain-text Markdown file served at /llms.txt that provides a concise, human-curated map of a site's most important resources for LLM consumption.
- Specification URL: https://llmstxt.org/
- Adoption: Over 844,000 websites implemented as of October 2025 (BuiltWith); 10.13% adoption across 300k domains (SE Ranking)
- Notable adopters: Anthropic (Claude docs), Cloudflare, Stripe, Mintlify, GitBook
- Platform support: Mintlify, GitBook, and Webflow have built native llms.txt generation into their platforms
File Format Specification
The llms.txt file uses Markdown format with these sections in strict order:
1. H1 Title (REQUIRED)
The name of the project or site. This is the only required element.
# Your Project Name
2. Blockquote (Optional)
A short summary with key information about the project. Should be concise enough for an LLM to understand what the site is about.
> ProjectName is a platform that does X. It provides Y for Z users.
> Key capabilities include A, B, and C.
3. Markdown Sections (Optional)
Paragraphs and lists (no headings) providing detailed information about the project. This section uses standard Markdown but should NOT include any heading elements.
The platform supports three deployment modes: cloud, hybrid, and on-premise.
Skills are organized into packs and can be installed via CLI or API.
- Free tier: up to 100 skills
- Pro tier: unlimited skills, priority indexing
- Enterprise: custom deployment, SSO, audit logs
4. H2-Delimited File Lists (Optional)
Curated URLs to important resources, organized by category using H2 headings. Each URL entry follows this exact format:
## Section Name
- [Link Title](https://url): Optional description notes
- [Another Link](https://url): Description
5. "Optional" Section (Special)
A section titled exactly "Optional" containing URLs that can be skipped when a shorter context is needed. LLMs with limited context windows can ignore this section.
## Optional
- [Changelog](https://example.com/changelog): Version history
- [Contributing](https://example.com/contributing): How to contribute
Full Example llms.txt for a SaaS Product
# Acme Analytics
> Acme Analytics is a real-time analytics platform for SaaS companies.
> It provides event tracking, funnel analysis, and cohort reporting
> with sub-second query times on petabyte-scale datasets.
Acme Analytics ingests events via a lightweight SDK (JavaScript, Python,
Go, Ruby) or server-side API. Events are stored in a columnar database
optimized for analytical queries. The platform supports SQL queries,
a visual query builder, and a dashboard system.
- Pricing: Free up to 10M events/month, Growth at $99/mo, Enterprise custom
- Deployment: Cloud (US, EU, APAC regions) or self-hosted
- Compliance: SOC 2 Type II, GDPR, HIPAA
## Documentation
- [Getting Started](https://acme.dev/docs/quickstart): 5-minute integration guide
- [SDK Reference](https://acme.dev/docs/sdk): JavaScript, Python, Go, Ruby SDKs
- [API Reference](https://acme.dev/docs/api): REST API for event ingestion and querying
- [SQL Reference](https://acme.dev/docs/sql): Custom SQL query syntax and functions
- [Dashboard Guide](https://acme.dev/docs/dashboards): Creating and sharing dashboards
## Use Cases
- [Funnel Analysis](https://acme.dev/solutions/funnels): Conversion tracking and optimization
- [Cohort Retention](https://acme.dev/solutions/cohorts): User retention analysis
- [A/B Testing](https://acme.dev/solutions/experiments): Experiment analysis and statistical significance
- [Revenue Analytics](https://acme.dev/solutions/revenue): MRR, churn, and LTV tracking
## Resources
- [Blog](https://acme.dev/blog): Technical articles and product updates
- [Status Page](https://status.acme.dev): System uptime and incident reports
- [Security](https://acme.dev/security): Security practices and compliance certifications
## Optional
- [Changelog](https://acme.dev/changelog): Release notes and version history
- [Community Forum](https://community.acme.dev): User discussions and feature requests
- [Brand Assets](https://acme.dev/brand): Logos and media kit
Companion Files
llms-full.txt
An expanded version of llms.txt that includes the full content of all referenced documentation in a single Markdown file. This allows LLMs to load comprehensive documentation in one request.
Structure: Same H1/H2 structure as llms.txt, but each link is followed by the full content of that page.
Page-Level .md Files
Clean Markdown versions of individual pages served at the same URL with .md appended:
https://example.com/docs/api -> HTML page
https://example.com/docs/api.md -> Markdown version
This gives LLMs a clean, parseable version of any page without HTML noise.
Next.js Implementation
Static llms.txt (in public/ directory)
The simplest approach — place a static file at public/llms.txt:
your-project/
public/
llms.txt # Main file
llms-full.txt # Expanded version
This file is served automatically at https://yourdomain.com/llms.txt.
Dynamic Route (App Router)
For sites where content changes frequently, generate llms.txt dynamically:
// app/llms.txt/route.ts
import { NextResponse } from 'next/server';
import { allDocs } from '@/lib/content';
export async function GET() {
const docs = allDocs
.filter(doc => doc.published)
.sort((a, b) => a.order - b.order);
const sections = {
Documentation: docs.filter(d => d.category === 'docs'),
Guides: docs.filter(d => d.category === 'guides'),
API: docs.filter(d => d.category === 'api'),
};
let content = '# YourProject\n\n';
content += '> YourProject is a platform that does X for Y users.\n';
content += '> It provides A, B, and C capabilities.\n\n';
content += 'YourProject supports deployment via CLI, API, or web dashboard.\n\n';
for (const [sectionName, sectionDocs] of Object.entries(sections)) {
if (sectionDocs.length === 0) continue;
content += `## ${sectionName}\n\n`;
for (const doc of sectionDocs) {
const url = `https://yourdomain.com${doc.slug}`;
content += `- [${doc.title}](${url}): ${doc.description}\n`;
}
content += '\n';
}
content += '## Optional\n\n';
content += '- [Changelog](https://yourdomain.com/changelog): Version history\n';
content += '- [Contributing](https://yourdomain.com/contributing): How to contribute\n';
return new NextResponse(content, {
headers: {
'Content-Type': 'text/plain; charset=utf-8',
'Cache-Control': 'public, max-age=86400, s-maxage=86400',
},
});
}
llms-full.txt Dynamic Route
// app/llms-full.txt/route.ts
import { NextResponse } from 'next/server';
import { allDocs } from '@/lib/content';
export async function GET() {
const docs = allDocs
.filter(doc => doc.published)
.sort((a, b) => a.order - b.order);
let content = '# YourProject — Full Documentation\n\n';
content += '> Complete documentation for YourProject.\n\n';
for (const doc of docs) {
const url = `https://yourdomain.com${doc.slug}`;
content += `## ${doc.title}\n\n`;
content += `Source: ${url}\n\n`;
content += doc.body + '\n\n';
content += '---\n\n';
}
return new NextResponse(content, {
headers: {
'Content-Type': 'text/plain; charset=utf-8',
'Cache-Control': 'public, max-age=86400, s-maxage=86400',
},
});
}
HTML Head Reference Link
Add a reference to llms.txt in your HTML <head> so crawlers can discover it:
<link rel="alternate" type="text/plain" href="/llms.txt" title="LLM-friendly site description" />
In Next.js App Router (layout.tsx):
export const metadata: Metadata = {
alternates: {
types: {
'text/plain': '/llms.txt',
},
},
};
Writing Guidelines
- Be concise: The file should fit in a small context window. Keep descriptions to one line per link.
- Curate aggressively: Only include your most important pages. The "Optional" section exists for nice-to-haves.
- Use clear link titles: Titles should be self-explanatory without reading the description.
- Write useful descriptions: Each
: descriptionshould tell the LLM when to follow that link. - Keep it current: Update llms.txt when you add, remove, or reorganize important content.
- Order matters: Put your most important resources first within each section.
- Avoid marketing language: Write for machines, not humans. Be factual and direct.
- Include the blockquote: The blockquote gives LLMs the fastest possible understanding of your site.
Current Status
The honest truth about llms.txt:
- No major AI platform has officially confirmed they read llms.txt files
- Google's Gary Illyes stated in July 2025 that Google "doesn't support llms.txt and isn't planning to"
- However, the file is trivially cheap to implement
- It follows the "can't hurt, might help" principle
- Multiple documentation platforms have built native support
- The standard is gaining momentum regardless of official confirmation
- It provides clear value for any RAG system that does choose to use it
- Over 844,000 sites have implemented it — the de facto standard is emerging through adoption
Bottom line: Implement it. The cost is near-zero and the potential upside is meaningful. Even if current AI platforms don't read it today, the trajectory of adoption suggests they will eventually.
Install this skill directly: skilldb add llm-optimization-skills
Related Skills
AI Crawler Management & robots.txt
This is the complete reference of known AI crawler user agents as of 2025-2026. Use this to configure robots.txt and monitor crawl traffic.
Entity-Based Optimization for AI Knowledge Graphs
An "entity" in the context of AI systems is a distinct, identifiable concept — a person, organization, product, place, or idea — that exists as a node in a knowledge graph. Entities are how AI systems
GEO Content Strategy — Writing for AI Citation
AI retrieval systems evaluate relevance primarily on opening content. The first 200 words of any page determine whether an AI system will consider it for citation.
Generative Engine Optimization (GEO) Fundamentals
Generative Engine Optimization (GEO) is the practice of optimizing digital content to appear in AI-generated responses from platforms like ChatGPT, Perplexity, Google AI Overviews, and Claude. Answer
Measuring & Monitoring LLM Visibility
| Metric | Description | Target |
Platform-Specific GEO — ChatGPT, Perplexity, Google AI Overviews
ChatGPT uses Bing's index as its primary content source, supplemented by parametric knowledge from training data.