Cost Optimization & FinOps

Image Resizing to Cut Vision Token Costs

Vision billing is pure geometry: token cost is a function of pixel dimensions. One resize step in your pipeline routinely cuts image spend by 3–4x with no code changes downstream.

Claude 3P 101 · Updated July 2026 · Unofficial guide

Claude processes images in 28x28-pixel patches, and the visual token cost of an image is ceil(width/28) × ceil(height/28). That formula is the entire vision pricing model — there is no per-image fee, and the resulting tokens are billed at your model's standard input rate. It also means every unnecessary pixel you send is a token you pay for, on every request that includes the image.

The resolution tiers that set your ceiling

Current models fall into two tiers. Claude Fable 5, Opus 4.8, Opus 4.7, and Sonnet 5 are high-resolution models: images are used at up to 2576 pixels on the long edge, for a maximum of 4,784 visual tokens per image. All other models, including Haiku 4.5, are standard resolution: up to 1568 pixels on the long edge and at most 1,568 tokens per image. Larger images are downscaled automatically — you are never billed beyond the cap — but the docs are explicit that high-resolution models can use up to roughly 3x more visual tokens per image, and recommend downsampling before sending if you do not need the fidelity.

That last point is the trap. Moving a vision workload from an older model to Opus 4.8 or Sonnet 5 silently raises the per-image ceiling from 1,568 to 4,784 tokens. Same images, same code, roughly 3x the image bill — unless you resize on your side first.

Worked numbers for common document types

These figures are straight applications of the documented formula (token counts, then priced at Claude Opus 4.8's listed $5 per million input tokens):

ImageDimensionsVisual tokensInput cost @ $5/MTok
Full desktop screenshot2560 × 14404,784$0.0239
Same screenshot, halved1280 × 7201,196$0.0060
Phone photo of a receipt1080 × 19202,691$0.0135
Same receipt, halved540 × 960700$0.0035
Square product image1000 × 10001,296$0.0065

Fractions of a cent sound trivial until you multiply: at one million receipts per month, the resize step in row four saves about $10,000 monthly versus row three — on input tokens alone, before caching or batch discounts.

Rule of thumb: resize to the smallest dimensions at which a human can still comfortably read the content you need. Slides and dashboards usually survive halving; dense receipts and small-font scans need more pixels. There is no official per-document-type dimension guidance — validate against your own extraction eval before locking in a size.

Pipeline practicalities

Do the resize server-side, before base64 encoding. Hard limits to design around: maximum image size is 10 MB base64-encoded on the Claude API (5 MB on Bedrock and Google Cloud), maximum dimensions 8000x8000 pixels, and requests with more than 20 images must keep each dimension at or below 2000 pixels. A single request can carry up to 600 images on 1M-context models (100 on 200K-context models), but the 32 MB request size limit often binds first — where the Files API is available (Claude API, Claude Platform on AWS, Foundry beta; not Bedrock or Vertex AI), file_id references keep payloads small. Bedrock and Google Cloud accept base64 image sources only, so the resize-then-encode step is mandatory there anyway.

Two adjacent facts worth knowing. First, Claude works best with images placed before text in the message content — resizing changes cost, not this ordering advice. Second, PDFs are billed as both extracted text (typically 1,500–3,000 tokens per page) and per-page images under the same vision formula, so downsampling images embedded in dense PDFs is the equivalent optimization for document pipelines.

Where to go next

See image token pricing in depth, PDF token costs, and the full multimodal request cost model for combining images with tools and caching.

Sources