Model limits answer two different questions: how much the model can read in one request, and how much it can write back in one response. The original census puts both numbers together for 54 models from 13 vendors, using direct API documentation checked on August 30, 2026.
The practical finding is that a large context window does not guarantee a long answer. In the August 30 baseline, OpenAI's reasoning models publish a 128,000-token output ceiling, Google's text models 65,536, and many consumer or reseller surfaces publish no output limit at all. Here, a surface means the particular API, app, or marketplace where you use a model; a SKU is the specific model entry sold there.
- 01Read capacity and write capacity are separate limits.A workflow can fit its documents inside the context window and still stop mid-answer because the maximum output is much smaller.
- 02A “1M context” label is not always the same quantity.OpenAI's headline window includes its 128K output budget; Google's published input limit and 65,536-token output limit are separate.
- 03The same model can have different limits by surface.An API, chat app, coding tool, or reseller may expose a different ceiling. Store the surface and as-of date with every limit.
- 04Missing output limits are a procurement fact.The August 30 baseline records gaps in consumer apps and direct-provider specifications. September OpenRouter values do not replace missing direct-provider limits.
01 — The output halfThe write ceiling splits three ways.
Start with the half that is missing from the genre. Our own archive has four narrative posts about the context-window race and none about output ceilings, which is a fair reflection of the market. The expectation going in was that max output would be scattered and hard to find. It is not. It is three different things at once, and the three are worth separating because they have three different causes.
First: on API surfaces it is uniform and boring. OpenAI publishes 128,000 max output tokens on every current reasoning SKU — Sol, Terra, Luna, Cyber, 5.5, 5.5 Pro, 5.4, 5.4 Pro, 5.4 mini, 5.4 nano and the surviving Codex variant. Not one of them deviates. Google publishes 65,536 on all seven current Gemini text models, across Flash, Flash-Lite and Pro, and across GA and Preview alike. Anthropic publishes 128K on Fable 5, Opus 5 and Sonnet 5, and 64K on Haiku 4.5 — one exception in an otherwise flat line. Three frontier labs, three flat numbers.
Second: wherever anyone else publishes it, it varies enormously. Moonshot documents Kimi K3 at a default of 131,072 tokens and a ceiling of 1,048,576 — the entire context window, the most permissive figure anywhere in this census. MiniMax documents M3 at a recommended 131,072 and a maximum of 524,288. DeepSeek’s whole V4 line is 384K. Z.ai’s GLM-5.3 is 128K. Tencent’s Hy4 preview caps output at 64K on a 1M context, which is a 16:1 read-to-write asymmetry and the widest of the six Chinese labs.
Third: it is systematically absent from whole vendors and whole surfaces. xAI publishes no max output figure on its model list, on any per-model page, or in its API reference. Meta’s Muse models page has a context-window column and no output column. AWS Bedrock model cards publish a Max output tokens line for Anthropic and Amazon models and omit it for xAI models on the same docs template — so the gap tracks the model vendor rather than the reseller. And neither ChatGPT’s pricing page nor Google’s Gemini app help article states an output limit for any plan.
Uniform on API surfaces
OpenAI’s figure on every current reasoning SKU, from the $0.20-per-million Luna to the $30-per-million Pro tiers. Google’s equivalent is 65,536 across all seven text models; Anthropic’s is 128K on everything except Haiku 4.5. Where a frontier lab publishes max output at all, it does not vary it by tier.
Variable where anyone else publishes it
Across the six Chinese labs at a nominal 1M context, the write ceiling spans sixteen-fold: Kimi K3 at 1,048,576, MiniMax M3 at 524,288, DeepSeek V4 at 384K, Qwen at 131K, GLM-5.3 at 128K, Tencent Hy4 at 64K. Same headline read window, sixteen times the difference in what comes back.
Absent from both consumer apps
openai.com/chatgpt/pricing publishes context windows and an input maximum in pages of text; the word “output” does not appear in its plan comparison at all. Google’s Gemini app help article has a “Context windows” section and no output section. Both checked August 30, 2026. Both are label (a) absences, not search failures.
So the honest headline is not that nobody publishes this. It is that max output is well published on API surfaces, wildly inconsistent between the vendors that publish it, and systematically absent from the surface most people actually use. Those three statements have three different remedies, and only the second one is a standardisation problem.
One boundary before the data. This page is the numbers. What actually happens when a generation runs into one of these ceilings — the truncated JSON, the tool call that never closes, the response that ends mid-sentence with a length finish reason and no error — is the subject of our companion piece on silent output truncation in agent pipelines, not of this one. The failure modes live there. The limits live here.
A model that can read a 300-page document and is capped at roughly four pages of reply is a summariser by construction, whatever else it is marketed as.Digital Applied analysis, August 30, 2026
02 — MethodWhat was collected, and how the gaps are marked.
The hard part of a limits census is not the cells you can fill. It is deciding what to do with the ones you cannot, because deleting them turns a vendor’s silence into our omission. Every unfilled cell in this table is kept in, and carries one of three labels that say which kind of failure it is.
- What was collected
- For every current text model with a published API surface: the context window, the maximum input tokens, the maximum output tokens, whether the vendor states that the context figure includes the output budget, and the resulting context-to-output ratio. Where a vendor publishes a default and a ceiling separately, both are recorded and the mechanism is named.
- Vendors reviewed (13)
- OpenAI, Anthropic, Google, xAI, Meta, Mistral, Amazon, DeepSeek, Alibaba (Qwen), Zhipu / Z.ai, Moonshot, MiniMax and Tencent. Surfaces reviewed beyond the direct APIs: Microsoft Foundry, AWS Bedrock, Google Vertex AI, the ChatGPT consumer app, the Gemini consumer app, Claude chat, Claude Code and Claude Cowork.
- Sources
- The original baseline uses model pages, pricing pages, API references, docs tables, model cards and help centre articles owned by the vendor whose number is being recorded. Reseller figures are labelled as reseller figures and are never merged into a vendor row. No aggregator or third-party tracker supplied a number in that baseline. The September supplement identifies OpenRouter as its source.
- September supplement
- Twelve OpenRouter route records were collected September 9, 2026 from the all-modality Models API. They are routing-provider observations, not direct-vendor re-verifications or September 8 collection claims.
- Dates
- The original pages were fetched on August 30, 2026, and that baseline’s as-of date remains August 30, 2026. The separately labelled OpenRouter supplement was observed September 9, 2026.
- Units
- Table cells quote the vendor’s spec-table figure, not its prose rounding — 65,536 rather than “64k”, 1,048,576 rather than “1M”. Google’s own “What’s new” page says “64k max output tokens” while its model spec tables say 65,536; these are the same number (64 × 1024), and two writers quoting two Google pages would otherwise appear to contradict each other. Round numbers appear only in prose. Where a vendor itself publishes a round figure and no exact one — Anthropic’s “1M / 128K”, DeepSeek’s “384K” — the round figure is what the cell carries, because inventing precision the vendor did not publish is worse than reporting its rounding.
- The three UNVERIFIED labels
- They mean different things and render in three different styles so the distinction survives a screenshot. UNVERIFIED (a) — the vendor does not publish it; the absence is the finding. UNVERIFIED (b) — the page could not be located; this is our gap, not the vendor’s. UNVERIFIED (c) — the page was located but the figure could not be read from it, typically a JavaScript widget or a partial render.
- Known limitations
- The census covers text models only; image, video, audio and embedding models are out of scope. Ratios are computed from the figures in the same row and rounded to one decimal place, so a row whose inputs are themselves rounded carries a rounded ratio. Where a vendor publishes both a recommended and a maximum output value, the ratio is given at the maximum and the default is named in the cell. Rows for OpenAI’s
gpt-5.5,gpt-5.4and the two Pro tiers leave max input unfilled rather than subtracting: those pages publish context and max output and omit the max-input line, and the 400,000 shape proves the arithmetic is model-specific rather than universal. Finally, this is a record of what vendors publish, not of what any endpoint returns under load — we did not probe the APIs.
03 — The spine“1M” is not one quantity.
This is the single most important mechanic on the page, and it is invisible in every side-by-side comparison we have seen. OpenAI and Google both advertise a million-token context window. They are not measuring the same thing.
OpenAI’s model pages publish three numbers for GPT-5.6 Sol: a context window of 1,050,000, a maximum input of 922,000, and a maximum output of 128,000. Those add up exactly. The headline context figure is the sum of the read budget and the write budget, which means the usable input is 922,000 tokens and never the advertised million. Google’s model pages publish an input token limit of 1,048,576 and an output token limit of 65,536, and the second is on top of the first.
Set those side by side and the comparison inverts depending on which column you read. On the read side Google’s window is 126,576 tokens larger than OpenAI’s usable input. On the total-tokens side OpenAI’s envelope is 1,050,000 against Google’s 1,114,112. Neither vendor is being misleading on its own page; the misleading step is the comparison table that puts “1,050,000” next to “1,048,576” and calls them a tie. A census table without an explicit does-this-include-output column misleads about precisely the thing it exists to clarify, which is why the one below has one.
Context includes output
The three published figures partition exactly, and the same holds on the smaller shape: 400,000 = 272,000 + 128,000. Whatever you allow the model to write comes out of the window you thought you had for reading. Budget your prompt against 922,000, not 1,050,000.
Output sits on top
Google labels its two figures “input token limit” and “output token limit” rather than publishing a combined context number at all. The full input budget is available regardless of how long the response runs, and the same pair holds on all seven current text models without variation.
Never stated either way
Anthropic, DeepSeek, Z.ai, MiniMax, Meta and Mistral publish a context figure and (sometimes) a max output figure with no statement about whether one contains the other. Moonshot is the exception that proves it is answerable: its API rejects any request where input plus max_completion_tokens exceeds the window.
Two structural details follow from the same source pages. OpenAI runs two shapes and only two: 1,050,000 / 922,000 / 128,000 for the flagship and Pro tiers, and 400,000 / 272,000 / 128,000 for mini, nano, Codex and Cyber. The max input on the smaller shape is 272,000 — which is exactly the threshold at which OpenAI’s long-context pricing kicks in. The cheap and specialised SKUs stop at the precise point where the expensive ones start charging double. That is not a coincidence worth over-reading, but it is a genuine design fact: you cannot accidentally trigger long-context billing on a mini model, because the model will not accept a long-context prompt. What that threshold costs on the models that do accept it is the subject of our analysis of long-context pricing cliffs; here it matters only as the shape of a limit.
Google, meanwhile, is perfectly uniform. All seven current text models carry 1,048,576 in and 65,536 out — Flash, Flash-Lite and Pro, GA and Preview, the cheapest model and the dearest. Google differentiates its tiers entirely by price and does not differentiate them by limit at all.
Put those together and the usual framing is backwards. The number the market treats as the headline spec, the context window, is the one that varies — 1,050,000 or 400,000 at OpenAI, 1M or 200K at Anthropic, 500,000 or 1,000,000 at xAI, 256k across Mistral’s own line. The number the market ignores, the output ceiling, is the one that holds still. If you are writing a routing layer that has to degrade gracefully, the write ceiling is the constant you can code against and the read window is the variable you have to look up.
04 — The CensusFifty-four models, both numbers.
September 9 supplement: 12 OpenRouter routes
These exact route records were observed September 9, 2026 in the all-modality OpenRouter snapshot. They add September-listed models and their batch or contributor surfaces to this maintained reference. The original 54 direct-provider rows below remain dated August 30; their values are not silently replaced with aggregator limits.
| OpenRouter route | Catalog context | Served context | Catalog max output |
|---|---|---|---|
| openai/gpt-6-astra | 1,050,000 | 1,050,000 | 128,000 |
| openai/gpt-6-astra:batch | 1,050,000 | 1,050,000 | 128,000 |
| openai/gpt-6-astra-pro | 1,050,000 | 1,050,000 | 128,000 |
| openai/gpt-6-astra-pro:batch | 1,050,000 | 1,050,000 | 128,000 |
| anthropic/claude-fable-5.1 | 1,000,000 | 1,000,000 | 128,000 |
| anthropic/claude-fable-5.1:batch | 1,000,000 | 1,000,000 | 128,000 |
| google/gemini-3.8-flash | 1,048,576 | 1,048,576 | 65,536 |
| google/gemini-3.8-flash:batch | 1,048,576 | 1,048,576 | 65,536 |
| meta/muse-spark-1.3 | 1,048,576 | 1,048,576 | 943,718 |
| meta/muse-spark-1.3-contributor | 1,048,576 | 1,048,576 | 943,718 |
| qwen/qwen3.8-max-0902 | 1,000,000 | 1,000,000 | 131,072 |
| inception/mercury-2.5 | 260,000 | 260,000 | 65,536 |
A catalog maximum is not a guarantee that the selected endpoint accepts every request at that limit. The snapshot does not establish a separate maximum-input allowance for these routes, so none is invented here. Context and maximum output must not be added together to claim a larger supported window. Batch and contributor suffixes are separate surfaces, not new base model families.
Rows are grouped by vendor, and each group header names the first-party page the group’s figures came from. The column that does the most work is Context includes output? — without it, the ratio column and the context column cannot be compared across vendors. Cells reading UNVERIFIED (a), UNVERIFIED (b) or UNVERIFIED (c) are kept in deliberately; see the methodology above for what each one means.
| # | Model | Surface | Context window | Max input | Max output | Context includes output? | Context : output |
|---|---|---|---|---|---|---|---|
| OpenAI — platform.openai.com/docs/models (11 rows) | |||||||
| 1 | gpt-5.6-sol | OpenAI direct API | 1,050,000 | 922,000 | 128,000 | Yes — 922,000 + 128,000 = 1,050,000 exactly | 8.2:1 |
| 2 | gpt-5.6-terra | OpenAI direct API | 1,050,000 | 922,000 | 128,000 | Yes — the three figures partition | 8.2:1 |
| 3 | gpt-5.6-luna | OpenAI direct API | 1,050,000 | 922,000 | 128,000 | Yes — the three figures partition | 8.2:1 |
| 4 | gpt-5.6-cyberDaybreak, gated | OpenAI direct API | 400,000 | 272,000 | 128,000 | Yes — 272,000 + 128,000 = 400,000 exactly | 3.1:1 |
| 5 | gpt-5.5 | OpenAI direct API | 1,050,000 | UNVERIFIED (a)Max-input line absent from this page | 128,000 | Not stated on this page; the 5.6 family’s pages do state it | 8.2:1 |
| 6 | gpt-5.5-pro | OpenAI direct API | 1,050,000 | UNVERIFIED (a) | 128,000 | Not stated on this page | 8.2:1 |
| 7 | gpt-5.4 | OpenAI direct API | 1,050,000 | UNVERIFIED (a) | 128,000 | Not stated on this page | 8.2:1 |
| 8 | gpt-5.4-pro | OpenAI direct API | 1,050,000 | UNVERIFIED (a) | 128,000 | Not stated on this page | 8.2:1 |
| 9 | gpt-5.4-mini | OpenAI direct API | 400,000 | 272,000 | 128,000 | Yes — the three figures partition | 3.1:1 |
| 10 | gpt-5.4-nano | OpenAI direct API | 400,000 | 272,000 | 128,000 | Yes — the three figures partition | 3.1:1 |
| 11 | gpt-5.3-codexOnly live Codex variant | OpenAI direct API | 400,000 | 272,000 | 128,000 | Yes — the three figures partition | 3.1:1 |
| Anthropic — platform.claude.com/docs/en/models (4 rows) | |||||||
| 12 | Claude Fable 5 | Claude API | 1M | UNVERIFIED (a) | 128K | Not stated | 8:1 |
| 13 | Claude Opus 5 | Claude API | 1M | UNVERIFIED (a) | 128K | Not stated | 8:1 |
| 14 | Claude Sonnet 5 | Claude API | 1M | UNVERIFIED (a) | 128K | Not stated | 8:1 |
| 15 | Claude Haiku 4.5Breaks the family pattern | Claude API | 200K | UNVERIFIED (a) | 64K | Not stated | 3.1:1 |
| Google — ai.google.dev/gemini-api/docs/models (7 rows, all identical) | |||||||
| 16 | Gemini 3.7 Flash | Gemini Developer API | 1,048,576 | 1,048,576 | 65,536 | No — Google publishes an input limit with output on top | 16:1 |
| 17 | Gemini 3.6 Flash | Gemini Developer API | 1,048,576 | 1,048,576 | 65,536 | No — output on top | 16:1 |
| 18 | Gemini 3.5 Flash | Gemini Developer API | 1,048,576 | 1,048,576 | 65,536 | No — output on top | 16:1 |
| 19 | Gemini 3.5 Flash-Lite | Gemini Developer API | 1,048,576 | 1,048,576 | 65,536 | No — output on top | 16:1 |
| 20 | Gemini 3.1 Flash-Lite | Gemini Developer API | 1,048,576 | 1,048,576 | 65,536 | No — output on top | 16:1 |
| 21 | Gemini 3.1 Progemini-3.1-pro-preview | Gemini Developer API | 1,048,576 | 1,048,576 | 65,536 | No — output on top | 16:1 |
| 22 | Gemini 3 Flash Preview | Gemini Developer API | 1,048,576 | 1,048,576 | 65,536 | No — output on top | 16:1 |
| xAI — docs.x.ai/docs/models (5 rows, no max output on any surface) | |||||||
| 23 | grok-4.6Smaller than grok-4.3 | xAI direct API | 500,000 | UNVERIFIED (a) | UNVERIFIED (a)Absent from the model list, the model page and the API reference | Not stated | — |
| 24 | grok-4.5 | xAI direct API | 500,000 | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| 25 | grok-4.3 | xAI direct API | 1,000,000 | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| 26 | grok-4.20Reasoning, non-reasoning, multi-agent | xAI direct API | 1,000,000 | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| 27 | grok-build-0.1 | xAI direct API | 256,000 | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| DeepSeek — api-docs.deepseek.com/quick_start/pricing (3 rows) | |||||||
| 28 | deepseek-v4-pro | DeepSeek direct API | 1M | UNVERIFIED (a) | 384K | Not stated | ~2.6:1 |
| 29 | deepseek-v4-flash | DeepSeek direct API | 1M | UNVERIFIED (a) | 384K | Not stated | ~2.6:1 |
| 30 | deepseek-v4-flash-vision-exp | DeepSeek direct API | 1M | UNVERIFIED (a) | 384K | Not stated | ~2.6:1 |
| Alibaba Qwen — qwencloud.com model pages (6 rows, richest disclosure in the census) | |||||||
| 31 | qwen3.8-maxMax reasoning budget 262K, published separately | Qwen Cloud | 1M | 991K983K in thinking mode | 131K | Not stated — and 991K + 131K exceeds the stated 1M window, so the three ceilings cannot all bind at once | ~7.6:1 |
| 32 | qwen3.8-flash | Qwen Cloud | 1M | 991K | 131K | Not stated | ~7.6:1 |
| 33 | qwen3.7-max | Qwen Cloud | 1M | 991K | 131K | Not stated | ~7.6:1 |
| 34 | qwen3.7-plus | Qwen Cloud | 1M | 991K | 131K | Not stated | ~7.6:1 |
| 35 | qwen3.7-flash | Qwen Cloud | 1M | 991K | 131K | Not stated | ~7.6:1 |
| 36 | qwen3.6-max-preview | Qwen Cloud | 262K | 245K | 65K | Not stated | 4:1 |
| Zhipu / Z.ai — docs.z.ai/guides/llm (2 rows) | |||||||
| 37 | GLM-5.3 | Z.ai direct API | 1M | UNVERIFIED (a) | 128K | Not stated | 8:1 |
| 38 | GLM-5.3-Flash | Z.ai direct API | 1M | UNVERIFIED (a) | 128K | Not stated | 8:1 |
| Moonshot — platform.kimi.ai/docs (3 rows) | |||||||
| 39 | kimi-k3Ceiling equals the whole window | Moonshot direct API | 1,048,576 | UNVERIFIED (a) | 1,048,576Default 131,072, settable to the ceiling | Yes — the API rejects a request whose input plus max_completion_tokens exceeds the window | 1:18:1 at the default |
| 40 | kimi-k2.7-code | Moonshot direct API | 262,144 | UNVERIFIED (a) | UNVERIFIED (a)Only K3 carries a documented default and ceiling | Not stated for this model | — |
| 41 | kimi-k2.6 | Moonshot direct API | 262,144 | UNVERIFIED (a) | UNVERIFIED (a) | Not stated for this model | — |
| MiniMax — platform.minimax.io/docs (2 rows) | |||||||
| 42 | MiniMax-M3 | MiniMax direct API | 1,000,000 | UNVERIFIED (a) | 524,288Recommended 131,072 | Not stated | 1.9:17.6:1 at the recommended value |
| 43 | MiniMax-M2.7 | MiniMax direct API | 204,800 | UNVERIFIED (a) | 204,800Recommended 65,536; blanket rule for non-M3 models | Not stated | 1:13.1:1 at the recommended value |
| Tencent Hunyuan — tencentcloud.com Hy API Guide (2 rows) | |||||||
| 44 | hy4-previewWidest asymmetry of the six Chinese labs | Tencent Cloud | 1M | 960k | 64k | Not stated — though 960k + 64k = 1,024k, which is consistent with inclusion. That addition is ours, not Tencent’s. | 16:1 |
| 45 | hy3 | Tencent Cloud | 256k | 192k | 128k | Not stated | 2:1 |
| Meta — ai.developer.meta.com/docs/models (3 rows, no max-output column exists) | |||||||
| 46 | muse-spark-1.1 | Meta Model API | 1,048,576 | UNVERIFIED (a) | UNVERIFIED (a)The models table has a context column and no output column | Not stated | — |
| 47 | muse-spark-1.2 | Meta Model API | 1,048,576 | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| 48 | muse-spark-1.2-contributorSame checkpoint, discounted data-sharing tier | Meta Model API | 1,048,576 | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| Mistral — docs.mistral.ai/models (4 rows, and the asymmetry inside them) | |||||||
| 49 | Mistral Medium 3.5 | Mistral direct API | 256k | UNVERIFIED (a) | UNVERIFIED (a)Max output field absent from the card | Not stated | — |
| 50 | Mistral Small 4 | Mistral direct API | 256k | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| 51 | Mistral Large 3 | Mistral direct API | 256k | UNVERIFIED (a) | UNVERIFIED (a) | Not stated | — |
| 52 | Z.ai GLM 5.2, hosted by MistralThe only Mistral card with a max output field | Mistral direct API | 1M | UNVERIFIED (a) | 128k | Not stated | 8:1 |
| Amazon — docs.aws.amazon.com Bedrock model cards (2 rows) | |||||||
| 53 | Amazon Nova ProWidest asymmetry in the census | AWS Bedrock | 300K | UNVERIFIED (a) | 5K | Not stated | 60:1 |
| 54 | Amazon Nova PremierLifecycle: Legacy · EOL September 14, 2026 | AWS Bedrock | 1M | UNVERIFIED (a) | 25K | Not stated | 40:1 |
Two reference points sit outside the table because they are Azure’s figures for a model router rather than a model. Microsoft documents the router’s max output values as 32,768 for the GPT-4.1 series, 100,000 for o4-mini, 128,000 for the GPT-5 reasoning models and 16,384 for gpt-5-chat. That last figure is the lowest current max output we found at either OpenAI or Google, and it belongs to the chat-optimised variant — the one closest to what a consumer product would route to.
For the money side of the same 54 models, our frontier model API price index is the companion asset, published the same day and maintained on the same cadence. It carries the promotional rates and their end dates in their own column; this page carries no prices at all.
05 — Ceiling vs budgetA max output figure is a ceiling, not an allocation.
The most useful sentence anyone has written about these numbers was not written by a model lab. It is in Microsoft’s Azure AI Foundry documentation, describing the max output column of its own model table, and it is the thing readers most often get wrong.
“The Max Output Tokens column sets an upper limit, not a guaranteed output size. An API parameter such as max_output_tokens doesn’t reserve tokens when the request has less context budget available.”
learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/models, fetched August 30, 2026. It is Microsoft, not OpenAI, that states the caveat on OpenAI’s own numbers.
Read the census again with that in mind and several rows stop looking like contradictions. Qwen publishes a 1M context, a 991K max input and a 131K max output for qwen3.8-max. Those three do not sum — 991K of input leaves nowhere near 131K of room inside a one-million-token window. They are not meant to sum. Each is an independent ceiling that binds only when the other two are well below their own. Fill the input to 991K and the output you actually get will be a fraction of 131K, with no error and no warning that the documented ceiling was never available.
OpenAI’s numbers behave differently, and the difference is visible precisely because the census records the relation. 922,000 plus 128,000 is 1,050,000 exactly, so OpenAI’s two figures do partition the window: the output budget is genuinely reserved against the context total. Google’s do not interact at all, because the output limit sits outside the input limit. Three vendors, three different relationships between the same two numbers, and only one of them documented in a way a reader would notice.
The practical consequence is that a max output figure tells you what the model will never exceed and nothing about what it will produce on any given call. That gap between the documented ceiling and the achievable one is where output truncation comes from, and it is the subject of our companion post on why long agent outputs fail silently. The numbers on this page are the input to that analysis, not a substitute for it.
06 — By surfaceOne model, one plan, three ceilings.
The strongest single fact in this census does not require leaving one vendor. Anthropic publishes a support article on how large Claude’s context window is, and the answer is different in each of its own products. Claude Opus 4.6 gets a 1M token context in Claude Code, 500K in Claude chat, and 200K in Claude Cowork — same model, same paid plan, three ceilings, all documented by Anthropic on one page.
| Model | Claude API | Claude chat, paid | Claude Code, Pro to Enterprise | Claude Cowork, Pro to Enterprise |
|---|---|---|---|---|
| Opus 5 | 1M | 1M | 1MPro must enable usage credits | 1M |
| Sonnet 5 | 1M | 1M | 1M | 1MAuto-compacts at 500K |
| Fable 5 | 1M | Not named in the article; 200K by its residual rule | 1M | 1M |
| Opus 4.8 | Not in the model overview table | 500K | 1M | 1M |
| Opus 4.7 | Not in the model overview table | 500K | 1M | 1M |
| Opus 4.6 | Not in the model overview table | 500K | 1M | 200K |
| Sonnet 4.6 | Not in the model overview table | 500K | 1MUsage credits required except on usage-based Enterprise | 200K |
| Haiku 4.5 | 200K | 200K | Not named | 200K |
Three things in that table are invisible to a check-the-vendor’s-page approach. Opus 4.6 spans five-fold across three of one vendor’s own products. A context window can be a paywall inside a paid plan: Pro subscribers must switch on usage credits — that is, opt into metered API-rate billing — to reach 1M on Opus in Claude Code, so the plan price does not buy the ceiling. And “1M” can mean “compacts at 500K”, which Anthropic documents for Sonnet 5 in Cowork. The published ceiling and the behavioural ceiling are different objects, and the vendor says so.
Newer is not larger. xAI’s own model pages put Grok 4.6 at a 500,000-token context window and Grok 4.3 at 1,000,000. The newer flagship, released August 12, 2026, halved the window of the model it succeeded — and also lost Batch API support and the eu-west-1 region that Grok 4.3 carries. A reader who assumes the later version number implies the larger window is simply wrong, and no amount of reading the launch post would tell them.
The consumer split is real and it is asymmetric. OpenAI’s API window is 1,050,000 tokens; ChatGPT Pro gets 400K in reasoning mode and 128K in instant mode, Plus and Go get 256K and 54K, and Free instant gets 27K. That last figure is about 2.6% of the API window — a factor of roughly 39. Google runs the other way entirely: the Gemini app on AI Pro or AI Ultra is documented at 1 million tokens, essentially parity with the developer API, with AI Plus at 128k and no plan at 32k. Google’s paying consumer gets the developer window. OpenAI’s does not.
| Surface | Context window | Max output | Against its own API |
|---|---|---|---|
| OpenAI | |||
| OpenAI API, GPT-5.6 family | 1,050,000 including output | 128,000 | Baseline |
| ChatGPT Pro | 400K reasoning · 128K instant | UNVERIFIED (a) | About 38% of the API window on reasoning |
| ChatGPT Plus and Go | 256K reasoning · 54K instant | UNVERIFIED (a) | About 24% of the API window on reasoning |
| ChatGPT Free | 27K instant · reasoning “varies” | UNVERIFIED (a) | About 2.6% of the API window on instant |
| Gemini Developer API | 1,048,576 input, output on top | 65,536 | Baseline |
| Gemini app, AI Pro and AI Ultra | 1 million | UNVERIFIED (a) | Near parity with the API |
| Gemini app, AI Plus | 128k | UNVERIFIED (a) | About 12% of the API input limit |
| Gemini app, no AI plan | 32k | UNVERIFIED (a) | About 3% of the API input limit |
One detail makes the ChatGPT rows harder to use than they look. OpenAI’s consumer page labels its two modes “GPT Instant” and “GPT Reasoning”, not model IDs, and publishes no mapping from those labels to gpt-5.6-sol or chat-latest. A ChatGPT subscriber therefore cannot look up their own limits in the API documentation, because the two surfaces do not share a vocabulary.
Reseller catalogues lag, and keep selling the dropped. xAI’s direct API is on Grok 4.6. Microsoft Foundry’s newest Grok is Grok 4.2, four model generations behind, and it still meters Grok-3, Grok-3 Mini, Grok-4 and Grok4 Fast. Google Vertex AI still sells Grok 4.1 Fast, which xAI’s own model list no longer carries. AWS Bedrock’s own “model launch date” for Grok 4.3 is June 15, 2026 against xAI’s April 17 release — a listing date, not a release date. So a question as simple as “what is this model’s context window” has no answer until you say where you bought it. The pricing consequences of that same lag are catalogued in our ledger of AI coding plan limit changes.
07 — AbsencesWhere the number does not exist at all.
An absence is only a finding if you say exactly what you checked. The table below narrows each one to the specific pages fetched on August 30, 2026, and names the method. None of these is a claim that a figure exists nowhere in the world; each is a claim that it is not on the pages a developer or a subscriber would actually consult.
| Missing figure | Exactly what was checked | Method | Label |
|---|---|---|---|
| Max output, all xAI models | The model list, the per-model pages for Grok 4.6 and 4.3, and the API reference. Also the two AWS Bedrock Grok model cards and the Vertex AI Grok listing. | Direct fetch of each page plus a string search for max output and max_tokens | UNVERIFIED (a) |
| Max output, all Meta Muse models | The Models page and the pricing and rate-limits page. The models table has a context-window column; there is no max-output column on it. | Direct fetch, column-level read | UNVERIFIED (a) |
| Max output, Mistral’s own three models | The Medium 3.5, Small 4 and Large 3 model cards, against the Z.ai GLM 5.2 card on the identical template. The Max output field renders on the third-party card and is absent from all three Mistral-authored ones. | Two independent fetch methods, field-level comparison | UNVERIFIED (a) |
| Max output, ChatGPT consumer app, all four plans | openai.com/chatgpt/pricing. The page publishes context windows and an input maximum expressed in pages of text; the string “output” does not appear in the plan comparison at all. | Direct fetch plus a whole-page string search | UNVERIFIED (a) |
| Max output, Gemini consumer app, all three plans | Google’s Gemini help article on context windows. It has a “Context windows” section and no output-limit section. | Direct fetch, section-level read | UNVERIFIED (a) |
| Max output, Moonshot’s K2.x line | The per-model pricing pages for kimi-k2.7-code, k2.6 and k2.5. Only K3 carries a documented default and ceiling, in the chat API reference rather than on the pricing page. | Direct fetch of the markdown twins of each doc page | UNVERIFIED (a) |
| Context window, Claude free tier | Anthropic’s context-window support article, which is titled and scoped to paid plans throughout and never states a free figure. | Direct fetch, full-article read | UNVERIFIED (a) |
| Context and max output, Vertex AI’s Grok listing | Google’s partner-models page for xAI Grok. The URL returned roughly 7KB with no model-spec content; the specification page was not located at that path. | Direct fetch, then a second attempt at an alternate path | UNVERIFIED (b) |
| Qwen Cloud spec block, qwen3.8-flash and qwen3.6-max-preview | Both model pages were located and their context blocks rendered, but the adjacent detail block returned a partial render on two attempts. The context and output figures in the census come from the blocks that did render. | Two fetch attempts per page, partial payload both times | UNVERIFIED (c) |
One row in that table is worth reading twice, because it makes the point better than any argument could. Mistral publishes a max output field on the third-party model it resells and omits that field entirely from its own model cards. The template is identical. The field renders on the Z.ai GLM 5.2 card at 128k and does not render on Medium 3.5, Small 4 or Large 3. This is not a fetch artifact — it was confirmed on two independent methods. Whatever the reason, the practical result is that a Mistral customer can learn the write ceiling of the model Mistral did not build and not of the three it did.
The AWS case has the same shape at a different layer. Bedrock model cards publish a Max output tokens line for Anthropic and Amazon models — that is where Nova Pro’s 5K and Nova Premier’s 25K in the census come from — and omit it for xAI models rendered from the same docs template. The gap tracks the model vendor, not the reseller. Which means the absence is not a platform policy; it is whatever each model vendor hands over.
08 — RatiosWhat the read-to-write ratio actually tells you.
Divide the context window by the max output and you get a single number that says how lopsided a model is between reading and writing. Across the whole census it runs from 1:1 to 60:1 — a sixty-fold spread in what the same nominal “large context model” category will actually let you produce.
The bar chart below reads output as a percentage of the model’s own context figure, which is the same ratio inverted and easier to compare visually. One caution attaches to every bar: the Google row is computed against an input limit rather than a total window, so its 6.3% is not the same measurement as Tencent’s 6.3%. That is the include-output column doing its job — a ratio is only comparable across vendors once you know which quantity is in the denominator.
Max output as a share of the model's own context figure
Vendor spec tables · Aug 30, 2026Three readings come out of that spread. First, within the six Chinese labs — all of which advertise a nominal one-million-token window — the write ceiling varies sixteen-fold, from Kimi K3’s 1,048,576 down to Tencent Hy4’s 64K. Same headline read spec, sixteen times the difference in output. Second, the widest asymmetry anywhere in the census is not Chinese at all: Amazon Nova Pro pairs a 300K window with a 5,000-token output ceiling, 60:1. A model that can read a 300-page document and is capped at roughly four pages of reply is a summariser by construction, whatever else it is marketed as.
Third, and least obvious: a low ratio is not automatically better. A 1:1 ratio, as at Kimi K3, means the write ceiling is the whole window, which is generous and also means output consumes the space your prompt needed. Moonshot documents exactly that — the API rejects any request where input plus max_completion_tokens exceeds the window. A ratio tells you the shape of the trade, not which side of it you want. Both of the older context-window guides in our archive — the 1M-to-10M comparison and the arms-race guide — are about the read side only, which is exactly the omission this census exists to close.
Looking forward, the direction of travel is legible in the census itself. The three labs that publish max output most consistently also hold it constant across their entire lineup, which is what you do when a number has become a platform commitment rather than a per-model spec. The labs where it varies sixteen-fold are the ones still treating it as a serving parameter. If that pattern holds, the interesting question over the next few quarters is not whether context windows grow past 1M — they will — but whether the write ceiling converges the way the read window has, or whether it stays the quiet differentiator it is today.
09 — Using itHow to use this census correctly.
A reference table is only as good as the four or five habits it makes easier. These are the ones this data supports, and the ones it does not.
Never compare two context numbers without the third column
OpenAI’s 1,050,000 and Google’s 1,048,576 are not the same quantity. Read the include-output cell before you read the context cell, every time. If it says “Not stated”, treat the two vendors’ figures as incomparable rather than equal — which is most of the census.
Budget the response, not just the prompt
Where a vendor publishes max output, the number is usually the stable one across that vendor’s line, so it is the one worth encoding as a constant in a routing layer. If a workload needs more than 128,000 tokens back in one call, only four vendors in this census publish a ceiling that high: Moonshot, MiniMax, DeepSeek, and Qwen.
A model ID is not enough to state a limit
Claude Opus 4.6 has three different context windows across three Anthropic products on the same plan. Grok 4.6 has none published for output on any of its four surfaces. Any internal document that records a limit should record where it was measured and on what date, or it will be wrong within a quarter.
Do not assume the documented maximum is available
Microsoft states it plainly for its own table: the max output column is an upper limit, not a guaranteed output size, and the parameter does not reserve tokens when the request has less context budget left. Instrument the finish reason on long generations rather than trusting the spec sheet.
The limitation to hold onto is that everything above is a record of what vendors publish, not of what endpoints return. We did not probe a single API for this page. That is a deliberate boundary — a published-figures census can be re-verified by anyone against the same URLs, and a measured census cannot — but it means the numbers describe the contract rather than the behaviour. Where the two diverge is precisely where truncation bugs live.
If a limit in this table sits between your team and a workload that has to ship — a document pipeline that keeps stopping short, a migration whose model choice hinges on a write ceiling nobody published, an agent that has to route around a 16,384-token cap it did not expect — that is the kind of problem our AI transformation engagements open with. The census is free and the model selection is the easy part; designing around the ceiling is the work.
10 — ConclusionTwo numbers, kept together.
Fifty-four models, both halves of the limit, and an explicit column for what the headline number actually contains.
The design decision that makes this table worth citing is the third column from the right. Without a stated answer to “does this context figure include the output budget”, a census of context windows is a list of numbers that look comparable and are not. OpenAI’s million contains its output; Google’s does not; most other vendors never say. That is not a footnote to the data — it is the difference between the data being usable and being decorative.
The finding that surprised us is that the neglected number is the well-behaved one. Max output is uniform across the published API cards at all three Western frontier labs and varies not at all by tier, while the context window — the number the entire market reports — moves between SKUs, between product surfaces inside one vendor, and even backwards between generations at xAI. If you have to pick one figure to trust without re-checking it every month, pick the published output ceiling — not the headline context window.
The gaps stay in. Nine of them, each narrowed to the pages actually checked and labelled with which of three failures it represents. Most are label (a) — the vendor does not publish it — which is a finding about the vendor and not about our research, and deleting those rows would have made this table cleaner and materially less true. We will refresh it monthly, append models as they ship, and re-date the page rather than replace it.