🎁 New Sign up free, 10 calls on us. Up to $1, no card needed.
How Many Tokens Is an Image? 15 APIs Measured, Same Icon 6 to 1,298

How Many Tokens Is an Image? 15 APIs Measured, Same Icon 6 to 1,298

Contents
  1. How do the vendors say an image is billed?
  2. How many tokens does one image cost?
  3. What decides how many tokens an image costs?
  4. What are the three billing schemes?
  5. Where exactly do the downscale boundaries sit?
  6. Does shape, content, or file format change the bill?
  7. What levers actually cut image input costs?
  8. FAQ

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:

FamilyThe docs sayWe measured
OpenAI32px 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
Googleimages 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
Alibabaone token per 28x28px, minimum 4 (docs)a 32px grid fits to the token on qwen3-vl ((side/32)²+2), floor 66, cap 1,600px
Moonshotdynamic tokens, no formula published, images up to 4K accepted (docs)consistent: quadratic growth, no cap found through 3,072px (11,674 tokens)
MiniMax / ByteDanceno public formula we could findquadratic 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:

ModelTokens (1024²)≈ words of English text× the model’s per-1K-token input priceInput rate /1MDollars per image
qwen3-vl-flash1,026≈7701.03x$0.05$0.00005
qwen3-vl-plus1,026≈7701.03x$0.20$0.0002
minimax-m31,371≈1,0301.37x$0.30$0.0004
Dola-Seed-2.0-pro1,298≈9701.30x$0.50$0.0006
gpt-5.6-luna693≈5200.69x$1.00$0.0007
gemini-3.7-flash1,089≈8201.09x$0.75$0.0008
claude-haiku-4-51,373≈1,0301.37x$1.00$0.0014
gemini-3.6-flash1,089≈8201.09x$1.50$0.0016
qwen3.8-max988≈7400.99x$2.00$0.0020
gemini-3.1-pro-preview1,089≈8201.09x$2.00$0.0022
claude-sonnet-51,372≈1,0301.37x$2.00 intro$0.0027
kimi-k31,379≈1,0301.38x$3.00$0.0041
claude-opus-51,372≈1,0301.37x$5.00$0.0069
claude-fable-51,372≈1,0301.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:

FactorEffectWhere it applies
Billing schemepatch formula vs tiles-with-cap vs flat feescheme table below
Resolution (area)the primary driver, roughly quadraticevery model except the flat-fee pair
Downscale cappixels past the ceiling are never billed1,600px (Qwen), ≈1,920px (Claude flagships), 1,568px (Haiku), 693-token cap (GPT); Kimi has none
Aspect ratiosecond-order: bounding grids charge strips more, long-edge caps refund extreme onesGPT +84% at 3:1 then -11% at 8:1; Haiku -71% at 8:1
Image countstrictly additive, no volume discountall 15 models
Content (photo vs text vs blank)no effectevery model measured
File format (PNG/JPEG/WebP)no effectevery model measured
File size in bytesno effectevery 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:

Model64px128px256px512px1,024px2,048pxScheme
qwen3-vl (both)6666662581,0262,502patch: (side/32)²+2, min 8x8, cap 1,600px
qwen3.8-max2828282209882,464patch, smaller floor
gpt-5.6 (both)62178309693693tiles, hard cap 693
gemini (all three)1,0891,0891,0891,0891,0891,089flat fee, any size
Dola-Seed-2.0-pro1,2981,2981,2981,2981,2981,298flat fee, any size
kimi-k317331083691,3795,486quadratic, no cap found
minimax-m318271023631,3715,186quadratic, caps at 2,048px
claude (all four)12281033641,3724,764(w x h)/750, downscale cap

Line chart of input tokens versus image size for eight model families: Kimi and MiniMax climb steeply past 5,000 tokens at 2,048px, Claude follows at 4,764, the two Qwen curves rise to about 2,500, GPT-5.6 flattens at 693, while Gemini and ByteDance Seed are horizontal lines at 1,089 and 1,298 billing every size the same

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:

Model1:12:13:14:18:1 (2,896px long edge)
gpt-5.6 (both)6931,2711,2781,230616
claude flagship trio1,3721,3551,4111,4091,107
claude-haiku-4-51,3731,3561,068788396
minimax-m31,3711,3521,4101,298650
kimi-k31,3791,3611,4171,4151,361
qwen3-vl (both)1,0261,0379921,026992
gemini (all three)1,0891,0811,0831,0561,034
Dola-Seed-2.0-pro1,2981,2771,3041,2981,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.

← Back to blog