$5 Per 100K Images With Zero Egress. Seriously.
If you have spent any time on Cloudinary or imgix invoices, you know the feeling: the base plan looks reasonable, then transformation credits, bandwidth overages, and "advanced optimization" add-ons quietly triple the bill. We audited a media company last quarter that was paying $1,200/month on Cloudinary for what turned out to be 180K images and 12M monthly deliveries. They moved to Cloudflare Images and the bill dropped to $125.
Cloudflare Images takes a deliberately simple approach to pricing. You pay for two things: images stored and images delivered. No bandwidth tiers. No transformation credits. No format conversion surcharges. No CDN egress fees. The entire delivery network (300+ edge locations) is included in that flat per-delivery fee.
This post breaks down every Cloudflare Images cost in 2026, models real bills at three different scales, compares pricing against Cloudinary, imgix, and ImageKit, and helps you decide when the DIY approach (Cloudflare R2 + Workers) makes more financial sense.
If you are evaluating broader media delivery costs including video, check our media storage and serverless cost comparison for the full landscape.
Cloudflare Images Pricing: The Complete 2026 Breakdown
Cloudflare Images uses a consumption-based model with two billing dimensions. There are no plan tiers, no feature gates, and no surprise bandwidth charges.
Core Pricing
| Component | Rate (2026) | Unit |
|---|---|---|
| Image Storage | $5.00 per 100,000 images/month | Per image stored |
| Image Delivery | $1.00 per 100,000 images served | Per delivery request |
| Variants (transformations) | Included | Up to 100 named variants |
| Format conversion (WebP/AVIF) | Included | Automatic via Accept header |
| CDN delivery (300+ PoPs) | Included | Zero bandwidth fees |
| Custom domain | Included | CNAME to your domain |
| API access | Included | Upload, delete, list operations |
A few things that make this pricing unusual:
- No bandwidth fees. Whether your average image is 50KB or 5MB, the delivery cost is the same $0.00001 per serve. This is the single biggest differentiator from Cloudinary and imgix, which charge per GB of bandwidth.
- Variants are free. You define up to 100 named variants (thumbnail, hero, social-share, etc.) and Cloudflare generates them on first request, then caches globally. No per-transformation charge.
- Format negotiation is automatic. Upload a JPEG, and Cloudflare serves AVIF to Chrome, WebP to Safari, and the original JPEG to legacy browsers. You do not pay extra for this.
- Storage is per-image, not per-byte. A 100KB product photo and a 15MB RAW-converted hero image both count as one stored image. This benefits sites with large originals.
What is NOT Included
| Feature | Availability | Notes |
|---|---|---|
| Video processing | Separate product (Cloudflare Stream) | Different pricing model entirely |
| More than 100 variants | Contact sales | Most sites need 5-15 variants |
| Batch upload API | Included but rate-limited | 10 requests/second default |
| Direct Creator Uploads | Included | One-time upload URLs for user-generated content |
| Image AI (captioning, tagging) | Not available | Use external service + metadata |
Real-World Cost Modeling
Abstract per-image pricing means nothing without context. Here is what Cloudflare Images actually costs at three different scales.
Small E-commerce Store (10K Products)
| Metric | Value | Monthly Cost |
|---|---|---|
| Images stored | 10,000 (3 variants each = 30K deliverable, but storage counts originals only) | $0.50 |
| Monthly page views | 200,000 | -- |
| Image deliveries/month | 800,000 (avg 4 images per page) | $8.00 |
| Total monthly cost | $8.50 |
For comparison, this same workload on Cloudinary's Plus plan ($89/month base) would consume roughly half the included credits, putting effective cost at $89-120/month.
Mid-Size Media Site (100K Images)
| Metric | Value | Monthly Cost |
|---|---|---|
| Images stored | 100,000 | $5.00 |
| Monthly page views | 2,000,000 | -- |
| Image deliveries/month | 5,000,000 (avg 2.5 images per page + thumbnails) | $50.00 |
| Total monthly cost | $55.00 |
This is the scale where Cloudflare Images starts to massively undercut alternatives. Cloudinary at 5M transformations/month costs $150-250 depending on plan. imgix at 5M renders charges approximately $160-200. The gap is almost entirely due to bandwidth.
Large Platform (1M+ Images, High Traffic)
| Metric | Value | Monthly Cost |
|---|---|---|
| Images stored | 1,000,000 | $50.00 |
| Monthly page views | 20,000,000 | -- |
| Image deliveries/month | 50,000,000 | $500.00 |
| Total monthly cost | $550.00 |
At this scale, you should seriously evaluate the R2 + Workers approach (covered below) which could drop costs to $200-300/month. But $550/month for a fully managed image CDN serving 50M requests across 300+ edge locations is still remarkably cheap. Cloudinary at this volume runs $2,000-4,000/month. imgix quotes custom enterprise pricing but typically lands at $1,500-2,500.
Cloudflare Images vs Cloudinary vs imgix: 2026 Pricing Comparison
This is the table most teams need. We modeled the same workload (100K images, 5M monthly deliveries, average 200KB served size) across all four major platforms.
| Feature | Cloudflare Images | Cloudinary (Plus) | imgix (Growth) | ImageKit (Business) |
|---|---|---|---|---|
| Monthly base cost | $0 (pay per use) | $89/month | $100/month | $89/month |
| Storage (100K images) | $5.00 | Included (25GB) | Included (500GB) | Included (100GB) |
| Deliveries (5M/month) | $50.00 | ~$150 (credits) | ~$120 (renders) | ~$80 (bandwidth) |
| Bandwidth (1TB served) | $0 (included) | $40-80 (overages) | $0 (included in renders) | $45 (overages) |
| Format conversion | Included | Included | Included | Included |
| Custom domain | Included | Included | Included | Included |
| Effective monthly cost | $55 | $200-250 | $160-220 | $130-170 |
| Cost per 1K deliveries | $0.01 | $0.04-0.05 | $0.03-0.04 | $0.025-0.035 |
Where Each Platform Wins
Cloudflare Images wins when:
- High delivery volume relative to storage (content sites, media, e-commerce)
- Predictable costs matter more than advanced transformations
- You already use Cloudflare for DNS/CDN (zero additional latency)
- Budget is the primary constraint and you need "good enough" transformations
Cloudinary wins when:
- You need advanced transformations (AI cropping, background removal, video transcoding)
- Your workflow requires a visual DAM (Digital Asset Management) interface
- You need extensive SDK support with framework-specific components
- Transformation complexity matters more than per-unit cost
imgix wins when:
- You need real-time rendering with complex URL-based parameters
- Image quality at specific sizes is critical (editorial, photography)
- You want to keep originals in your own S3/GCS bucket
- You need PDF rendering or custom watermarking at scale
ImageKit wins when:
- You want a middle ground between Cloudflare simplicity and Cloudinary features
- You need URL-based transformations AND a media library
- Your traffic is concentrated in specific regions (India/Asia pricing is competitive)
The DIY Alternative: Cloudflare R2 + Workers
Here is the approach we recommend for teams with engineering capacity and high traffic volumes. Instead of paying per-delivery on Cloudflare Images, you store originals in R2 (zero egress) and run a Worker that handles transformations on the fly.
R2 + Workers Cost Model (Same 100K Images, 5M Deliveries)
| Component | Rate | Monthly Cost |
|---|---|---|
| R2 storage (100K images, avg 2MB = 200GB) | $0.015/GB/month | $3.00 |
| R2 Class B operations (reads, 5M) | $0.36/million | $1.80 |
| Workers requests (5M) | $0.30/million (after free 10M) | $0.00 (within free tier) |
| Workers compute (avg 10ms CPU) | $12.50/million ms | ~$0.60 |
| Total monthly cost | $5.40 |
Read that table again. The same workload that costs $55 on Cloudflare Images and $200+ on Cloudinary costs $5.40 with R2 + Workers. The catch? You need to build and maintain the transformation logic yourself.
When R2 + Workers Makes Sense
- You already have engineering capacity to build a Worker
- You serve more than 1M images per month
- Your transformation needs are simple (resize, crop, format convert)
- You want maximum cost predictability at high scale
- You are comfortable with Cloudflare's cf-image-resizing Worker API
When It Does NOT Make Sense
- Your team is small and cannot maintain custom infrastructure
- You need instant setup with zero development time
- You require advanced AI-powered transformations
- You change transformation logic frequently (A/B testing image sizes)
- Your total delivery volume is under 500K/month (the $55 Cloudflare Images bill is fine)
For a deeper look at R2 storage pricing specifically, see our Cloudflare R2 pricing breakdown.
Cloudflare Images vs Cloudflare Polish vs Image Resizing: Which One?
Cloudflare offers three overlapping image optimization products, and the naming is genuinely confusing. Here is what each actually does.
| Product | What It Does | Pricing | Best For |
|---|---|---|---|
| Cloudflare Images | Full image hosting, delivery, and transformation | $5/100K stored + $1/100K delivered | Teams that want Cloudflare to host images entirely |
| Polish | Lossless/lossy compression of images passing through Cloudflare CDN | Included in Pro+ plans ($20/month) | Sites that host images elsewhere but want automatic optimization |
| Image Resizing | On-the-fly resize/crop via URL parameters for images on your origin | Included in Pro+ (50K unique transforms) or $9/50K on Business | Sites that want to keep their own origin server but resize at the edge |
The decision framework:
- If you want Cloudflare to be your entire image infrastructure (upload, store, transform, deliver): use Cloudflare Images
- If you already have images hosted on S3/R2/your server and just want them compressed automatically: use Polish (included in your Pro plan)
- If you host images elsewhere but want edge-side resizing without moving storage: use Image Resizing
- If you want maximum control and minimum cost: use R2 + Workers with the Image Resizing API
Optimizing Your Cloudflare Images Bill
Even with simple pricing, there are ways to reduce costs further.
1. Minimize Stored Images
Cloudflare charges per original image stored, not per variant. But images you have uploaded and forgotten about still cost money. Audit quarterly:
# List all images via API to find unused ones
curl -X GET "https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1" \
-H "Authorization: Bearer {api_token}" \
-H "Content-Type: application/json"
Delete images that have not been delivered in 90+ days. At $5/100K images, this is minor savings individually but adds up for large catalogs with seasonal content.
2. Reduce Delivery Count With Caching
Cloudflare Images are already served from the CDN cache, but if you use custom variants with unique URLs, ensure your HTML does not bust the cache unnecessarily. Every cache miss counts as a delivery.
- Use consistent variant URLs (do not append random query strings)
- Set appropriate
Cache-Controlheaders via Transform Rules - Leverage
cf-cache-status: HITheaders to verify cache efficiency
3. Lazy Load Below-the-Fold Images
Every image request counts as a delivery. If your page loads 20 images but users only see 4 above the fold, you are paying for 20 deliveries regardless. Implement native lazy loading:
<img
src="https://imagedelivery.net/{hash}/{variant}"
loading="lazy"
alt="..."
/>
This reduces effective deliveries by 30-60% on content-heavy pages.
4. Use Fewer, Smarter Variants
You get 100 variants included, but each unique variant URL served counts as a delivery. Instead of creating 20 size-specific variants, use responsive images with 3-4 breakpoints:
thumbnail(200px wide)card(400px wide)hero(1200px wide)full(original size, format-optimized)
Four variants cover 95% of use cases. Do not create variants you will not use.
When Cloudflare Images Is NOT the Right Choice
We believe in honest recommendations. Here is when you should look elsewhere:
You need video processing. Cloudflare Stream exists but is priced separately ($5/1K minutes stored + $1/1K minutes delivered). If you need unified image + video, Cloudinary or Mux + Cloudflare Images is a better combination.
You need AI-powered transformations. Background removal, smart cropping with face detection, text overlays with dynamic data. Cloudinary and imgix have years of investment in these features. Cloudflare Images does resize, crop, and format conversion well but stops there.
You need a visual media library. If non-technical team members (marketers, designers) need to browse, tag, and organize assets through a GUI, Cloudinary's DAM or Uploadcare is a better fit. Cloudflare Images is API-first with a minimal dashboard.
Your compliance requires specific data residency. Cloudflare Images stores data across their global network. If you need images stored exclusively in EU or specific countries, you will need R2 with jurisdiction restrictions instead.
The Bottom Line
Cloudflare Images is the most cost-effective managed image CDN in 2026 for teams that need simple, reliable image delivery without managing infrastructure. At $5 per 100K stored and $1 per 100K delivered with zero bandwidth fees, it undercuts Cloudinary by 60-80% and imgix by 40-60% at typical scales.
For teams serving more than 1M deliveries monthly with engineering capacity to spare, the R2 + Workers approach drops costs another 90% but requires building and maintaining custom transformation logic.
If your current image delivery costs are eating into margins and you want a clear picture of what you could save across your entire cloud stack, take our free Cloud Waste and Risk Scorecard. We typically find 30-50% in savings across CDN, storage, and compute for media-heavy applications.
For hands-on help migrating from Cloudinary or imgix to Cloudflare Images (or the R2 + Workers approach), our cloud cost optimization team handles the migration, validates performance parity, and guarantees at least 30% cost reduction or you do not pay.
Further reading:



