How Much Text Actually Fits in a 1M Token Context Window? I Measured It , an article on learnai24.com

How Much Text Actually Fits in a 1M Token Context Window? I Measured It

Measured, not estimated

A million token context window sounds enormous. So I fed it real books until it broke, and the number that surprised me was not the big one.

Every model page advertises a context window in tokens. One million. Two hundred thousand. A hundred and twenty eight thousand. Nobody has intuition for a token, so the number lands as pure marketing, and you are left guessing whether your document actually fits.

I stopped guessing. I took twelve books from Project Gutenberg, tokenised every one of them with the same vocabulary the GPT-5.x family uses, and measured what actually fits. Then I did something nobody seems to publish: I measured the same novel in four languages, because a context window is not the same size in every language.

What a 128k window really holds

About 94,000 words of English prose, which is roughly 314 paperback pages. That is a whole novel, as long as it is a shortish one. Frankenstein fits at 97,590 tokens. Tom Sawyer fits at 98,144. The Adventures of Sherlock Holmes does not, at 136,895.

So the honest way to describe a 128k window is not “a book”. It is “a short book, or a long book minus a third of it”.

Where 200k stops

A 200,000 token window holds A Tale of Two Cities whole, at 185,444 tokens. It does not hold Dracula, at 212,262. Those two books sit either side of the line, which is a more useful thing to know than any percentage.

War and Peace is 765,705 tokens. The book people name when they mean “impossibly long” fits inside a one million token window with 234,000 tokens to spare.

The number that actually surprised me

Not the big one. This one: the same novel costs a quarter more context in Italian than in English.

Alice’s Adventures in WonderlandWordsTokensVersus English
English26,52536,8130%
French26,32743,230+17.4%
German25,72543,788+18.9%
Italian23,75545,872+24.6%

Look at the Italian row twice. It has fewer words than the English original, 23,755 against 26,525, and it still costs more tokens, 45,872 against 36,813. Word count and token count are not the same measurement, and if you have been using words as a proxy for context, you have been underestimating every non-English document you own.

Practically: a one million token window holds about 27 copies of Alice in English and about 22 in Italian. Same window, same book, five copies fewer. If your documents are German or Italian, your context window is roughly a fifth smaller than the model page implies. For the wider picture across 28 languages, I measured that separately in the Token Tax Index.

What it holds in code

Books are the fun answer. Code is the one people actually need, so I tokenised the real source of five widely used packages.

ProjectLanguageLinesTokensTokens per 1k lines
express 5.1.0JavaScript2,74615,8885,786
axios 1.7.9JavaScript5,07132,7646,461
requests 2.32.3Python5,66041,7297,373
serde 1.0.215Rust16,193122,1197,541
lodash 4.17.21JavaScript17,210144,1088,374

The spread is narrow enough to be useful: call it 7,100 tokens per 1,000 lines of source. That makes a 128k window about 18,000 lines, and a one million token window about 140,000 lines. The entire runtime source of Express, the framework a large part of the web runs on, is 15,888 tokens. You could paste all of it into a 128k window eight times over.

One caveat I will not paper over: five projects are five projects, not a law about programming languages. Rust looks costlier than JavaScript here, but serde is a serialisation library thick with macros and type annotations, and express is thin routing code. Treat the number as a planning rule, not a language ranking.

The windows themselves, checked today

ModelContext windowMax outputSource
Claude Haiku 4.5200,00064,000platform.claude.com
Claude Sonnet 51,000,000128,000platform.claude.com
Claude Opus 51,000,000128,000platform.claude.com
Claude Fable 5.11,000,000128,000platform.claude.com
GPT-5.6 Luna1,050,000128,000developers.openai.com
GPT-5.6 Terra1,050,000128,000developers.openai.com
GPT-5.6 Sol1,050,000128,000developers.openai.com
Gemini 3.1 Pro1,000,000not stateddocs.cloud.google.com

All eight checked against the vendor’s own documentation on 6 September 2026. Note the output column, because it is the one people forget: a one million token window does not mean a one million token answer. Every one of these caps output at 128,000 tokens or less, and Gemini’s page did not state a figure I could quote, so I have left it blank rather than fill it in.

Fitting is not the same as using

Everything above measures what fits. That is not the same question as what the model can still reliably find in there, and if I left it at the first question I would be repeating the number the vendor wants you to repeat.

Chroma tested 18 models across Anthropic, OpenAI, Google and Alibaba and found that models do not use their context uniformly. Performance gets less reliable as the input grows, and it starts doing so well before the window is full. The degradation is not the same shape for every model family either.

So read the tables above as a capacity limit, the way a lift has a weight limit. Knowing that War and Peace fits in a million tokens tells you the door closes. It does not tell you the model has read the middle of it with the same care as the end. If you are pushing a long document into a model and the answer matters, the useful instinct is not “it fits, so it is fine”. It is “it fits, so now let me check whether it actually found the part I care about”.

Method, so you can reproduce or refute this.

Tokeniser. o200k_base, the vocabulary used by the GPT-5.x family, via gpt-tokenizer 4.0.0. Counts are computed at build time and baked into this page, so nothing is estimated at render.

Texts. Full plain text files from Project Gutenberg, with the Gutenberg header and licence footer stripped before counting, so the number is the book and not the boilerplate. Alice’s Adventures in Wonderland is Gutenberg 11 (English), 55456 (French), 19778 (German), 28371 (Italian): the same work, four published translations.

Code. Released package tarballs from npm, PyPI and crates.io, source directories only, tests and build output excluded.

The two assumptions, stated plainly. Paperback pages use 300 words per page, which is a convention and not a measurement. Lines of code use 7,100 tokens per 1,000 lines, the mean of the five projects above. Everything else on this page is measured.

Measured 6 September 2026.

The bottom line

A 128k window is a short novel. A 200k window stops between A Tale of Two Cities and Dracula. A million tokens swallows War and Peace and still has a quarter of itself left.

But the number to remember is not any of those. It is 24.6 percent, the extra context the same novel costs in Italian while using fewer words. Context windows are advertised in a unit that behaves differently depending on the language you work in, and nobody puts that on the model page.

Similar Posts