# llms-full.txt: the whole-site context file AI answer engines read

> llms.txt is the index; llms-full.txt is your entire site as one clean-text file. Why one big file beats a crawl, what goes in it, and how to ship it.

_Source: https://seomatrix.ai/blog/llms-full-txt/ · Updated: 2026-07-13_

---

In short: **llms.txt** is a curated *index* of your site; **llms-full.txt** is the site itself — the clean text of every page that matters, concatenated into one file. An AI answer engine (or any RAG crawler) that reads it gets your full context in a **single fetch**: no JavaScript to render, no navigation chrome to strip, no 40-request crawl to budget. It's the companion file to the one-line [llms.txt](/blog/llms-txt/) index, and in 2026 it's one of the cheapest GEO moves you can make.

## llms.txt vs llms-full.txt

| Axis | llms.txt | llms-full.txt |
|---|---|---|
| Purpose | curated map | full-text dump |
| Content | links + 1-line descriptions | the actual page bodies |
| Size | small (a menu) | large (the whole meal) |
| Read by | a model deciding *what* to fetch | a model reading *everything* at once |
| Analogy | the table of contents | the book, in plain text |

They're not rivals — they're a pair. `llms.txt` tells a model what exists and links to per-page markdown; `llms-full.txt` lets a model skip the round-trips and ingest the lot in one go.

## Why one big file beats a crawl

A crawler hitting your rendered HTML fails in three ordinary ways: it can't run your JavaScript, it wastes budget on nav/footer/cookie chrome, and it needs one request per page. A single clean-text file removes all three at once.

- **No render step.** The content is already text. Client-rendered SPAs — the usual GEO black hole — become fully legible.
- **No chrome to strip.** You ship bodies only, so the signal-to-noise ratio is ~100%.
- **One fetch, full context.** A model comparing your pricing to a competitor's can hold your entire offering in context instead of guessing from one page.

> **This is plumbing, not magic** — llms-full.txt doesn't *rank* you. It removes the boring reasons an answer engine misreads or skips your content. Think of it like a clean XML sitemap for the RAG era — table stakes, not a growth hack.

## What goes in it

Clean markdown bodies, in a stable order, each with enough front-matter for a model to attribute the passage:

- The page **title** and **canonical URL** as a heading, so a citation can point back.
- The **body as markdown** — headings, lists, tables preserved; scripts, nav, ads, and cookie banners removed.
- A visible **date** (`published` / `updated`) — recency is a real GEO signal.
- Nothing you wouldn't publish. This file is public and quotable verbatim.

Order the most important pages first (your money pages, your evergreen guides), because some crawlers truncate long files.

## What to leave out

> **Common mistakes** — Don't paste raw HTML — the whole point is clean text. Don't include navigation, sidebars, or boilerplate that repeats on every page (it dilutes every passage). Don't dump gated, thin, or duplicate pages. And don't let it go stale: regenerate it whenever content changes, or it will confidently feed models your old prices.

## How to ship it

Three ways, cheapest first:

1. **Generate it from your content source.** If your pages are markdown or a CMS with an export, concatenate the bodies with a title/URL/date header per page. This is what our [GEO toolkit](/tools/) does automatically — it emits `llms.txt`, `llms-full.txt`, and a per-page `.md` alternate in one pass.
2. **Add the per-page markdown alternate too.** Serve each page's clean markdown at a predictable URL and advertise it with `<link rel="alternate" type="text/markdown" href="…">`. Then `llms.txt` links to those, and `llms-full.txt` inlines them.
3. **Deploy at the root and link it.** Put the file at `/llms-full.txt`, reference it from `/llms.txt`, and keep both in your build so they never drift from the site.

## Does it actually move the needle?

Honestly: adoption is uneven and it is not a documented ranking factor at any major engine. What it reliably does is remove *failure modes* — the render wall and the crawl-budget wall that keep JS-heavy and deep sites out of AI answers entirely. For a client-rendered site, that gap is the difference between "invisible to RAG" and "fully readable."

The chart is the whole argument: a client-rendered page a crawler can't execute is 100% invisible; the same page as a line in `llms-full.txt` is 100% readable.

## Checklist

- [ ] `/llms.txt` exists (curated index, links to per-page markdown).
- [ ] `/llms-full.txt` exists (full clean-text bodies, one file).
- [ ] Each entry carries a title, canonical URL, and a visible date.
- [ ] No HTML, nav, or boilerplate — bodies only.
- [ ] Most important pages first; thin/duplicate pages excluded.
- [ ] Both files regenerate on every build (never stale).
- [ ] Per-page `.md` alternates advertised via `rel="alternate"`.

## In short

- `llms.txt` is the index; `llms-full.txt` is the whole site as one clean-text file.
- One fetch replaces a render step, chrome-stripping, and a multi-request crawl.
- It's plumbing: it removes reasons AI engines *miss* you, it doesn't rank you.
- Bodies only, most-important-first, with title + URL + date per page.
- Ship both, link them, and regenerate on every build so they never go stale.

## Sources

- **llmstxt.org** — the original `/llms.txt` proposal (Jeremy Howard, 2024) and the `llms-full.txt` / expanded-context convention.
- **Aggarwal et al., "GEO", KDD '24** — [arXiv:2311.09735](https://arxiv.org/abs/2311.09735): citation depends on passage *extractability*, which clean text maximises.
- **Google, "Rendering on the Web"** — why client-side JavaScript is a retrieval failure mode when the fetcher can't execute it.

## FAQ

### What is the difference between llms.txt and llms-full.txt?

llms.txt is a short, curated index — a markdown list of your key pages with links and one-line descriptions. llms-full.txt is the expanded version: the actual clean-text body of those pages inlined into one file, so a model gets the full content in a single fetch instead of crawling each link.

### Do AI engines actually read llms-full.txt?

It is an emerging convention (llmstxt.org), not a ranking signal. Adoption is uneven across ChatGPT, Perplexity and Google, but it costs almost nothing to ship, it is trivially machine-readable, and it removes JavaScript-render and crawl-budget as failure modes for the crawlers that do use it.

### Where do I put llms-full.txt?

At your site root: /llms-full.txt, served as text/plain or text/markdown, and linked from /llms.txt. Keep both current — a stale context file is worse than none.

