The same 1024x1024 image costs 693 input tokens on GPT-5.6, 988 on Qwen 3.8 Max, 1,089 on Gemini, and 1,372 on Claude, and after each provider's input rate is applied one image runs $0.00005 to $0.0137 across 15 vision models, a gap that comes almost entirely from each model's input rate rather than from its image tokenizer. Five vendors publish a billing rule for images and our meter contradicts three of them. This is the image-side companion to our text-tokenizer study: the same locally generated PNGs sent to every vision model in the catalog, image cost read as prompt tokens with the image minus prompt tokens without it, across six sizes, five aspect ratios, three content types, three file formats, and one-to-four image stacks.
TL;DR
- One 1024x1024 image: 693 tokens on GPT-5.6, 1,089 on Gemini, 1,372 on Claude; dollars run $0.00005 (qwen3-vl-flash) to $0.0137 (claude-fable-5).
- Three schemes: patch formulas (Qwen: (side/32)²+2 exactly), tiles with a cap (GPT stops at 693), and flat fee (Gemini 1,089 at every size, thumbnails included).
- Three documented rules fail measurement: Claude flagships downscale at ≈1,920px not 1,568, Gemini bills a flat 1,089 where docs say 258, Qwen's grid is 32px not 28.
- File format and content never moved a single token: billing is geometry only.
How do the vendors say an image is billed?
Five of the seven families publish a rule, and three of those five rules do not survive measurement. This table is the article in miniature; every section after it is either the receipts for a disagreement or a cost behavior no documentation mentions at all:
| Family | The docs say | We measured |
|---|---|---|
| OpenAI | 32px patches with a per-model patch budget (docs) | shape matches: 6 tokens at 64px, hard 693-token cap |
| Anthropic | (w x h)/750, downscale past a 1,568px long edge (docs) | formula exact at 512-1,024px; the 1,568 ceiling holds only on Haiku, flagships keep billing to ≈1,920px |
| images up to 384px bill 258 tokens, larger ones 258 per 768px tile (docs) |
flat 1,089 at every size, a 64px icon included; the documented media_resolution dial has no working spelling on the surface we measured |
|
| Alibaba | one token per 28x28px, minimum 4 (docs) | a 32px grid fits to the token on qwen3-vl ((side/32)²+2), floor 66, cap 1,600px |
| Moonshot | dynamic tokens, no formula published, images up to 4K accepted (docs) | consistent: quadratic growth, no cap found through 3,072px (11,674 tokens) |
| MiniMax / ByteDance | no public formula we could find | quadratic with a 2,048px cap; flat 1,298 per image |
The pattern in the right column is worth naming: the documented rules are all about geometry (patches, tiles, divisors), and geometry is measurable, so we measured it. Where the columns disagree, your budget spreadsheet inherits the error: a Claude flagship pipeline sized to the documented 1,568px ceiling under-budgets large images by about 45%, and a Gemini pipeline expecting 258-token thumbnails pays 4.2x that on every icon.
How many tokens does one image cost?
Between 6 and 5,486 in our matrix, depending on model and size, and the token count is only half the bill. Here is the same 1024x1024 PNG on every vision model in the catalog, with each model's input rate applied:
| Model | Tokens (1024²) | ≈ words of English text | × the model's per-1K-token input price | Input rate /1M | Dollars per image |
|---|---|---|---|---|---|
| qwen3-vl-flash | 1,026 | ≈770 | 1.03x | $0.05 | $0.00005 |
| qwen3-vl-plus | 1,026 | ≈770 | 1.03x | $0.20 | $0.0002 |
| minimax-m3 | 1,371 | ≈1,030 | 1.37x | $0.30 | $0.0004 |
| Dola-Seed-2.0-pro | 1,298 | ≈970 | 1.30x | $0.50 | $0.0006 |
| gpt-5.6-luna | 693 | ≈520 | 0.69x | $1.00 | $0.0007 |
| gemini-3.7-flash | 1,089 | ≈820 | 1.09x | $0.75 | $0.0008 |
| claude-haiku-4-5 | 1,373 | ≈1,030 | 1.37x | $1.00 | $0.0014 |
| gemini-3.6-flash | 1,089 | ≈820 | 1.09x | $1.50 | $0.0016 |
| qwen3.8-max | 988 | ≈740 | 0.99x | $2.00 | $0.0020 |
| gemini-3.1-pro-preview | 1,089 | ≈820 | 1.09x | $2.00 | $0.0022 |
| claude-sonnet-5 | 1,372 | ≈1,030 | 1.37x | $2.00 intro | $0.0027 |
| kimi-k3 | 1,379 | ≈1,030 | 1.38x | $3.00 | $0.0041 |
| claude-opus-5 | 1,372 | ≈1,030 | 1.37x | $5.00 | $0.0069 |
| claude-fable-5 | 1,372 | ≈1,030 | 1.37x | $10.00 | $0.0137 |
Three readings. First, the idiom bills literally: at 0.75 English words per token, one 1024px image occupies the context budget of a 520 to 1,030-word document, which is why image-heavy conversations exhaust context windows and budgets so much faster than text. Second, the dollar column is almost entirely the rate: token counts cluster within 2x (693 to 1,379), so on any model one image costs 0.69x to 1.38x of whatever it charges per 1,000 input tokens; the dollar column mostly restates each model's input rate. Third, families share tokenizers exactly: both qwen3-vl builds, both GPT-5.6 variants, all three Geminis, and all four Claude models returned identical or near-identical counts on every square image, the same one-tokenizer-per-family pattern we measured on text.
What decides how many tokens an image costs?
Five factors move the bill and three widely assumed ones do not. Everything else in this study is a deep dive on one row of this table:
| Factor | Effect | Where it applies |
|---|---|---|
| Billing scheme | patch formula vs tiles-with-cap vs flat fee | scheme table below |
| Resolution (area) | the primary driver, roughly quadratic | every model except the flat-fee pair |
| Downscale cap | pixels past the ceiling are never billed | 1,600px (Qwen), ≈1,920px (Claude flagships), 1,568px (Haiku), 693-token cap (GPT); Kimi has none |
| Aspect ratio | second-order: bounding grids charge strips more, long-edge caps refund extreme ones | GPT +84% at 3:1 then -11% at 8:1; Haiku -71% at 8:1 |
| Image count | strictly additive, no volume discount | all 15 models |
| Content (photo vs text vs blank) | no effect | every model measured |
| File format (PNG/JPEG/WebP) | no effect | every model measured |
| File size in bytes | no effect | every model measured |
The three non-factors are worth stating because both myths circulate: no API in this matrix reads your compression ratio or your image's complexity into the bill. Geometry in, tokens out.
What are the three billing schemes?
Patch formulas, tiles with a cap, and flat fees, and they price small images completely differently. We ran a six-step size ladder, 64px to 2,048px squares:
| Model | 64px | 128px | 256px | 512px | 1,024px | 2,048px | Scheme |
|---|---|---|---|---|---|---|---|
| qwen3-vl (both) | 66 | 66 | 66 | 258 | 1,026 | 2,502 | patch: (side/32)²+2, min 8x8, cap 1,600px |
| qwen3.8-max | 28 | 28 | 28 | 220 | 988 | 2,464 | patch, smaller floor |
| gpt-5.6 (both) | 6 | 21 | 78 | 309 | 693 | 693 | tiles, hard cap 693 |
| gemini (all three) | 1,089 | 1,089 | 1,089 | 1,089 | 1,089 | 1,089 | flat fee, any size |
| Dola-Seed-2.0-pro | 1,298 | 1,298 | 1,298 | 1,298 | 1,298 | 1,298 | flat fee, any size |
| kimi-k3 | 17 | 33 | 108 | 369 | 1,379 | 5,486 | quadratic, no cap found |
| minimax-m3 | 18 | 27 | 102 | 363 | 1,371 | 5,186 | quadratic, caps at 2,048px |
| claude (all four) | 12 | 28 | 103 | 364 | 1,372 | 4,764 | (w x h)/750, downscale cap |
The Qwen formula is exact enough to budget from: a 1,024px square bills (1024/32)² + 2 = 1,026, verified to the token, with a padded minimum of 8x8 patches (66) and a 1,600px downscale ceiling (everything from 1,600 to 1,920px measured exactly 2,502). GPT tiles until 693 and never more: a 1,024px and a 2,048px image cost the same. The flat-fee pair is the trap for thumbnail traffic: Gemini bills a 64px icon 1,089 tokens, the same as a 4K screenshot after its downscale, and Seed bills 1,298. On the other end, Kimi K3 kept scaling past everyone's caps: a 3,072px square billed 11,674 tokens, the only model in the matrix we never saw downscale.
Where exactly do the downscale boundaries sit?
Every family except Kimi resizes large images before billing, and the boundaries sit where the meter says, not where the docs do. The Claude boundary deserves the detail, because it prices real money on claude-sonnet-5 and up: 1,568px bills 3,139 tokens, 1,728px bills 3,847, 1,920px bills 4,764, and it stops there (2,048px and 2,304px bill 4,764 too). The flagship trio keeps billing real pixels about 45% past the documented ceiling; claude-haiku-4-5 is the one model that behaves as written. If you control the upload pipeline, resize to each model's measured ceiling before encoding: pixels past the boundary either bill extra (Kimi) or are silently discarded (everyone else), so oversized uploads buy bandwidth and nothing more.
Does shape, content, or file format change the bill?
Two factors explain every shape effect we measured, and neither is file size: whether the model counts area or a bounding grid, and where its long-edge downscale threshold sits. Content and format, meanwhile, moved nothing anywhere: a 512px solid color, noise field, and text page billed identically on every model we measured, as did the same image at 243KB (PNG), 176KB (JPEG), and 174KB (WebP).
The factor probe holds area constant at one megapixel and stretches the shape:
| Model | 1:1 | 2:1 | 3:1 | 4:1 | 8:1 (2,896px long edge) |
|---|---|---|---|---|---|
| gpt-5.6 (both) | 693 | 1,271 | 1,278 | 1,230 | 616 |
| claude flagship trio | 1,372 | 1,355 | 1,411 | 1,409 | 1,107 |
| claude-haiku-4-5 | 1,373 | 1,356 | 1,068 | 788 | 396 |
| minimax-m3 | 1,371 | 1,352 | 1,410 | 1,298 | 650 |
| kimi-k3 | 1,379 | 1,361 | 1,417 | 1,415 | 1,361 |
| qwen3-vl (both) | 1,026 | 1,037 | 992 | 1,026 | 992 |
| gemini (all three) | 1,089 | 1,081 | 1,083 | 1,056 | 1,034 |
| Dola-Seed-2.0-pro | 1,298 | 1,277 | 1,304 | 1,298 | 1,315 |
Read the rows against the two factors. Qwen, Kimi, Gemini, and Seed are flat: pure area (or a fixed fee) with no shape term. GPT is the one bounding-grid biller, charging strips up to 84% more than the same pixels square, until 8:1 crosses its long-edge limit and the downscale refunds the premium: 616 tokens, cheaper than the square. The downscale-threshold family shows the same crossover at each model's own boundary: Haiku starts discounting at 3:1 (long edge 1,774 past its 1,568 ceiling: 1,068, then 788, then 396), the Claude flagships only at 8:1 (2,896 past their roughly 1,920px boundary: 1,107), MiniMax at 8:1 past its 2,048 (650). The practical read for wide-document and screenshot traffic: on GPT, split or downscale strips yourself; on Haiku, extreme shapes are quietly the cheapest Claude pixels sold.
What levers actually cut image input costs?
Three, in order of leverage. First, resize to the model's ceiling: every pixel past the downscale boundary is billed on Kimi (no cap) and wasted everywhere else. Second, detail: "low" on GPT: at 512px it changes nothing (309 either way), but at 2,048px it pins the image to 309 tokens against 693 at high or auto, a 55% cut, and it is the only per-request image dial we found on any model. Third, match the scheme to the workload: flat-fee models (Gemini, Seed) are the wrong place for thumbnail and icon traffic and the right place for consistently large scans; patch and tile models price small images honestly (a 64px icon is 6 tokens on GPT, 17 on Kimi).
Multi-image requests offer no discounts anywhere: stacking 1, 2, and 4 copies in one message billed strictly additively on all 15 models, each copy at its full single-image price. That arithmetic punishes flat-fee schemes hardest: four 256px thumbnails in one Gemini request cost 4,356 image tokens, the same four on qwen3-vl-flash cost 264.
FAQ
How many tokens is a 1024x1024 image?
Measured on the same PNG: 693 on GPT-5.6, 988 on Qwen 3.8 Max, 1,026 on qwen3-vl, 1,089 on Gemini, 1,298 on ByteDance Seed, 1,371 on MiniMax, 1,372 on Claude, 1,379 on Kimi K3. The 2x token spread matters less than the rate applied to it: the dollar cost runs $0.00005 (qwen3-vl-flash) to $0.0137 (claude-fable-5).
Does image file format or compression affect token cost?
No, on every model we measured: the same 512px image as PNG (243KB), JPEG (176KB), and WebP (174KB) billed identical tokens, and solid-color, noise, and text-dense content billed identically too. Billing is a function of pixel dimensions only; compress for bandwidth, not for tokens.
Does detail: "low" reduce image tokens?
On GPT-5.6, yes, and only above the small-image threshold: a 2,048px image billed 309 tokens at low against 693 at high or auto (55% less), while at 512px all three settings billed 309. No other model in the matrix exposed a working per-request image-cost dial.
Are images cheaper if I batch several into one request?
No: 1, 2, and 4 copies of the same image billed strictly additively on every model, each image at full price. Batching saves request overhead and latency, not image tokens, and on flat-fee models (Gemini, Seed) many small images in one request is the most expensive shape there is.
Measured 2026-08-13/14 through the Synthorai gateway on 17 models (15 vision, 2 text-only controls): locally generated PNGs at exact dimensions, image cost read as prompt tokens with image minus a salted same-text baseline; six-size ladder (64-2,048px), boundary probes to 3,072px, six 1MP aspect shapes (1:1 through 8:1 plus a 1:4 tower), three content types, PNG/JPEG/WebP, detail low/high/auto on GPT, 1/2/4-image stacks, and a code-word sight check on every model. Dollar figures multiply measured tokens by each model page's listed input rate on the measurement date (Sonnet 5 at its $2 introductory rate). Vision billing rules change without notice; re-run the ladder before relying on any single cell.

Top comments (0)