S3 vs Cloudflare R2 vs Backblaze B2: Understanding Egress Fees
Storage price per GB is rarely what makes your object storage bill expensive — egress, the fee for serving files back out, almost always is. This guide explains why, and which providers eliminated it.
Object storage pricing pages all show a similar, deceptively low number: a few cents per GB stored per month. That number is almost never the real cost driver. The real cost driver is egress — the fee charged every time a file leaves the provider's network, e.g. when a user downloads an image, plays a video, or your app fetches a backup. For content-heavy applications, egress fees can be 5–10x the storage cost.
Why egress fees exist
Cloud providers pay for the network bandwidth that moves your data to the internet. Amazon S3 (and most traditional cloud storage) passes that cost directly to you per GB transferred out. It costs nothing extra to store a file you never serve, but a popular file downloaded a million times can generate a bill far larger than its storage cost would suggest.
- Storage cost — What you pay per GB sitting in the bucket, regardless of usage — typically $0.005–$0.023/GB/month.
- Egress cost — What you pay per GB transferred out to the internet — typically $0.05–$0.09/GB on Amazon S3, scaling directly with traffic.
- Request cost — A smaller per-request fee for GET/PUT operations — usually negligible unless you have extremely high request volume.
The providers that eliminated egress fees
A newer generation of S3-compatible providers built their entire pricing strategy around removing this fee, specifically to compete with Amazon S3 on cost for content-heavy use cases.
- Cloudflare R2 — Zero egress fees, full stop — Cloudflare can do this because it makes money on its CDN and network elsewhere. Tightly integrated with Cloudflare Workers and CDN.
- Backblaze B2 — Free egress up to 3x your average monthly storage, and free unlimited egress when paired with Cloudflare or Fastly via the Bandwidth Alliance.
- Wasabi — No egress fees at all, but a flat predictable monthly rate per TB instead — simplest to budget for, though slightly pricier than R2 or B2 at the storage layer.
Rule of thumb
If your app serves files to end users at meaningful volume — images, downloads, video, backups restored frequently — model your bill on expected egress, not storage. If you're mostly storing rarely-accessed data (backups, archives), egress-free pricing matters far less and you can optimise purely on storage cost.
Is switching away from S3 worth the migration effort?
Because R2, B2, and Wasabi are all S3-API-compatible, migrating is usually a matter of changing the endpoint and credentials in your SDK config, then transferring existing data — not a code rewrite. For an app already paying meaningful egress on S3, the savings from switching often pay back the one-time migration effort within the first month or two.
- Estimate your current egress spend — Check your last 1–3 months of cloud billing for the specific "data transfer out" line item, not total storage cost.
- Confirm S3 API compatibility for your SDK calls — Most standard S3 SDK operations (GET, PUT, list, presigned URLs) work unchanged against R2/B2/Wasabi — test with a staging bucket first.
- Migrate data with a sync tool, not a manual copy — Tools like rclone handle bucket-to-bucket sync between any S3-compatible providers reliably at scale.
Next step
Use the RadarTrek Object Storage screener to compare egress cost scores side by side before committing to a migration.
Ready to decide?
Use the Object Storage Screener to filter by your criteria and compare options head-to-head.