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

Media Delivery: S3+CloudFront Charges $4,372/Month. One Platform Does It for $190.

Media Delivery: S3+CloudFront Charges $4,372/Month. One Platform Does It for $190.
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)


Migration Calculator: S3+CloudFront to R2

Everyone knows R2 is cheaper. The question teams actually ask: "What does it cost to get there, and how fast do we break even?" Here is the full math including the one-time migration cost that most comparisons ignore.

The Hidden Migration Cost: S3 Egress

AWS charges you $0.09/GB to move your own data out of S3. This is the "exit fee" that makes AWS sticky. But at the savings R2 delivers, this cost pays for itself in days, not months.

Full Migration Cost Model: 10TB Workload

One-time migration costs:

ComponentCalculationCost
S3 egress (10TB out)10,240 GB x $0.09/GB$921.60
S3 GET requests (10M objects)10M x $0.0004/1K$4.00
R2 PUT requests (10M objects)10M x $4.50/M$45.00
Engineering time (est. 20 hours)Internal cost$0 (sunk)
Total one-time cost$970.60

Monthly cost comparison (post-migration):

Line ItemS3 + CloudFront (before)R2 (after)Monthly Savings
Storage (10TB)$236$154$82
Delivery (50TB egress)$4,096$0$4,096
API operations$40$36$4
Total$4,372$190$4,182

Break-even calculation:

  • One-time migration cost: $970.60
  • Monthly savings: $4,182
  • Break-even: 5.6 days

You read that right. The migration pays for itself in under a week. After that, you save $4,182 every single month -- $50,184 per year.

Migration Timeline by Data Volume

Data VolumeS3 Egress CostMigration Time*Monthly SavingsBreak-Even
1TB$922-4 hours$4185.3 days
5TB$4618-12 hours$2,0915.3 days
10TB$9221-2 days$4,1825.3 days
25TB$2,3043-5 days$10,4555.3 days
50TB$4,6085-10 days$20,9105.3 days
100TB$9,21610-20 days$41,8205.3 days

*Migration time assumes 1Gbps sustained transfer using rclone with 32 parallel transfers.

Notice the pattern: break-even is consistently ~5 days regardless of data volume, because both the migration cost and the savings scale linearly with volume.

Step-by-Step Migration Process

Phase 1: Parallel Write (Day 1-2)

  1. Configure your application to write new objects to both S3 and R2 simultaneously
  2. This ensures no data loss during migration and allows instant rollback
  3. R2 cost during dual-write: negligible ($4.50/M PUTs)

Phase 2: Bulk Copy (Day 2-7)

  1. Use rclone sync from S3 to R2 with parallel transfers:
    rclone sync s3:my-bucket r2:my-bucket --transfers 32 --checkers 64 --s3-chunk-size 64M
    
  2. Monitor progress: rclone check s3:my-bucket r2:my-bucket
  3. S3 egress will spike (this is the one-time cost)

Phase 3: Switch Reads (Day 7-8)

  1. Update CDN origin from S3/CloudFront to R2
  2. If using custom domain: update Cloudflare CNAME to R2 bucket
  3. Monitor error rates -- roll back if any 4xx/5xx spike

Phase 4: Stop S3 Writes + Decommission (Day 14-30)

  1. After 7 days of clean R2-only reads, stop dual-writes
  2. Keep S3 bucket for 30 days as safety net (cost: $236/month for 10TB)
  3. Delete S3 data after confirming all objects served correctly from R2
  4. Remove CloudFront distribution

Phase 5: Verify Savings (Day 30+)

  1. Compare AWS bill vs Cloudflare bill
  2. Expected: AWS drops by 95%+ (only residual costs from Phase 4 retention)
  3. Ongoing monthly cost: ~$190 vs previous ~$4,372

What Can Go Wrong (And Fixes)

RiskLikelihoodMitigation
S3 features used that R2 lacks (versioning, lifecycle)MediumAudit S3 configuration before migration; replicate needed features with Workers
Lambda triggers on S3 uploads breakHigh if usedRewrite as R2 event notifications + Workers
Signed URL format differencesMediumR2 supports S3-compatible presigned URLs; test your SDK
Cache invalidation during cutoverLowUse cache-busting version strings or purge Cloudflare cache
Replication/durability concernsLowR2 replicates across multiple facilities; add B2 backup if needed

Platform Selection Matrix by Use Case

Knowing which platform wins for YOUR specific use case saves weeks of research. Here are the 6 most common media workloads with the optimal platform and real monthly costs at 10TB scale.

Use Case 1: User Uploads (SaaS File Storage)

Pattern: Users upload documents, images, and files. Files are downloaded by the same user or shared with collaborators. Write-heavy with moderate reads.

PlatformMonthly Cost (10TB stored, 5TB delivered)Why
Cloudflare R2$154 storage + $0 egress + $18 ops = $172Zero egress, S3-compatible API, Workers for processing
AWS S3 + CloudFront$236 + $425 + $5 = $666Only if you need Lambda triggers on upload
Backblaze B2 + CF$61 + $0 + $3 = $64Cheapest, but fewer regions and no compute integration
Bunny CDN + Storage$102 + $51 = $153Good, but proprietary API (not S3-compatible)

Winner: Cloudflare R2 -- best balance of cost, compatibility, and ecosystem (Workers for thumbnails, virus scanning, etc.)

Use Case 2: Video Streaming Platform

Pattern: Content creators upload video. Viewers stream at various quality levels. Requires transcoding, adaptive bitrate, and analytics.

PlatformMonthly Cost (1,000 hours stored, 50K hours delivered)Why
Mux$420 storage + $21,000 delivery = $21,420Full platform, zero infra work, but expensive at scale
Bunny Stream$250 storage + $15,000 delivery = $15,250Cheaper, includes adaptive bitrate
S3 + MediaConvert + CF$12 + $144 encoding + $4,096 CDN = $4,252Cheapest but requires building entire pipeline
R2 + Workers + HLS.js$154 + $0 egress + encoding cost = ~$500Cheapest delivery, but you build everything

Winner: S3 + MediaConvert + CloudFront for cost-conscious teams with engineering capacity. Mux for teams that value dev time over infrastructure cost.

Use Case 3: Image CDN (E-commerce, Media)

Pattern: Millions of product/editorial images served in multiple sizes. Needs resize, format conversion, and global low-latency delivery.

PlatformMonthly Cost (10TB images, 50TB delivery, 10M transforms)Why
R2 + Workers (image resize)$154 + $0 + $3 Workers = $157Cheapest by far, requires building transform Worker
Cloudflare Images$50 storage + $500 delivery = $550Managed, simple, no dev work
imgix + R2 storage$154 + $8,000 transforms + $4,096 bandwidth = $12,250Best quality transforms, expensive at scale
Cloudinary EnterpriseCustom, typically $4,000-8,000All-in-one, most features, most expensive

Winner: R2 + Workers if you have engineering capacity. Cloudflare Images for managed simplicity. Avoid imgix/Cloudinary at this scale unless you need specific AI features.

Use Case 4: Backup and Disaster Recovery

Pattern: Large datasets backed up daily/weekly. Rarely accessed. 90+ day retention. Restores are emergency-only.

PlatformMonthly Cost (10TB stored, 100GB monthly test restore)Why
Backblaze B2$61 + $0 (via CF) = $61Cheapest, works with Veeam/rclone natively
Wasabi$69.90 + $0 = $69.90Close second, zero API costs, 90-day minimum aligns with backup retention
AWS S3 Glacier IR$40 + $1 retrieval = $41Cheapest if restores are truly rare (retrieval fees add up)
Cloudflare R2$154 + $0 = $154Overkill -- paying for egress benefit you do not use

Winner: Backblaze B2 for general backup. S3 Glacier IR if restores are once-a-year events and you are already on AWS.

Use Case 5: ML Training Data Storage

Pattern: Large datasets (images, text, audio) stored centrally. Multiple training jobs read entire datasets repeatedly. Very high egress-to-storage ratio.

PlatformMonthly Cost (10TB stored, 100TB read during training)Why
Cloudflare R2$154 + $0 egress + $36 ops = $190Zero egress is critical when reading 10x your storage
AWS S3 (same region as compute)$236 + $0 (same-region) = $236Free if compute is in same region; otherwise $9,000+
Backblaze B2 + CF$61 + $0 = $61Cheapest, but latency from B2 to GPU cluster may be problematic
AWS S3 Express One Zone$160 + $0 (same AZ) = $160Fastest (single-digit ms), but data tied to one AZ

Winner: AWS S3 in same region if your GPU cluster is on AWS (free intra-region transfer). Cloudflare R2 if compute is multi-cloud or on Cloudflare Workers AI. Avoid cross-region S3 egress at all costs.

Use Case 6: Static Site Assets (Marketing, Docs)

Pattern: Pre-built static site with images, CSS, JS, fonts. Moderate traffic, assets rarely change. Performance and global latency matter.

PlatformMonthly Cost (50GB stored, 5TB delivered)Why
Cloudflare R2 + Pages$0.77 + $0 + $0 = $0.77R2 free tier (10GB) + Pages for hosting; practically free
Bunny CDN + Storage$0.26 + $51 = $51.26Budget CDN, good performance
AWS S3 + CloudFront$1.15 + $425 = $426Wildly overpriced for this use case
Netlify/Vercel (built-in CDN)$0 (free tier) to $20/moSimplest, included with hosting platform

Winner: Cloudflare R2 + Pages for near-zero cost with excellent performance. Or simply use your hosting platform's built-in CDN (Netlify, Vercel, Cloudflare Pages) if assets are bundled with the site.

Summary Matrix

Use CaseBest PlatformMonthly Cost (10TB)Runner-UpAvoid
User uploads (SaaS)Cloudflare R2$172B2 + CF ($64)S3+CF ($666)
Video streamingS3 + MediaConvert + CF$4,252Bunny StreamMux at scale ($21K+)
Image CDNR2 + Workers$157CF Images ($550)Cloudinary ($4K+)
Backup/DRBackblaze B2$61Wasabi ($70)R2 ($154, overkill)
ML training dataS3 same-region or R2$190-236B2 ($61, if latency OK)S3 cross-region ($9K+)
Static site assetsR2 + Pages<$1Bundled CDN ($0-20)S3+CF ($426, absurd)

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.