What Is llms.txt? A Guide for AI-Readable Websites
llms.txt is a proposed Markdown file at your site's root that gives AI tools a concise, curated map of your content. What goes in it, the format, llms-full.txt, how it differs from robots.txt and sitemap.xml, who actually reads it today, and how to add one in Next.js.
llms.txt is a proposed standard: a Markdown file at https://yoursite.com/llms.txt that gives AI tools — chat assistants, coding agents, answer engines — a short, curated guide to your site's most useful content.
It was proposed in 2024 by Jeremy Howard of Answer.AI. The reasoning: web pages are full of navigation, scripts and layout that waste an AI model's limited context. A clean summary with links to plain-text versions is far easier for a model to use. (What is a context window?)
What it looks like
# Acme Invoicing
> Acme sends automatic invoice reminders for freelancers. Plans start at $9/month.
Key facts: works with Stripe and PayPal; EU data hosting; free 14-day trial.
## Docs
- [Getting started](https://acme.example/docs/start.md): create an account and send a first invoice
- [Reminders](https://acme.example/docs/reminders.md): how reminder schedules work
- [API reference](https://acme.example/docs/api.md): REST endpoints and authentication
## Optional
- [Changelog](https://acme.example/changelog.md)
The format:
- An
# H1with the site or project name (required). - A
>blockquote summary. - Optional free text with key details.
##sections of Markdown links, each with a short note.- An
## Optionalsection for things that can be skipped when context is tight.
llms-full.txt
Some sites also publish llms-full.txt: the full text of their documentation in one Markdown file, so a tool can load everything at once. Common for developer docs (Anthropic's Claude Code docs publish both). It can be large — mainly useful for docs sites.
How it differs from robots.txt and sitemap.xml
| File | Audience | Purpose |
|---|---|---|
robots.txt |
Crawlers | What they may and may not crawl |
sitemap.xml |
Search engines | A complete list of URLs |
llms.txt |
AI tools | A curated, readable summary of what matters |
They complement each other. llms.txt doesn't grant or deny access — that's still robots.txt. (robots.txt and sitemap.xml explained)
Does anything actually use it?
Honest answer: adoption is mixed.
- Coding tools and agents often read
llms.txtand.mdversions of docs when given a docs URL — it's genuinely useful there. - Major search and chat products haven't committed to it as a ranking or retrieval signal.
So treat it as a cheap, low-risk improvement, not a growth hack. It takes an hour, and it's most valuable for documentation and developer products, where users point AI tools at your docs.
How to add one
Static site: put llms.txt in your public folder.
Next.js App Router: a route handler can generate it from your content:
// app/llms.txt/route.ts
export function GET() {
const body = `# Acme\n\n> Invoice reminders for freelancers.\n\n## Docs\n- [Start](https://acme.example/docs/start.md)\n`
return new Response(body, { headers: { 'Content-Type': 'text/plain; charset=utf-8' } })
}
Generating it from your blog or docs keeps it up to date automatically.
Also consider serving Markdown versions of key pages (e.g. /docs/start.md), which the format encourages.
Writing a good one
- Lead with what you are and who it's for, in plain words.
- Include the facts people ask AI about: pricing, limits, integrations, regions.
- Link to the most useful pages, not every page.
- Keep it current — stale pricing in an AI's answer is worse than none.
Where it fits
llms.txt is one small part of making your site easy for AI tools to understand and cite. The bigger part is clear, factual, well-structured content. (Generative engine optimization, SEO basics)
EasySpawn hosts your site on your own server, so adding routes like /llms.txt, Markdown versions of pages, or anything else is just code — with Claude Code to write it. See how it works or join the waitlist.
Related: Generative Engine Optimization · robots.txt and sitemap.xml Explained · SEO Basics for Your App · What Is Markdown?
Keep reading
What Is Streamlit? Build Data Apps in Pure Python
Streamlit turns a Python script into an interactive web app — charts, tables, inputs and chat interfaces — without writing HTML or JavaScript. How it works, a minimal example, what it's great for (dashboards, AI demos, internal tools), its limits, and how to deploy it.
"ReferenceError: window is not defined" in Next.js: How to Fix It
window, document and localStorage only exist in the browser. Next.js renders components on the server first, where they don't exist. Why it happens, and the fixes: useEffect, 'use client', typeof checks, dynamic imports with ssr: false, and libraries that touch window on import.