llms-full.txt Size and Structure: The Full File Nobody Specified
Everyone references llms-full.txt. The specification does not. We fetched the file from
eight live documentation sites on October 11, 2026 and measured every byte: the
largest is 67.6 MB before compression, the smallest still 433 KB, and four of the
domains that serve one never mention it in their own /llms.txt.
The Spec Never Defined llms-full.txt
The v2 proposal at llmstxt.org, last modified August 10, 2026, describes
the /llms.txt file, markdown twins served at the page URL with a .md extension,
and two link relations — rel="alternate" type="text/markdown" for the twin and
rel="describedby" for the index that covers a page. We searched the page for the string
llms-full on October 11, 2026: zero matches.
That absence is deliberate. The spec states the index "stays small enough to fit in context. The detail lives behind the links, and is fetched only when needed." A single file holding every page of a large docs site is the opposite design, and it survives as a convention rather than a requirement — which is exactly why a client that implements only the written spec will never look for one unless your index points at it. The comparison between the curated index and the full dump is in llms.txt vs llms-full.txt.
What Eight Live Full Files Actually Weigh
Every request followed redirects and timed out at 30 seconds. Sizes are uncompressed bytes on the wire after decoding:
| Host and path | Bytes | gzip transfer | Structure signal |
|---|---|---|---|
| developers.cloudflare.com/llms-full.txt | 67,649,033 | 11,527,423 | 29,052 H2 headings; per-section files exist |
| platform.claude.com/docs/llms-full.txt (301 from docs.anthropic.com) | 43,107,672 | — | starts with a "Root URL" page, then full rendered docs |
| nuxt.com/llms-full.txt | 4,893,417 | 1,291,540 | 3,586 H2 headings |
| ai-sdk.dev/llms-full.txt | 4,724,729 | — | byte-identical to /llms.txt on the same host |
| vitest.dev/llms-full.txt | 1,382,071 | 371,248 | 215 url: / page markers |
| svelte.dev/llms-full.txt | 1,261,050 | 357,726 | 220 H1 page headings under a SYSTEM preamble |
| vuejs.org/llms-full.txt | 953,556 | 314,771 | 94 url: / page markers |
| vite.dev/llms-full.txt | 432,841 | 127,916 | 42 url: / page markers |
Four hosts we probed do not serve one at all: docs.stripe.com returned 404 with 23,881 bytes of HTML, www.anthropic.com returned 404 with 20,584 bytes of an error page, openai.com returned 403 with 9,698 bytes, and docs.astro.build answered 404 with no content type and a zero-byte body.
Compression Buys Four to Six Times, Not Enough
All six hosts that served a real file sent content-encoding: gzip when we offered it. The
saving is real and consistent — Cloudflare's 67.6 MB arrives as 11.5 MB, Nuxt's 4.9 MB as 1.29 MB,
Vite's 433 KB as 128 KB. On a character-based estimate of bytes divided by four, that still leaves the
two largest files at roughly 16.9 million and 10.8 million tokens respectively, with
Nuxt and the AI SDK near 1.2 million each.
Treat that arithmetic as planning, not measurement: it is a byte-to-token approximation, not a tokenizer run, and the ratio shifts with code blocks and non-English text. The direction is never in doubt. Any file in the seven-digit token range can only be read in slices, so the file has to be built to be sliced. The size-versus-verdict table for the index file itself is in llms.txt size limits.
Split It the Way Cloudflare Does
The 67.6 MB root file is not the only option that host publishes. Its product sections each carry their own full file, and all three we probed returned 200:
/workers/llms-full.txt— 5,127,319 bytes/learning-paths/llms-full.txt— 1,841,842 bytes/ai-gateway/llms-full.txt— 910,239 bytes
That is the pattern worth copying, and it is the one the spec's subpath rule already supports: an index at a path covers the URLs beneath it, and the most specific file wins. A reader that needs the gateway docs fetches 910 KB instead of 67 MB. Structure it as one file per product or per top-level section, keep the root full file optional, and give each section its own index so the split is discoverable. The same reasoning applies to a markdown-twin pipeline, which is where these files come from — see llms.txt for API documentation.
Only Two of Six Index Files Mention Their Own Full File
We pulled /llms.txt from each of the six hosts that serve a full file and counted references to it:
- nuxt.com — three mentions, including a prose line: "Every documentation, blog and deploy page is also Markdown" followed by the full-file URL and a note that other versions are listed in full there.
- svelte.dev — one entry, "Complete documentation", describing it as all Svelte and SvelteKit docs with examples.
- developers.cloudflare.com, vuejs.org, vite.dev, vitest.dev — zero mentions of
llms-fullin the index file.
Nuxt's wording is the standard to aim for, because it tells a reader both what the file is and
when to prefer it. And ai-sdk.dev shows the failure mode at the other extreme:
its /llms.txt serves 4,724,729 bytes with the same MD5 (eebec45d272ac9891b3c5be10912c124)
as /llms-full.txt on the same host, in text/markdown. The path meant for a
curated index is a 1.2-million-token dump, so an agent that politely checks the conventional URL first
pays the full price before it learns anything.
Three Commands Before You Publish One
The checks that matter are size, encoding and what the index actually links:
# 1. Size and content type of the full file
curl -sSL -o /dev/null -w '%{http_code} %{size_download} %{content_type}\n' \
https://www.example.com/llms-full.txt
# 2. What gzip actually costs a reader (send Accept-Encoding explicitly)
curl -sSL -H 'Accept-Encoding: gzip' -o /dev/null \
-w 'wire=%{size_download} encoding=%{content_type}\n' \
https://www.example.com/llms-full.txt
# 3. Does the index point at it, and how many pages are inside?
curl -sSL https://www.example.com/llms.txt | grep -ci 'llms-full'
grep -c '^url: /' llms-full.txt The third line is the one that finds most problems: either the index is silent and the full file is effectively invisible, or the count is in the thousands and the file should have been split. Build the index in the generator, verify paths and link targets in the checker, then measure the delivered bytes rather than trusting the file in your repository.
The verdict: llms-full.txt is a convention nobody wrote down, published at sizes that no
context window holds, and referenced by only a third of the sites that pay to serve it. Ship it per
section, describe it in one honest line in the index, and let the reader choose the 910 KB slice over
the 67 MB whole.