Cloudflare Launches R2 Storage with Zero Egress Fees โ AWS S3 Has a Problem
Cloudflare R2 is now generally available with a pricing model that eliminates bandwidth charges. Here's what this means for hosting costs and the object storage market.
Cloudflare's R2 object storage service has exited beta and is now generally available to all customers. The headline feature: zero egress fees. You pay for storage ($0.015/GB/month) and operations (Class A: $4.50/million, Class B: $0.36/million), but downloading your data costs nothing.
The Egress Problem
AWS S3's egress pricing is the cloud industry's most effective vendor lock-in mechanism. Storing data in S3 is cheap ($0.023/GB/month for Standard). Getting it out costs $0.09/GB โ nearly 4x the monthly storage cost for a single download.
For bandwidth-heavy applications, egress fees dominate the bill:
- 1 TB stored in S3 Standard: $23/month
- 1 TB downloaded once: $90
- 10 TB downloaded (moderate video hosting): $900
This pricing structure means companies with data-intensive applications either pay enormous egress fees or architect around them โ staying within AWS to avoid crossing the "egress boundary."
R2's Alternative
Cloudflare R2 pricing:
- Storage: $0.015/GB/month (35% cheaper than S3 Standard)
- Class A operations (PUT, LIST, etc.): $4.50/million
- Class B operations (GET, HEAD): $0.36/million
- Egress: $0.00/GB
The zero-egress model fundamentally changes the economics of object storage:
| Scenario | S3 Standard | Cloudflare R2 |
|---|
| 1 TB stored, 100 GB downloaded/mo | $23 + $9 = $32 | $15 + $0 = $15 |
|---|---|---|
| 1 TB stored, 1 TB downloaded/mo | $23 + $90 = $113 | $15 + $0 = $15 |
| 10 TB stored, 5 TB downloaded/mo | $230 + $450 = $680 | $150 + $0 = $150 |
The cost advantage grows with bandwidth usage. For media delivery, backup storage, or any application where data is frequently downloaded, R2 is dramatically cheaper.
S3 API Compatibility
R2 implements the S3 API, which means it works with existing tools and libraries that talk to S3. Migration from S3 to R2 typically requires:
1. Create an R2 bucket 2. Change your S3 endpoint URL to R2's endpoint 3. Update credentials (R2-specific access key/secret)
Most S3-compatible tools (aws-cli, s3cmd, rclone, boto3) work with R2 with minimal configuration changes. This compatibility is deliberate โ Cloudflare is targeting S3 users who are tired of egress fees.
What R2 Doesn't Do
R2 is positioned as a simpler, cheaper S3 alternative. It doesn't match S3's full feature set:
No storage classes. S3 offers Standard, Intelligent-Tiering, Infrequent Access, Glacier, and Glacier Deep Archive with automatic lifecycle policies. R2 has one storage class.
No strong consistency model. S3 offers strong read-after-write consistency. R2's consistency model varies by region and can be eventually consistent in some scenarios.
No versioning. R2 doesn't support object versioning at launch (on the roadmap, no timeline).
No cross-region replication. Your R2 data lives in one region. Multi-region redundancy requires manual replication.
No server-side encryption with customer keys. R2 encrypts data at rest (AES-256) but doesn't support customer-managed encryption keys.
For most hosting use cases (static assets, backups, media delivery), these limitations don't matter. For enterprise compliance or complex storage architectures, S3's additional features justify the higher cost.
Who Should Switch
Definitely switch:
- Bandwidth-heavy workloads (video, audio, large file delivery)
- Backup storage (frequently downloaded)
- Static site assets (high read volume)
- Anything where egress fees are >50% of your S3 bill
Probably switch:
- General-purpose object storage where you don't need S3's advanced features
- Budget-constrained projects where S3 egress creates unpredictable costs
Probably don't switch:
- Compliance-heavy workloads needing encryption features
- Multi-region requirements with automated replication
- Lifecycle-managed archives (S3 Glacier's pricing for cold storage is still compelling)
- Workloads already deeply integrated with AWS ecosystem (Lambda triggers, S3 Events, etc.)
What This Means for Hosting
R2's zero-egress model challenges the assumption that data transfer must be expensive. If R2 gains significant adoption, expect:
1. AWS egress price cuts. AWS has historically responded to competition by cutting prices (though S3 egress hasn't moved in years).
2. Other providers following. Backblaze B2 already offers free egress to some CDN partners. Wasabi has no egress fees but limits downloads to your storage volume. R2 raises the bar.
3. Egress as a competitive feature. Zero-egress object storage could become table stakes, like free SSL certificates became after Let's Encrypt.
4. New application architectures. When data transfer is free, applications that were uneconomical due to bandwidth costs become viable.
For hosting providers, R2 changes the backup and static asset delivery calculus. A monthly backup to R2 costs $0.015/GB stored โ a 10GB server backup costs $0.15/month, and downloading it during recovery costs nothing. Compare to S3: $0.23/month to store, $0.90 to download once.
Our Take
Cloudflare R2 isn't trying to be a better S3. It's trying to be a simpler, cheaper S3 โ and for 80% of object storage use cases, that's exactly what most people need.
The zero-egress model is genuinely disruptive. Egress fees have been the cloud industry's dirty secret for years โ a tax on getting your own data back. R2 makes that tax visible by eliminating it, and suddenly S3's pricing looks less like "the cost of cloud storage" and more like "the cost of AWS lock-in."
If your object storage bill has a significant egress component, R2 is worth testing. The S3 API compatibility means migration is straightforward, and the cost savings for bandwidth-heavy workloads are dramatic.
Caution: R2 is a new service. Test thoroughly with non-critical data before migrating production workloads. Cloudflare has a solid infrastructure track record, but R2 hasn't been battle-tested at the scale of S3.