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):
| Image | Dimensions | Visual tokens | Input cost @ $5/MTok |
|---|---|---|---|
| Full desktop screenshot | 2560 × 1440 | 4,784 | $0.0239 |
| Same screenshot, halved | 1280 × 720 | 1,196 | $0.0060 |
| Phone photo of a receipt | 1080 × 1920 | 2,691 | $0.0135 |
| Same receipt, halved | 540 × 960 | 700 | $0.0035 |
| Square product image | 1000 × 1000 | 1,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.
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.