The context column on the OrcaRouter Gemini models page has thirty cells. Twelve show a dash, eighteen show a value — and five of the eighteen are showing you the wrong number.
Those five belong to the per-request image rows, whose cells slide one position to the left because the phrase “per request” occupies the input column. What lands in their context position is the digit 5, which is their quality score. Two of the five do carry a real context window in the underlying data, at 65,536 tokens, and the table hides it behind the shift; the other three genuinely have none.
So the true split is fifteen rows with a context window and fifteen without. Twelve say so with a dash, five say so by misaligning a row, and two of those five are hiding a value that exists.
| Group | Rows | Why there is no window |
| Aliases | `google/gemini-pro-latest`, `google/gemini-flash-latest`, `google/gemini-flash-lite-latest` | They point at another row’s model |
| Other product families | imagen ×3, embedding ×2, TTS ×3, robotics ×1 | Not completion endpoints |
| Chat rows with a missing value | `google/gemini-3.1-flash-lite`, `Gemma 4 31B`, `google/gemini-3-flash-preview-ks` | Chat models, no window in the table |
Three aliases, nine other-product rows, three chat rows with a genuinely missing value. Only the last group is missing information.
The three aliases
`google/gemini-pro-latest`, `google/gemini-flash-latest` and `google/gemini-flash-lite-latest` are identifiers that resolve to whichever model currently holds that name. They carry rates — $4.00/$18.00, $0.500/$3.00 and $0.250/$1.50 respectively [VENDOR] — and quality scores of 8, 6 and 6 on the page’s own composite [OURS].
What they do not carry is a context window, and the reason is structural rather than editorial: an alias’s window is whatever the model it currently points at has. Writing 1M in that cell today would be a claim about a model the alias may stop pointing at tomorrow.
That is sensible design and a real trap for anyone building from the table. An alias row is not a model; it is a pointer, and every property that could change when the pointer moves has been left blank. The three keep their prices because the provider publishes a rate for the name; they lack windows because the window belongs to the target.
There is a second consequence worth naming. The pro alias at $4.00/$18.00 is priced above Gemini 3.1 Pro Preview’s $2.00/$12.00, and the flash alias at $0.500/$3.00 sits below Gemini 3.8 Flash’s $0.750/$3.75. Whether that premium reflects a different target model or a charge for the moving name, the table does not say.
The nine other-product rows
This group looks worst and is actually fine.
Three imagen rows price per request at $0.020, $0.040 and $0.060 and carry no context window at all. Two Nano Banana rows also price per request, at $0.151 and $0.240, and both do carry a 65,536-token window in the underlying data — the one every positional parser loses to the cell shift.
Two embedding rows — `google/gemini-embedding-001` at $0.150 and `google/gemini-embedding-2-preview` at $0.200/$0.200 — produce vectors. A vector has no context either.
Three TTS rows — `google/gemini-2.5-flash-preview-tts` at $0.500/$10.00, `google/gemini-2.5-pro-preview-tts` at $1.00/$20.00 and `google/gemini-3.1-flash-tts-preview` at $1.00/$20.00 — produce audio. Their prices do sit in the token columns, which is its own oddity, but the absent window is straightforward.
One robotics row — `google/gemini-robotics-er-1.6-preview` at $1.00/$5.00 with a 65K output ceiling — rounds out the group.
Nine rows, four product families, one consistent explanation: the context column is a property of chat and completion models, and this catalogue contains eleven rows that are not.
The three that are genuinely missing
Which leaves three chat models with nothing in the cell: `google/gemini-3.1-flash-lite`, `Gemma 4 31B` and `google/gemini-3-flash-preview-ks`.
All three carry rates — $0.250/$1.50 with a $0.025 cached price, $0.130/$0.380 with $0.020, and $0.500/$3.00 with $0.050 [VENDOR] — so the row is populated on the commercial side and empty on the envelope side.
Two of the three are clearly resolvable. `google/gemini-3.1-flash-lite` is the direct form of `Gemini 3.1 Flash Lite Preview`, which carries a 1M window on the same table; `google/gemini-3-flash-preview-ks` is a variant of `Gemini 3 Flash Preview`, which also carries 1M [OURS]. Both blanks read as import gaps rather than properties.
`Gemma 4 31B` is different. It scores zero on the quality column — the only zero on the page — and its sibling `Gemma 4 26B A4B` carries 262K. A row with neither a window nor a quality score has less evidence behind it than its neighbours, and the honest treatment is to take its window from the provider’s own documentation rather than to infer one from the 26B sibling.
That distinction matters more than it looks. A planner that maps every blank to “unknown, fall back to a conservative 32K” treats nine structural blanks and three genuine gaps identically, and under-sizes nine rows that have no window because they do not need one.
What the filled rows actually say
Among the fifteen rows that do carry a window, there are only three distinct values, and one dominates.
1M on eleven rows. Gemini 3.1 Pro Preview, 3.8 Flash, 3.6 Flash, 3.5 Flash-Lite, 3.1 Pro Preview Custom Tools, 3 Flash Preview, 3.5 Flash, 3.1 Flash Lite Preview, 2.5 Pro, 2.5 Flash and 2.5 Flash Lite.
262K on one: Gemma 4 26B A4B. 65,536 on two: Nano Banana Pro and Nano Banana 2, both hidden behind the cell shift. 32K on one: Nano Banana, the one image row that bills by token rather than per request [OURS].
The 1M block is the whole Gemini line except the missing three, which is why the page’s header can say Max context 1M and be describing eleven of thirty rows.
There is a second column that is easy to confuse with this one, and it deserves its own sentence. Fifteen rows carry a max output of 65,536, printed as 65K, the single most repeated value in that column and a small ceiling next to the 128K on Anthropic and OpenAI rows. A model that accepts a million tokens of input and emits sixty-five thousand has a shape worth noticing: it is built for reading rather than for writing, and the two columns are doing genuinely different work.
How to read a column with three kinds of blank
Four rules.
Group the blanks before treating them. An alias, a non-completion model and a missing value all render as the same dash — or, on three rows here, as a shifted cell. They need three different fallbacks: resolve the alias to its target, exclude the non-completion row from context budgeting, and treat the missing value as unknown.
Resolve aliases to direct identifiers when you need a window. The three `-latest` rows are the only place on this page where a row deliberately omits a property it could have carried.
Check alignment before trusting a cell. Three rows on this catalogue put a quality score in the position where a context window usually sits. Any parser that reads the table positionally will import a context window of 5 tokens, which is wrong in a way that fails loudly only when a real request arrives.
Use the page header as a sanity check, not a description. “Max context 1M” is the largest value any row carries. It is true of eleven rows and of none of the rows that lack a window.
A column that is two-thirds full is not two-thirds documented. On this page nearly every blank is a statement about what kind of row it is, and the three that are not are easy to find once the groups exist.
Sourcing note: every context window, max-output value, rate and quality score in this article is read from the OrcaRouter Google provider page on 2026-10-21. The rates are the provider’s published prices passed through with $0 markup [VENDOR]; the row structure, the three-group classification of blanks, the cell-alignment observation and the counts are ours [OURS]. The 0-to-10 quality scores are our own composite, not a third-party benchmark. No third-party evaluation figures are used. Rates and limits change; all values checked 2026-10-21.
