Five myths about Cloudflare R2’s zero-egress pricing debunked
Real-world cost comparisons show Cloudflare R2 is 16 times cheaper than AWS S3 for media SaaS workloads with 10 TB of egress, but S3 remains 15 times more cost-effective for 100 TB of cold archives.
The storage cost deception
Cloudflare R2 charges $0.015 per GB-month for Standard storage. Many engineers claim R2 replaces S3 for every use case. I find this claim false when handling cold data. If you store 100 TB of compliance archives in S3 Glacier Deep Archive, you pay $99 per month, but R2 charges $1,500 for that same amount of data. S3 wins for archives.
R2 is not free.
You pay $4.50 per million Class A operations and $0.36 per million Class B operations. Class A operations include ListBuckets, PutBucket, and PutObject, while Class B operations include HeadBucket and GetObject. The R2 free tier includes 10 GB of storage and 1 million Class A operations. This applies to Standard storage. For Infrequent Access, R2 charges $0.01 per GB-month for storage and $0.01 per GB for data retrieval. I conclude that R2 is the financially rational default only for read-heavy media apps, not for cold storage or complex pipelines.
R2 has one tier.
The real monthly bills
The cost difference between these services is massive. For a media SaaS with 4 TB of assets, 10 TB of egress, and 50 million GET requests, the R2 bill is $64 while the S3 bill reaches $1,038 per month.
| Component | Cloudflare R2 | AWS S3 |
|---|---|---|
| Storage (4 TB) | $61.44 | $94.21 |
| Egress (10 TB) | $0 | $921.60 |
| GET requests (50M) | $2.15 | $22.00 |
| Total | $64 | $1,038 |
If you manage 10 TB of egress, you pay $921 per month to AWS. R2 eliminates this line item. You should check your egress before you switch.
| Scenario | R2 Cost | S3/Wasabi Cost |
|---|---|---|
| Media SaaS (4TB/10TB) | $64 | $1,038 |
| Cold Archive (100TB) | $1,536 | $99 |
| Side Project (50GB/200GB) | $0.60 | $10 |
The numbers prove that egress dominates the S3 bill. In Scenario A, R2 is 16 times cheaper than S3. In Scenario B, S3 is 15 times cheaper than R2. In Scenario C, a developer with 50 GB of storage and 200 GB of egress pays $0.60 with R2, and S3 costs $10. For side projects, R2 wins by a wide margin.
S3 requests cost money.
AWS charges $0.005 per 1,000 PUT requests and $0.0004 per 1,000 GET requests. S3 also provides a 100 GB free egress tier per month. If you route internet traffic through CloudFront, the S3 to CloudFront transfer costs $0.00 per GB. For a 10 TB workload, CloudFront egress is $0.085 per GB, which is lower than the $0.09 direct S3 egress rate. S3 Intelligent-Tiering also adds a monitoring fee of $0.0025 per 1,000 objects per month. For a bucket with 10 million objects, this monitoring fee is $25 per month.
The hidden costs of switching
Migration requires engineering weeks. Tools like Super Slurper help move data from S3 to R2. Rebuilding S3 event triggers for Lambda or SQS in R2 and Workers is a non-trivial rewrite. S3 is the native trigger for Lambda. I find that S3 ecosystem depth is load-bearing.
I find that S3 integrates with Athena for SQL queries and SageMaker for machine learning. R2 has no equivalent analytical query layer. Wasabi has a reasonable use egress policy. If you download 5 TB while only storing 1 TB, Wasabi may throttle you. How much will your migration truly cost?
You already know that AWS is hard to leave.
Do you need deep integration or low egress?
I recommend R2 for high-bandwidth media apps.