Image CDNs
Cloudflare Images Pricing 2026: Free vs Paid, Remote Images & Real Cost Math
Cloudflare Images pricing depends on how you use it: 5,000 free remote transformations, $0.50/1,000 on Paid, or $5/100K stored images plus $1/100K delivered images for hosted Images.
By Sunny Kumar · Editor
Cloudflare Images pricing is not one simple meter. The price depends on whether you are transforming images from a remote origin or storing the originals inside Cloudflare Images.
Short answer: Cloudflare Images Free gives you 5,000 unique remote transformations per month. After that, new Free-plan transforms fail with error 9422; you are not silently charged. On Images Paid, remote-origin transforms cost $0.50 per 1,000 after the first 5,000. If you store images inside Cloudflare Images, the bill changes to $5 per 100,000 stored images plus $1 per 100,000 delivered images.
What does Cloudflare Images cost?
As of May 2026, Cloudflare has two practical billing modes. Remote images from R2, S3, or your own server use the transformation meter: first 5,000 unique transformations included, then $0.50 per 1,000 on Paid. Hosted Images stored in Cloudflare Images use storage and delivery meters: $5 per 100,000 stored images/month and $1 per 100,000 delivered images/month. Source: Cloudflare Images pricing.
The honest catch
The Free plan is not a pay-as-you-go plan. Once you cross 5,000 unique transformations, existing cached transforms keep working, but new transforms return 9422 unless you move to Images Paid. That one detail changes the whole cost decision for production sites.
How Does Cloudflare Images Pricing Work?
Cloudflare Images has two use cases, and they are billed differently.
| Use case | Billing metric | Available on |
|---|---|---|
| Transform images stored outside Cloudflare Images | Images Transformed | Free and Paid |
| Store and serve images from Cloudflare Images | Images Stored + Images Delivered | Paid only |
This is the part most pricing comparisons get wrong.
If your originals live on R2, S3, WordPress, or your own server, Cloudflare bills the number of unique transformations requested in that calendar month. That means one source image plus one set of resizing, quality, format, or fit parameters.
If your originals are uploaded into Cloudflare Images, Cloudflare bills stored images and delivered images instead. Cloudflare's pricing page says that when you optimize an image stored in Images, it counts toward Images Delivered, not Images Transformed.

| Metric | Current Price | When it applies |
|---|---|---|
| Images Transformed | First 5,000 included, then $0.50/1,000 on Paid | Remote images stored outside Cloudflare Images |
| Images Stored | $5/100,000 images/month | Originals uploaded to Cloudflare Images |
| Images Delivered | $1/100,000 delivered images/month | Browser requests for images stored in Cloudflare Images |
So the first question is not "how many images do I have?"
The first question is: where are my originals stored?
What Is Included in the Cloudflare Images Free Tier?
The Cloudflare Images Free plan includes 5,000 unique transformations per month for images stored outside Cloudflare Images.
That is enough for small sites. A blog with 1,500 images served at three responsive widths uses about 4,500 unique transformations in the first month those variants are generated.
| Free-plan item | What you get |
|---|---|
| Unique transformations | 5,000/month |
| Overages | Not billed on Free |
| Existing cached transforms after limit | Continue serving |
| New transforms after limit | Return 9422 error |
| Hosted image storage | Paid plan required |
This is the important correction: the Free plan does not automatically become paid usage after 5,000 transforms.
If you run a production site and need more than 5,000 new variants per month, you need Images Paid. Otherwise, you can end up with cached images still loading while newly requested sizes fail.
How Much Do Remote Image Transformations Cost on Paid?
For remote images, Images Paid includes the first 5,000 unique transformations each month. After that, Cloudflare charges $0.50 per 1,000 unique transformations per month.
| Remote transformation usage | Included | Billable | Monthly cost |
|---|---|---|---|
| 5,000 transforms | 5,000 | 0 | $0 |
| 10,000 transforms | 5,000 | 5,000 | $2.50 |
| 40,000 transforms | 5,000 | 35,000 | $17.50 |
| 250,000 transforms | 5,000 | 245,000 | $122.50 |
A unique transformation is not a pageview. It is one original image plus one parameter set.
So if one hero image is transformed at width=800,format=auto, that is one unique transformation for the month. If 10,000 visitors request the same transformed URL, repeat requests do not add 10,000 charges.
But responsive variants multiply the count fast.
| Setup | Unique transforms |
|---|---|
| 500 images x 3 sizes | 1,500 |
| 2,000 images x 5 sizes | 10,000 |
| 10,000 images x 4 sizes | 40,000 |
| 50,000 images x 5 sizes | 250,000 |
That is why Cloudflare Images can feel almost free for small sites and suddenly look expensive for large catalogues.
How Does Cloudflare Count Transformations?
Cloudflare bills remote-image transformations by unique combinations, not by raw request count.
A unique transformation = one source image + one supported parameter set.
| Scenario | Transforms counted | Why |
|---|---|---|
photo.jpg at 800px wide | 1 | One original + one width |
Same photo.jpg at 400px wide | 1 more | Different width means a new variant |
| Same 800px URL requested 1,000 times | Still 1 | Repeat requests count once that month |
photo.jpg?width=800&format=auto | 1 | Auto format counts once |
| 2,000 images x 5 sizes | 10,000 | Each image-size pair is unique |
The format=auto rule is useful. Cloudflare says the format parameter counts as one billable transformation even if some users receive AVIF and others receive WebP.
Workers exception: When you use the Images binding in Cloudflare Workers, every call to the binding counts as a transformation, even if the image or parameters are not unique. If you are using Workers for image delivery, treat that as a separate cost model and test it before scaling.
What If You Store Images Inside Cloudflare Images?
Hosted Images use a different bill.
If you upload originals into Cloudflare Images, you pay for stored images and delivered images. The remote transformation meter is not the main cost driver for those hosted images.
| Hosted Images usage | Calculation | Monthly cost |
|---|---|---|
| 10,000 stored images | 10,000 / 100,000 x $5 | $0.50 |
| 500,000 delivered images | 500,000 / 100,000 x $1 | $5.00 |
| Total | $5.50/month |
That looks cheap, but the delivery meter grows with every browser image request.
Cloudflare gives a simple example in its docs: if a product page serves 10 images and the page gets 10,000 visits, that is 100,000 images delivered, or $1.00 in delivery usage.
Here is the practical hosted-image math:
| Stored images | Delivered image requests/month | Storage cost | Delivery cost | Total |
|---|---|---|---|---|
| 10,000 | 500,000 | $0.50 | $5.00 | $5.50 |
| 10,000 | 5,000,000 | $0.50 | $50.00 | $50.50 |
| 50,000 | 10,000,000 | $2.50 | $100.00 | $102.50 |
This is why I would not say "always avoid Cloudflare Images storage." The better rule is simpler:
Use remote-origin transformations when unique variants are low. Use hosted Images when storage is convenient and delivery volume is predictable. Avoid hosted Images if image request volume can spike hard.
Real Cloudflare Images Cost Calculations by Site Size
These examples assume the cheapest common production setup for technical sites: originals stored outside Cloudflare Images, with Cloudflare transforming remote images.
Personal Blog: 200 Images, 3 Sizes Each
| Line item | Calculation | Monthly cost |
|---|---|---|
| Unique transforms | 200 x 3 = 600 | Free |
| Paid transform overage | 0 | $0 |
| Total | $0/month |
This is a clean Free-plan fit. Even if you add a few new posts each month, you have plenty of room below 5,000 unique transformations.
Content Site: 2,000 Images, 3 Sizes Each
| Line item | Calculation | Monthly cost |
|---|---|---|
| Unique transforms | 2,000 x 3 = 6,000 | 1,000 over included allowance |
| Paid transform cost | 1,000 x $0.50/1,000 | $0.50 |
| Total on Images Paid | $0.50/month |
The catch: on Free, those 1,000 new over-limit transforms would not be billed. They would fail. For this site size, switch to Paid before the limit becomes visible to users.
E-Commerce Site: 10,000 Images, 4 Sizes Each
| Line item | Calculation | Monthly cost |
|---|---|---|
| Unique transforms | 10,000 x 4 = 40,000 | 35,000 billable |
| Paid transform cost | 35,000 x $0.50/1,000 | $17.50 |
| Total | $17.50/month |
This is where Cloudflare Images stops feeling like a free-tier trick and becomes a real line item. It is still not expensive in absolute terms, but the cost grows with every new product image and responsive variant.
Large Media Site: 50,000 Images, 5 Sizes Each
| Line item | Calculation | Monthly cost |
|---|---|---|
| Unique transforms | 50,000 x 5 = 250,000 | 245,000 billable |
| Paid transform cost | 245,000 x $0.50/1,000 | $122.50 |
| Total | $122.50/month |
At this scale, flat-rate image optimization starts to look better. Bunny Optimizer is $9.50/month per website for unlimited optimizations and image transformations, with CDN bandwidth billed separately.
Quick cost benchmark
Cloudflare's own pricing example says 2,000 remote images x 5 sizes = 10,000 unique transformations, which costs $2.50/month on Paid after the first 5,000 included transforms. That is the cleanest way to sanity-check your own estimate.
Cloudflare Images vs BunnyCDN vs ImageKit: Which Is Cheaper?
The answer depends on which meter grows first: unique transformations, bandwidth, or delivered image requests.
| Site size | Cloudflare remote images | BunnyCDN + Optimizer | ImageKit Lite |
|---|---|---|---|
| 500 images, 3 sizes | $0 | ~$10.50/mo | $0 if under free limits |
| 5,000 images, 3 sizes | $5/mo on Paid | ~$10.50/mo | $9/mo if under 40 GB |
| 10,000 images, 4 sizes | $17.50/mo | ~$10.50-12/mo | $9 + bandwidth overage |
| 50,000 images, 5 sizes | $122.50/mo | ~$12-15/mo | $89/mo Pro or overage |
BunnyCDN becomes cheaper than Cloudflare remote transformations at roughly 26,000 unique transformations per month, assuming about $10.50/month for Bunny Optimizer plus minimum CDN delivery.
Translated into image counts:
- about 8,600 images at 3 sizes
- about 6,500 images at 4 sizes
- about 5,200 images at 5 sizes
ImageKit Lite sits in a different model. It starts at $9/month with 40 GB bandwidth and pay-as-you-go overage. It can be better than Cloudflare if you need AVIF, media APIs, and bandwidth-based pricing instead of transform-based pricing.
If you want the broader provider breakdown, read the paid CDN options comparison and the best image CDNs guide.
How Do You Estimate Your Cloudflare Images Bill?
Use one of these formulas.
For remote images:
Monthly transform cost = max(0, unique transformations - 5,000) / 1,000 x $0.50
For hosted Cloudflare Images:
Monthly hosted cost = (stored images / 100,000 x $5) + (delivered images / 100,000 x $1)
The mistake is mixing both formulas for the same image flow.
Remote-origin images are about unique variants. Hosted Cloudflare Images are about stored originals and browser image requests.
Before you choose, estimate both:
| Question | If yes, watch this meter |
|---|---|
| Do you generate many responsive sizes for a large catalogue? | Remote transformations |
| Do pages show many images per visit? | Hosted Images delivery |
| Do you upload user-generated images? | Hosted Images storage and delivery |
| Do you already store originals in R2 or S3? | Remote transformations |
| Do you need predictable fixed optimization cost? | BunnyCDN or another flat-rate optimizer |
This is the simple maths I would do before moving a production image library.
How Can You Reduce Cloudflare Images Costs?
If you are staying inside Cloudflare, the goal is not to avoid every paid feature. The goal is to pick the meter that matches your traffic pattern.
1. Keep originals in R2 or your own origin when variant count is controlled. Remote images are billed by unique transformations. If each image only needs 2-3 sizes, this can stay cheap for a long time.
2. Do not create six responsive widths by default. Every extra width is one more unique transformation per original. Start with mobile, tablet, and desktop. Add more only if your layout actually needs them.
3. Use format=auto. Cloudflare counts auto-format as one unique transformation even when the output differs by browser. That keeps AVIF/WebP negotiation from multiplying your bill.
4. Be careful with Workers Images binding. The normal unique-transform deduplication does not apply the same way. Every binding call counts as a transformation, so heavy Worker traffic can change the economics.
5. Model hosted delivery before uploading everything to Images. Hosted storage is cheap. Hosted delivery is the part that scales with traffic. A gallery page with 40 thumbnails can create a lot of delivered-image requests quickly.
For a deeper optimization playbook, read how to minimize Cloudflare Images costs.
When Does Cloudflare Images Make Sense?
Good Fit
- Small sites under 5,000 unique monthly transforms - the Free plan is enough if you can tolerate the hard limit.
- Cloudflare-native stacks - R2, Workers, Cloudflare DNS, and Cloudflare cache rules are easier to manage together.
- Low image count, high traffic remote images - repeat requests for the same remote transform do not increase the unique-transform count.
- Hosted image workflows with predictable delivery - storage is cheap when image request volume is controlled.
Poor Fit
- Large catalogues with many responsive variants - remote transformation cost scales linearly.
- Free-plan production sites near the 5,000 limit - new transforms can fail instead of billing through.
- Pages with many hosted images per visit - the delivered-images meter can grow faster than expected.
- Teams wanting fixed monthly optimizer pricing - BunnyCDN is easier to predict because Optimizer is flat-rate.
My practical recommendation: use Cloudflare Images if your stack is already Cloudflare-heavy or your image count is small. If your main concern is predictable cost across a large image library, compare it with BunnyCDN before committing.
Frequently Asked Questions
Is Cloudflare Images free?
Cloudflare Images has a Free plan for remote image transformations. It includes 5,000 unique transformations per month. After that, new transformations return error 9422 on Free instead of being billed. Hosted image storage requires Images Paid.
Does Cloudflare charge per request for image transformations?
For remote images, Cloudflare charges per unique transformation, not per repeated request. One source image at one parameter set counts once per month. For images stored in Cloudflare Images, browser requests count toward the Images Delivered meter.
What is a unique transformation in Cloudflare Images?
A unique transformation is one original image plus one supported parameter set, such as width, height, quality, fit, or format. The same original at two widths counts as two unique transformations.
Can I use Cloudflare Images with R2?
Yes. Cloudflare's docs use R2 as an example remote origin. In that setup, you pay normal R2 costs plus the Cloudflare Images transformation cost for remote images.
Do images stored in Cloudflare Images also count as transformations?
Cloudflare says optimized images stored in Cloudflare Images count toward Images Delivered, not Images Transformed. That means hosted Images are mainly billed through storage and delivery metrics.
When is BunnyCDN cheaper than Cloudflare Images?
BunnyCDN usually becomes cheaper when you generate more than roughly 26,000 unique Cloudflare remote transformations per month. That is about 8,600 images at 3 sizes or 6,500 images at 4 sizes.
Summing Up!
Cloudflare Images pricing is fair, but only if you understand the billing mode. Free gives you 5,000 unique remote transformations, then new transforms fail. Paid remote images cost $0.50 per 1,000 unique transformations after the first 5,000. Hosted Cloudflare Images use storage and delivery meters instead.
For a small Cloudflare-based site, this can be close to free. For a large catalogue with many responsive variants, the remote-transform bill grows linearly. At 50,000 images and 5 sizes, the remote-transform cost is $122.50/month before you count any separate origin costs.
My recommendation is simple: use Cloudflare Images when your site is already in the Cloudflare ecosystem and your transform count is predictable. If you want fixed optimizer pricing for a large image library, compare it with BunnyCDN before you move everything.