Images are almost always the heaviest thing on a web page, and the way you host them decides whether your site feels instant or sluggish. In 2026 the question is no longer “should I optimise my images” but “where should they live so optimisation happens automatically.” After years of resizing images on the edge for busy WordPress and PrestaShop sites, my answer is Cloudflare Images. It stores your originals, serves them from Cloudflare’s global network, and converts them to next-generation formats on the fly, all behind one simple URL.
This guide explains what Cloudflare Images actually is, how it differs from a plain CDN, what it costs in real numbers, how it works as a global image delivery network, and how it compares to alternatives like Cloudinary and self-hosting. By the end you will know whether it is the right home for your images and how to get started today.
TL;DR
- Cloudflare Images stores your originals once and delivers optimised WebP/AVIF versions from Cloudflare’s global edge, with no egress fees
- Pricing is simple and predictable: $5 per 100,000 images stored per month and $1 per 100,000 images delivered per month
- You can also transform images you already host elsewhere (including Cloudflare R2 ) without storing them in Images at all
- It replaces a tangle of plugins, resizing scripts and a separate CDN with one product and one delivery URL
- For WordPress and PrestaShop you can pair it with my free plugin and Worker to rewrite every image link automatically
What Cloudflare Images Actually Is
Cloudflare Images is a complete image pipeline: storage, optimisation and delivery in a single product. You upload an original image once, and Cloudflare gives you a delivery URL. When a visitor requests that URL, Cloudflare resizes the image to the dimensions you asked for, converts it to the most efficient format the browser supports (usually WebP or AVIF), compresses it, and caches the result at the edge closest to that visitor.
The delivery URL looks like this:
1https://imagedelivery.net/<account-hash>/<image-id>/<variant>
The <variant> at the end is a named set of transformations you define once (for example thumbnail, hero, or 1200x675). You can also enable flexible variants to pass width, height, quality and format directly in the URL. One original therefore produces every size and format you will ever need, without you generating or storing a single derivative file.
This is exactly how the images on this very article are served. Every picture you see uses a Cloudflare Images delivery URL with a responsive <picture> source set, which is why they load quickly on mobile and desktop alike.
Why Not Just Use a CDN
A common objection is “I already put a CDN in front of my site, isn’t that enough?” It is not the same thing, and the difference matters.
A plain CDN caches and serves whatever bytes your origin produces. If your origin stores a 2 MB JPEG, the CDN happily delivers that same 2 MB JPEG faster. It does not make the image smaller, it does not convert it to AVIF, and it does not generate the smaller sizes a phone actually needs.
Cloudflare Images is an active layer, not a passive cache. It alters the image itself:
- Resizes to the exact dimensions each device requires
- Converts to WebP or AVIF based on what the requesting browser accepts
- Compresses intelligently so a 1 MB photo becomes roughly 100 to 200 KB
- Caches every derived version at the edge so the work is done once
In a nutshell, it enhances your images, speeds up your site, improves your Core Web Vitals, and saves bandwidth. A CDN alone does only the last part, and only partially.
Two Ways to Use Cloudflare Images
There is an important distinction that trips people up, so let me make it clear.
1. Store and serve with Cloudflare Images. You upload originals into Cloudflare Images. Cloudflare becomes the home of your images and the delivery network for them. This is the cleanest option for new projects and image-heavy sites.
2. Transform images you host elsewhere. If your originals already live somewhere else, such as Cloudflare R2 object storage or your own server, you can use Cloudflare’s image transformations to optimise them on the fly without storing a second copy in Images. This is the “transform from a remote source” model, and I cover it in depth in my dedicated guide on Cloudflare Image Transformations .
Most sites pick option one for simplicity. Teams that already keep a large media library in R2 often pick option two to avoid paying for storage twice. R2 is particularly attractive here because it has zero egress fees, which I break down in my guide to hosting images on Cloudflare R2 .
Cloudflare Images Pricing in Plain Numbers
One of the best things about Cloudflare Images is that the pricing is genuinely simple, with no surprise egress charges. As of 2026 the official pricing is:
| What you pay for | Cost |
|---|---|
| Images stored | $5 per 100,000 images / month |
| Images delivered | $1 per 100,000 images / month |
| Transformations (remote images) | First 5,000 unique free, then $0.50 per 1,000 / month |
| Egress bandwidth | $0 (free) |
A worked example makes this concrete. Say you run a shop with 10,000 product images and you serve 500,000 image views in a month. Storage costs $0.50 (10,000 stored) and delivery costs $5 (500,000 delivered), for a total of roughly $5.50 that month. There is no separate bandwidth bill, no charge per resize, and no per-format surcharge.
Compare that to a typical hosted image service where bandwidth and transformation counts can dominate the invoice, and the appeal becomes obvious: you can predict the cost before you commit.
Cloudflare Images vs Cloudinary vs Self-Hosting
| Criterion | Cloudflare Images | Cloudinary | Self-hosting + CDN |
|---|---|---|---|
| Automatic WebP/AVIF | Yes | Yes | Only if you build it |
| Egress fees | None | Bandwidth-based tiers | Pay your host/CDN |
| Pricing model | Stored + delivered | Credits (transforms, storage, bandwidth) | Server + CDN + your time |
| Global edge delivery | Built in | Built in | Depends on CDN |
| Setup complexity | Low | Low to moderate | High |
| Predictable cost | Very | Harder to predict | Variable |
Cloudinary is a capable product with a deep feature set, but its credit-based model bundles transformations, storage and bandwidth together, which makes forecasting harder as you scale. Self-hosting gives you total control but you become responsible for resizing pipelines, format negotiation, cache headers and CDN configuration, which is a lot of moving parts to maintain. Cloudflare Images sits in the sweet spot: most of the benefit, very little of the operational burden, and a bill you can predict.
WordPress and PrestaShop: Automating Every Image
If you run WordPress or PrestaShop, the practical challenge is making every image on the page use the optimised delivery URL, including images injected by themes, plugins and inline CSS. I built free tools for exactly this.
- WordPress plugin. My Cloudflare Image Resizing plugin (source on GitHub ) rewrites image links so they pass through Cloudflare’s optimisation.
- Cloudflare Worker. For full coverage, my Cloudflare Image Resizing Worker sits between your site and your visitors and rewrites the final HTML, including images in CSS, which a plugin alone cannot reach.
I wrote complete step-by-step walkthroughs for both platforms: Cloudflare Image Resizing for WordPress and Cloudflare Image Resizing for PrestaShop . If you are on either platform, start there after reading this overview.
One important update worth highlighting: transforming images used to require a paid Pro plan. That is no longer the case. Image transformations are now available on the free plan too, up to 5,000 unique transformations per month, which lowers the barrier considerably for small sites.
Managing Your Images Without the Dashboard
Uploading and organising images through a web dashboard is fine for a handful of files, but it gets tedious at scale. If you keep your originals in Cloudflare R2 (a popular pattern for media libraries), I built a free desktop app to make that painless: Easy Cloudflare R2 lets you browse buckets, drag and drop uploads, edit object metadata and manage everything from one clean interface on Windows, macOS and Linux. For working directly with the Cloudflare Images product, Easy Cloudflare Images does the same for uploading and optimising your image library.
How to Get Started Today
- Log in to your Cloudflare dashboard and enable Images from the sidebar.
- Upload a test image, or point a transformation at an existing image URL.
- Create one or two variants for the sizes your site uses most (for example a hero and a thumbnail).
- Replace an image on your site with the new delivery URL and run a before/after test on PageSpeed Insights .
- If you are on WordPress or PrestaShop, install the plugin or deploy the Worker to automate the rest.
You will usually see the payload for that image drop by 70 to 90 percent immediately, with a corresponding bump in your Core Web Vitals.
Key Takeaways
- Cloudflare Images is storage, optimisation and global delivery in one product, with no egress fees
- Pricing is simple and predictable: $5 per 100,000 stored and $1 per 100,000 delivered per month
- A plain CDN only caches your bytes; Cloudflare Images actively resizes, converts and compresses them
- You can store originals in Images, or transform images already hosted in R2 or on your server
- Transformations are now available on the free plan (up to 5,000 unique per month), not just Pro
- WordPress and PrestaShop users can automate every image with my free plugin and Worker
Frequently Asked Questions
Is Cloudflare Images free? Image transformations are available on the free plan up to 5,000 unique transformations per month. Storing and delivering images through the Cloudflare Images product is paid, at $5 per 100,000 images stored and $1 per 100,000 images delivered per month, with no egress fees.
Does Cloudflare Images convert to WebP and AVIF automatically? Yes. When a browser requests an image, Cloudflare detects the formats it supports and serves the most efficient one, typically AVIF or WebP, falling back to the original format for older browsers. You do not have to generate these versions yourself.
Can I use Cloudflare Images with images stored in R2? Yes. You can keep your originals in Cloudflare R2 and use Cloudflare’s image transformations to optimise them on delivery without storing a second copy in Images. R2 has zero egress fees, which makes it a cost-effective origin for a large media library.
Do I still need a Pro plan for image resizing? No. This changed: image transformations are now available on the free plan up to 5,000 unique transformations per month. Higher volumes and on-platform storage are billed on the paid plan.
How does Cloudflare Images compare to Cloudinary? Both deliver automatic format conversion and global delivery. The main difference is the pricing model. Cloudflare Images charges a simple stored-plus-delivered rate with no egress, while Cloudinary uses a bundled credit model that can be harder to forecast as traffic grows.
Will this work on WordPress and PrestaShop? Yes. Use my free WordPress plugin for a quick setup, or deploy my Cloudflare Worker for complete coverage that also rewrites images inside CSS. I have written full step-by-step guides for both platforms.
Comments