Back to Engineering Insights
Cloud Cost Optimization
Apr 16, 2026
By Ravi Kanani

Media Storage Serverless Cost Comparison 2026: S3 vs R2 vs Cloudinary vs Bunny vs Mux

Media Storage Serverless Cost Comparison 2026: S3 vs R2 vs Cloudinary vs Bunny vs Mux
Key Takeaway

For media storage with heavy delivery, Cloudflare R2 ($0.015/GB stored, free egress) is 60-80% cheaper than S3+CloudFront at scale. For image transformation (resize, format conversion, optimization), Cloudinary costs $0.024/transformation vs imgix at $0.0008/transformation (30x cheaper at scale). For video streaming, Mux charges $0.007/min delivered vs S3+CloudFront at roughly $0.002/min (Mux is 3x more but includes encoding, adaptive bitrate, and analytics). The cheapest pure media storage is Backblaze B2 ($0.006/GB) paired with free Cloudflare CDN.

Your Media Bill Is 80% Delivery Costs. Most Teams Optimize the Wrong 20%.

Here is a pattern we see in almost every media-heavy application: the team spends hours optimizing image compression, picking the perfect codec, tuning video bitrates. They save 15-20% on storage. Meanwhile, 80% of their media bill is egress and CDN delivery, and nobody has compared providers for that part.

The math is brutal. Store 10TB of media on S3: $230/month. Deliver that media to users at 50TB monthly bandwidth via CloudFront: $4,250/month. The delivery cost is 18x the storage cost. Every percentage point saved on delivery is worth 18x more than the same reduction on storage.

This is why the serverless media landscape has fragmented into specialized platforms. Some optimize storage (R2, B2). Some optimize delivery (Bunny CDN, Fastly). Some bundle everything with transformations (Cloudinary, imgix). Some specialize in video (Mux, api.video). The right choice depends entirely on your media type, access pattern, and whether you need processing or just storage + delivery.

We have optimized media infrastructure for several clients at LeanOps, particularly SaaS platforms and content-heavy applications where media costs were growing 20-30% quarterly. This post compares the real costs of 7 serverless media platforms in 2026, modeled at realistic volumes, so you can pick the one that actually fits your workload.


The 7 Platforms Compared

PlatformBest ForStorageDeliveryTransformations
AWS S3 + CloudFrontFull AWS ecosystem$0.023/GB$0.085/GBVia Lambda/MediaConvert
Cloudflare R2Cost-optimized delivery$0.015/GBFreeVia Workers (custom)
CloudinaryImage/video transformationsIncludedIncludedBuilt-in (resize, format, AI)
imgixHigh-volume image processingExternal$0.08/GB$0.0008/transformation
Bunny CDN + StorageBudget media CDN$0.005/GB$0.01/GBBasic (resize, WebP)
MuxVideo streaming$0.007/min$0.007/minEncoding + adaptive bitrate
Backblaze B2 + CDNArchival media$0.006/GBFree (via CF)None (external)

Platform-by-Platform Pricing Breakdown

1. AWS S3 + CloudFront

The default choice for AWS-native applications. Maximum flexibility, maximum ecosystem integration, maximum cost.

ComponentRateNotes
S3 Standard storage$0.023/GB/monthMedia source files
S3 PUT requests$0.005/1,000Upload operations
S3 GET requests$0.0004/1,000Origin fetches
CloudFront delivery (first 10TB)$0.085/GBTo end users
CloudFront delivery (10-50TB)$0.080/GBVolume discount
CloudFront delivery (50-150TB)$0.060/GBEnterprise scale
CloudFront to S3 originFreeNo origin fetch charge
Lambda@Edge (if used)$0.60/M requests + computeFor transformations
MediaConvert (video)$0.015-0.024/minEncoding/transcoding

Total cost at 10TB stored, 50TB delivered/month:

  • Storage: 10TB x $0.023 x 1,024 = $236
  • Delivery: 50TB x $0.080 x 1,024 = $4,096
  • Requests (est. 100M): $40
  • Total: ~$4,372/month

Strengths: Deepest integration with AWS services, most mature CDN (450+ PoPs), Lambda@Edge for edge compute, fine-grained access control (signed URLs, geo-restrictions), real-time logging.

Weaknesses: Most expensive at scale. CloudFront egress pricing is 8-85x more expensive than alternatives. No built-in image optimization (requires Lambda or third-party).

2. Cloudflare R2

The disruptor. S3-compatible storage with zero egress fees. Game-changing for media delivery.

ComponentRateNotes
Storage$0.015/GB/monthS3-compatible API
Class A operations (writes)$4.50/MPUT, POST, LIST
Class B operations (reads)$0.36/MGET, HEAD
Egress/deliveryFreeZero egress, unlimited
Free tier10GB storage, 1M class A, 10M class BMonthly
Workers (optional processing)$0.30/M requests (after 10M free)Custom logic

Total cost at 10TB stored, 50TB delivered/month:

  • Storage: 10TB x $0.015 x 1,024 = $154
  • Operations (est. 100M reads): $36
  • Delivery: $0
  • Total: ~$190/month

That is a 95% reduction compared to S3 + CloudFront ($4,372 vs $190) for the same workload.

Strengths: Zero egress makes delivery costs predictable and near-zero. S3-compatible API (easy migration from S3). Cloudflare's CDN network (300+ PoPs) included. Workers for edge transformations.

Weaknesses: No built-in image/video transformation pipeline (you build it with Workers). Fewer API features than S3 (no lifecycle policies, no versioning in all regions). Smaller ecosystem of tools and integrations. No native video encoding.

Best for: Static media delivery (images, downloads, video files) where you do not need on-the-fly processing. If you just store and serve, R2 is the obvious winner.

For a full R2 pricing deep-dive, see our Cloudflare R2 pricing guide 2026.

3. Cloudinary

The all-in-one media platform. Storage + delivery + transformations in one service.

PlanMonthly CostTransformationsBandwidthStorage
Free$025K25 GB25 GB
Plus$89/month225K225 GB75 GB
Advanced$224/month800K1 TB225 GB
EnterpriseCustomCustomCustomCustom
Overage (transforms)~$0.024/eachPer transformation
Overage (bandwidth)~$0.40/GBBeyond plan

Total cost at 10TB stored, 50TB delivered/month, 5M transformations:

  • Enterprise plan (custom): approximately $3,000-5,000/month
  • Or: Advanced plan + massive overages = $224 + $4,000 bandwidth + $100K transforms = impractical

Strengths: Built-in image optimization (format conversion, responsive breakpoints, AI crop). Video transcoding and adaptive streaming. Automatic format selection (WebP, AVIF, HEIC based on browser). Global CDN included. Easy URL-based transformation API.

Weaknesses: Extremely expensive at high volume. Overage pricing is punitive ($0.40/GB bandwidth beyond plan). Vendor lock-in (proprietary URL structure). Enterprise pricing is opaque. Not cost-effective for simple store-and-serve workloads.

Best for: Applications that need heavy image/video processing (e-commerce product images, user-uploaded content requiring moderation and resizing, media-rich marketing sites). Best when transformation count is moderate (under 1M/month).

4. imgix

Image processing as a service. You bring your own storage, imgix handles transformations and delivery.

ComponentRateNotes
Transformations$0.0008/eachAll processing (resize, format, crop)
Bandwidth$0.08/GBCDN delivery of processed images
Source storageExternal (your S3/GCS/R2)imgix does not store originals
Base plansFrom $10/monthIncludes some volume

Total cost at 5M transformations/month, 10TB bandwidth:

  • Transformations: 5M x $0.0008 = $4,000
  • Bandwidth: 10TB x $0.08 x 1,024 = $819
  • Total: ~$4,819/month (plus your storage on S3/R2)

Wait, that seems expensive. But compare to Cloudinary:

  • 5M transformations on Cloudinary: 5M x $0.024 = $120,000 in overages

imgix is 30x cheaper per transformation than Cloudinary overages. At high volume, imgix wins massively on transformation cost.

Strengths: Cheapest per-transformation cost at scale. Real-time image processing via URL parameters. Works with any storage backend (S3, R2, GCS). Excellent image quality optimization. Fast CDN (Akamai-backed).

Weaknesses: Images only (no video). Requires separate storage (extra cost and complexity). Bandwidth pricing ($0.08/GB) is expensive compared to Bunny or R2. Base plan required on top of usage costs.

Best for: High-volume image-heavy applications (e-commerce catalogs with millions of SKUs, real estate listings, media publishers) where you need millions of transformations at the lowest per-unit cost.

5. Bunny CDN + Bunny Storage

Budget-friendly media CDN with integrated storage. Surprisingly capable for the price.

ComponentRateNotes
Bunny Storage$0.005/GB/monthPer replication zone
Bunny CDN (NA/EU)$0.01/GBNorth America + Europe
Bunny CDN (Asia)$0.03/GBAsia-Pacific
Bunny CDN (SA/AF)$0.045/GBSouth America, Africa
Image optimization (Bunny Optimizer)$9.50/month (unlimited)Resize, WebP, AVIF
Video delivery (Stream)$0.005/minAdaptive bitrate included
Pull zone$0Unlimited pull zones

Total cost at 10TB stored (2 zones), 50TB delivered (NA/EU):

  • Storage: 10TB x $0.005 x 2 zones x 1,024 = $102
  • Delivery: 50TB x $0.01 x 1,024 = $512
  • Optimizer: $9.50
  • Total: ~$624/month

Comparison:

  • S3 + CloudFront: $4,372
  • Cloudflare R2: $190
  • Bunny: $624

Bunny is between R2 and S3, but includes built-in image optimization and video streaming that R2 does not.

Strengths: Incredible price-to-performance ratio. Built-in image optimization ($9.50/month flat for unlimited). Video streaming with adaptive bitrate. Integrated storage with multi-zone replication. Simple, predictable pricing.

Weaknesses: Smaller CDN network (114 PoPs vs CloudFront 450+ or Cloudflare 300+). Less ecosystem tooling. No S3-compatible API (proprietary API). Less suitable for highly custom media pipelines.

Best for: Content-heavy websites, blogs, SaaS platforms that need affordable media delivery with basic image optimization. Excellent for startups and mid-size companies that find CloudFront too expensive but need more than raw R2 storage.

6. Mux (Video Specific)

The video platform for developers. Encoding, storage, streaming, and analytics in one API.

ComponentRateNotes
Video encoding$0.015/minPer minute of source video
Video storage$0.007/min/monthPer minute stored
Video delivery$0.007/min deliveredAdaptive bitrate streaming
Live streaming$0.007/min (delivery) + $0.012/min (live encoding)Real-time
Analytics (Mux Data)From $0 (basic) to customViewer insights
Free tierNone (pay-per-use from first minute)No minimum

Total cost for 100-hour video library, 10,000 hours monthly views:

  • Encoding (one-time per video): 6,000 min x $0.015 = $90 (amortized)
  • Storage: 6,000 min x $0.007 = $42/month
  • Delivery: 600,000 min x $0.007 = $4,200/month
  • Total: ~$4,242/month

Self-hosted alternative (S3 + CloudFront + MediaConvert):

  • S3 storage (multiple bitrates, 5x source): 500GB x $0.023 = $12
  • MediaConvert encoding (one-time): 6,000 min x $0.024 = $144
  • CloudFront delivery (10TB estimated): 10TB x $0.080 x 1,024 = $819
  • Total: ~$975/month (but requires building the entire adaptive bitrate pipeline)

Mux costs 4x more than DIY. The question is whether your engineering time to build and maintain a video pipeline (HLS packaging, adaptive bitrate, thumbnail generation, player SDK) is worth $3,000/month.

Strengths: Complete video platform (encoding, storage, delivery, player, analytics). Adaptive bitrate streaming out of the box. Excellent developer API. No infrastructure to manage. Automatic quality optimization.

Weaknesses: Expensive at scale ($0.007/min delivered adds up). No image support. Vendor lock-in (proprietary encoding). No free tier.

Best for: Developer-focused video platforms (SaaS with video features, educational platforms, streaming services) where engineering time is more expensive than Mux's premium. Not cost-effective for simple video hosting without streaming requirements.

7. Backblaze B2 + Cloudflare CDN

The budget king. Cheapest possible media storage with free delivery through Cloudflare's Bandwidth Alliance.

ComponentRateNotes
B2 storage$0.006/GB/monthPer GB stored
B2 egress (to Cloudflare)FreeBandwidth Alliance partner
B2 egress (to internet)$0.01/GBNon-Cloudflare destinations
Cloudflare CDNFree (included with any plan)Free plan includes CDN
B2 downloadsFree (first 2,500/day)Then $0.004/10K
Cloudflare Workers (optional)$0.30/M requestsImage resizing, etc.

Total cost at 10TB stored, 50TB delivered/month (via Cloudflare):

  • Storage: 10TB x $0.006 x 1,024 = $61
  • Egress to Cloudflare: $0 (Bandwidth Alliance)
  • Cloudflare CDN: $0 (free tier)
  • Total: ~$61/month

This is 98.6% cheaper than S3 + CloudFront ($4,372 vs $61). No, that is not a typo.

Strengths: Cheapest total cost for static media delivery. Free egress to Cloudflare (Bandwidth Alliance). Simple, predictable pricing. Decent S3-compatible API.

Weaknesses: No built-in transformations (requires external processing). Cloudflare free plan has limits on cache control. Less performant than premium CDNs for dynamic content. B2 does not support all S3 API features. Limited regions (US/EU only for primary storage).

Best for: Media archives, podcast hosting, large file distribution, backup/restore scenarios, and any workload where media is written once and served many times without transformation.

For more on B2 pricing, see our Backblaze B2 pricing guide 2026.


Cost Comparison Matrix: 10TB Stored, 50TB Delivered Monthly

PlatformStorage CostDelivery CostTransform CostTotal/Month
Backblaze B2 + Cloudflare$61$0$0$61
Cloudflare R2$154$0$0$190
Bunny CDN + Storage$102$512$10$624
imgix (+ R2 storage)$154$819Varies$973+
S3 + CloudFront$236$4,096$0$4,372
Cloudinary (Enterprise)IncludedIncludedIncluded~$4,000-5,000
Mux (video only)$42$4,200Included$4,242

The difference between cheapest (B2 + Cloudflare at $61) and most expensive (S3 + CloudFront at $4,372) is 71x. That is not a small optimization. That is a fundamental architecture decision.


Decision Framework: Which Platform for Which Media Type

Static Images (No Processing Needed)

Websites serving pre-optimized images (already resized, already in WebP/AVIF format):

  1. Cheapest: Backblaze B2 + Cloudflare ($0.006/GB stored, free delivery)
  2. Best balance: Cloudflare R2 ($0.015/GB stored, free delivery, S3 API)
  3. Avoid: Cloudinary, imgix (paying for transformation capability you do not use)

Dynamic Images (Resize, Crop, Format Conversion)

E-commerce, user-generated content, responsive images:

  1. High volume (1M+ transforms): imgix ($0.0008/transform) + R2/S3 storage
  2. Moderate volume (<500K transforms): Cloudinary (convenient all-in-one)
  3. Budget option: Bunny Optimizer ($9.50/month flat) + Bunny Storage
  4. DIY option: R2 + Cloudflare Workers (custom, requires development)

Video Streaming (Adaptive Bitrate)

Platforms with video content requiring HLS/DASH delivery:

  1. Developer-friendly: Mux ($0.007/min delivered, zero infra)
  2. Budget streaming: Bunny Stream ($0.005/min delivered)
  3. DIY (cheapest): S3 + MediaConvert + CloudFront (complex but 3-4x cheaper than Mux)
  4. Avoid: Storing raw video on R2 and hoping browsers handle it (they will not)

Mixed Media (Images + Video + Downloads)

SaaS platforms with various asset types:

  1. Best overall value: Cloudflare R2 (storage) + Workers (image transforms) + external video
  2. Simple setup: Bunny CDN + Storage + Optimizer + Stream
  3. Enterprise: S3 + CloudFront + MediaConvert + Lambda@Edge (most control, most cost)

Migration Strategies: Moving From S3 + CloudFront

If you are currently on S3 + CloudFront and want to reduce costs, here are the migration paths ordered by effort:

Low Effort: Add Cloudflare CDN in Front of CloudFront

Put a Cloudflare proxy in front of your CloudFront distribution. Cloudflare caches at their edge (300+ PoPs) and reduces CloudFront egress. Does not require moving data.

Savings: 20-40% on delivery (Cloudflare absorbs cache hits) Effort: DNS change + Cloudflare setup (1-2 hours)

Medium Effort: Move Storage to R2, Keep CloudFront

Migrate static assets from S3 to R2. Set CloudFront to use R2 as origin. Eliminates S3 costs but keeps CloudFront delivery.

Savings: 35% on storage ($0.015 vs $0.023/GB) Effort: Data migration + origin config change (1-2 days)

High Effort: Full Migration to R2 + Cloudflare CDN

Move everything to R2. Use Cloudflare's CDN (included free) instead of CloudFront. Eliminate both S3 and CloudFront.

Savings: 80-95% total cost reduction Effort: Data migration + CDN reconfiguration + testing (1-2 weeks) Risk: Losing CloudFront-specific features (Lambda@Edge, signed URLs, real-time logs)


The Bottom Line

Media storage and delivery is the area where we see the largest cost reduction potential in a single architecture change. Switching from S3 + CloudFront to R2 or B2 + Cloudflare CDN can cut media infrastructure costs by 80-95% with minimal functionality trade-off for static assets.

The key insight: optimize delivery first, storage second. A 50% storage reduction saves pennies per GB. Eliminating egress fees saves dollars per GB. At 50TB monthly delivery, the difference between $0.085/GB (CloudFront) and $0 (R2) is $4,000+ per month.

If your media infrastructure costs are growing faster than your user base, our team at LeanOps specializes in media delivery cost optimization. We have migrated several clients from S3+CloudFront to R2-based architectures and typically cut media costs by 70-90% within 30 days. Get a free Cloud Waste Assessment to see how much you could save.


Further reading:

Frequently Asked Questions

Stop Overpaying for Cloud Infrastructure

Our clients save 30-60% on their cloud bill within 90 days. Get a free Cloud Waste Assessment and see exactly where your money is going.