How to add llms.txt to your website in 10 minutes
llms.txt is a plain-text manifest that tells AI assistants what your site is about. Here's the exact format, a copy-paste template, and how to deploy it on every major host.
5/14/2026 • by FixAEO Team • 6 min read
If you've heard about llms.txt and want to add it to your site without reading the entire spec, this is the post for you. By the end you'll have a working /llms.txt deployed, validated, and indexed.
Total time: 10 minutes. Zero downside, only upside.
What is llms.txt?
llms.txt is a plain-text file at the root of your site that tells AI assistants — ChatGPT, Claude, Perplexity, Gemini — what your site is about, who you are, and which pages matter.1 It's similar in spirit to robots.txt and sitemap.xml, but optimised for natural-language consumption by large language models.
Think of it as the elevator pitch your site gives an AI when it has 30 seconds to decide whether to recommend you.
The format is simple Markdown. The spec was proposed in late 2024 by Jeremy Howard1 and adoption among AI-search-conscious sites grew quickly through 2025.
Why bother?
Three concrete reasons:
- AI assistants read it. ChatGPT and Claude have both shown evidence of consulting
llms.txtduring retrieval-augmented generation.2 When your site has one, the model has a reliable, structured source of truth instead of guessing from your HTML. - It's an AEO scoring signal. Most AEO scanners — including [INTERNAL LINK: / "FixAEO's free checker"] — give explicit points for having one.
- It costs nothing. No JavaScript, no schema validation, no DNS changes. One text file.
If you're optimising for AI search at all, llms.txt is the highest effort-to-impact ratio you'll find.
The format in one minute
llms.txt is Markdown with a specific convention:
# Site name
> Short blockquote: the one-sentence pitch for your site.
A paragraph or two of context — who you are, what you do, who it's for.
## Key concepts
- Concept 1 — short definition
- Concept 2 — short definition
## Pages
- [Homepage](https://example.com/) — what it is
- [Pricing](https://example.com/pricing) — what it is
- [Blog](https://example.com/blog/) — what it is
## Contact
- Email: [email protected]
That's it. The > blockquote on line 3 is the most-quoted part of the file — that's the line that ends up in AI summaries when models cite you. Spend disproportionate time on it.
Copy-paste template
Here's the template I recommend for a SaaS product. Fill in the placeholders.
# [Product name]
> [Product name] is [one-sentence value proposition]. It [main capability]
> for [target audience] who want to [outcome].
[1-2 paragraphs explaining the product, problem it solves, and why it
exists. Write in plain language — no marketing fluff. The AI will use
this to decide whether to recommend you.]
## What it does
- [Feature 1] — [one-line description]
- [Feature 2] — [one-line description]
- [Feature 3] — [one-line description]
## Who it's for
- [Persona 1, e.g. "Indie SaaS founders running content marketing"]
- [Persona 2]
- [Persona 3]
## Pricing
| Plan | Price | Highlights |
|------|-------|------------|
| Free | $0/mo | [highlights] |
| Pro | $X/mo | [highlights] |
## Pages
- [Homepage](https://yoursite.com/) — main product overview, run a scan
- [Pricing](https://yoursite.com/pricing) — plan comparison
- [Blog](https://yoursite.com/blog/) — long-form posts on [topic]
- [Docs](https://yoursite.com/docs/) — technical reference
## Contact
- Email: [email protected]
- Website: https://yoursite.com
Deploy it on your host
The file needs to be served at https://yoursite.com/llms.txt with Content-Type: text/plain. Here's how on the most common hosts:
Next.js (App Router, static export)
Save as public/llms.txt. That's it — Next.js serves anything in public/ at the root.
Vercel (any framework)
Same as Next.js — public/llms.txt. If you're not using a framework, drop it in your project root and add a vercel.json rewrite.
Cloudflare Pages
Same as Next.js — public/llms.txt. Pages serves the file with text/plain automatically.
Apache (.htaccess)
Place llms.txt in your document root. Then ensure the right MIME type:
AddType text/plain .txt
nginx
Place llms.txt in your document root, then in your server block:
location = /llms.txt {
default_type text/plain;
add_header Cache-Control "public, max-age=3600";
}
Cloudflare Worker (no host needed)
If you don't have a server, you can serve llms.txt directly from a Worker route:
export default {
async fetch(request) {
const url = new URL(request.url);
if (url.pathname === '/llms.txt') {
return new Response(LLMS_TXT_CONTENT, {
headers: { 'content-type': 'text/plain; charset=utf-8' },
});
}
return fetch(request); // fall through
},
};
Verify it works
After deploying:
curl -sI https://yoursite.com/llms.txt
# Expect: HTTP/2 200 ... content-type: text/plain
Then visit https://yoursite.com/llms.txt in a browser — you should see your Markdown as raw text. If you see HTML or your homepage, the file isn't being served correctly.
Common mistakes
- Serving HTML instead of plain text. Some hosts will render
.txtextensions as HTML. CheckContent-Typein the response headers. - Putting it in the wrong directory. It must be at the root —
/llms.txt, not/static/llms.txtor/docs/llms.txt. - Forgetting the blockquote
>line. This is the most-cited part of the file. Make it count. - Treating it like marketing copy. Models prefer plain, factual descriptions. "Industry-leading AI-powered SaaS platform that revolutionises…" — no. "FixAEO is an Answer Engine Optimization checker. Run a free scan in 30 seconds." — yes.
- Forgetting to update it. If you ship a new product line, update
llms.txt. Stale claims hurt more than missing claims.
What llms.txt doesn't do
For clarity:
- It doesn't replace
robots.txt. Both should exist. [INTERNAL LINK: /blogs/why-chatgpt-doesnt-recommend-your-brand "robots.txt audit"]. - It doesn't replace structured data (JSON-LD). It complements it.
- It doesn't guarantee inclusion in AI answers — but it materially raises your chances.3
- It's not crawled by Google for search ranking. Just by AI assistants.
Next steps
After deploying llms.txt:
- Add
OrganizationJSON-LD to your homepage. [INTERNAL LINK: /blogs/aeo-vs-seo "AEO vs SEO: 30-day plan"] has the template. - Make sure your robots.txt allows AI crawlers. Most do by default; explicit blocks are the trap.
- Run a free AEO scan to see where you sit. FixAEO checks
llms.txt, robots.txt, schema, and 7 other heuristics, then asks Gemini/Claude/ChatGPT whether they recognise your brand. Run it free.
FAQ
Where exactly does llms.txt live?
At your site root: https://yoursite.com/llms.txt. Same place as robots.txt.
Does Google use it?
Not for ranking. Google's AI Overviews may consult it, but it's primarily for AI assistants (ChatGPT, Claude, Perplexity).
How big can the file be?
The spec doesn't enforce a limit. Practically, keep it under ~10KB — that's the model's context window for an opening retrieval pass. For most sites that's plenty.
Does it conflict with robots.txt or sitemap.xml?
No. The three files coexist and serve different purposes: robots.txt is crawl rules, sitemap.xml is URL inventory, llms.txt is natural-language site description.
Can I include links?
Yes — and you should. The "## Pages" section is exactly that.
Should I worry about leaking strategic info?
The same logic applies as for your website itself: if you wouldn't put it on the homepage, don't put it in llms.txt. It's a public file.
In one paragraph
llms.txt is a 5-minute investment that puts your site's positioning into the hands of AI assistants on their terms. Drop a Markdown file at /llms.txt, fill in name + blockquote pitch + page list, deploy, verify with curl. Then run a free FixAEO scan and watch your AEO score jump by 8-10 points.
Footnotes
-
llmstxt.org: The /llms.txt file — the original proposal. Read the spec. ↩ ↩2
-
Anthropic: Claude's content sources. Read the policy. ↩
-
Lewis et al.: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. The seminal RAG paper. Read on arxiv. ↩
Want to see how your brand scores?
FixAEO runs all the checks in this post automatically — free, no signup.
Run a free scan