Why are images still the slowest thing on your page?
Images are typically 60–80% of total page weight. Most teams upload a single high-resolution JPEG and let the browser deal with it — wasting bandwidth on mobile, missing out on AVIF/WebP, and never serving variants sized for the actual viewport. Building an offline pipeline to generate dozens of variants per asset is real engineering work; storing them all costs real money. The result: pages feel slow, especially on flaky mobile networks.
How it fits together
Diagram coming soon
Architecture diagram for this solution will be added here.
How Cloudflare solves it
- On-the-fly resize and format conversion. Append URL parameters (<code>width=600&format=auto&quality=80</code>) and Cloudflare returns the resized, recompressed, format-converted image. No pre-processing, no S3 of variants, no Lambda functions.
- Automatic format negotiation. <code>format=auto</code> serves AVIF to browsers that accept it, WebP otherwise, original format as fallback. Typically 30–50% smaller than the original JPEG.
- Polish: zero-config compression. For sites with images already hosted on your origin, Polish recompresses every cached image automatically — no URL changes required. Lossless and lossy modes available.
- Images binding (Workers). Same image pipeline accessible from Workers via the Images binding. Transform any image in code, with full control over pipeline and caching.
- Cloudflare Images storage. Optional paid tier that stores your image masters at Cloudflare and serves all variants from a per-image flat fee — no separate S3 + CDN math.
Common questions
Will <code>format=auto</code> break my older browsers?
Does this work for images I don't control (third-party CDNs)?
What about animated GIFs and SVGs?
How does this differ from Cloudflare Images (the paid product)?
Try it live
Demo coming soon
An interactive demo for Image Optimization is being built. In the meantime, check the "Dive Deeper" section below for the official docs and product blogs.