Format & Spec · October 2026

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:

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'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.