AWS S3 vs Cloudflare R2: Real Cost at 1TB, 5TB and 10TB

Storage is only part of an object-storage bill. This model adds requests and internet egress to show when R2 saves hundreds of dollars and when S3 still makes sense.

AWS S3 vs Cloudflare R2: Real Cost at 1TB, 5TB and 10TB
TLDR
  • With monthly downloads equal to stored data, R2 costs about $15 at 1TB while S3 costs about $116.
  • At 10TB, the same model reaches roughly $153 on R2 and $1,157 on S3. Internet egress creates almost the entire gap.
  • S3 still wins when the application depends on AWS eventing, storage classes, IAM depth or service-to-service transfers that never leave AWS.

Object storage comparisons often stop at $0.023 versus $0.015 per GB. That misses the bill that hurts: data leaving the platform. A media archive that is rarely opened behaves very differently from a download service that serves its entire stored volume every month.

This model uses US-region S3 Standard and R2 Standard rates checked October 4, 2026. It assumes 1 binary TB equals 1,024GB, data transferred to the internet equals stored volume, one million writes and 10 million reads per month. Taxes, support, CDN, Workers and compute are excluded.

The rates behind the calculation

ChargeAWS S3 StandardCloudflare R2 Standard
Storage$0.023/GB-month$0.015/GB-month
Write requests$5.00/million$4.50/million Class A
Read requests$0.40/million$0.36/million Class B
Internet egress$0.09/GB in the first paid tier$0
Monthly free allowanceAccount/program dependent; model gives 100GB egress10GB storage, 1M A, 10M B

Real monthly cost at 1TB, 5TB and 10TB

Stored + downloadedS3 storageS3 egressS3 total*R2 total*R2 saving
1TB$23.55$83.16$115.71$15.21$100.50
5TB$117.76$451.80$578.56$76.65$501.91
10TB$235.52$912.60$1,157.12$153.45$1,003.67

*Totals include one million writes and 10 million reads. R2’s free request allowance covers that exact request profile; S3 adds $9 for requests. S3 egress gives the first 100GB free in this model.

R2 wins public delivery because the cost curve is flat

R2’s bill barely changes when a stored file becomes popular. Reads can add request charges, and a cache miss still generates a Class B operation, but the bytes leaving R2 remain free. That makes video, software downloads, public datasets, model files and user-generated media the clearest R2 workloads.

One R2 user reported serving roughly $2,500 worth of S3-equivalent transfer for $10.80. Another reported moving all S3 usage and cutting the bill by about 90%, primarily by removing egress. Those are not guarantees, but they expose the same cost mechanism as the table.

S3 wins when storage is part of an AWS system

S3 is not merely a bucket. It connects directly to Lambda, EventBridge, Athena, CloudFront, replication, extensive storage classes, access points, inventory and mature IAM controls. If data moves among AWS services without crossing the public-internet billing boundary, a simple egress comparison exaggerates R2’s advantage.

S3 also offers archival tiers that can undercut R2 Standard for data that is rarely retrieved. The correct comparison for a compliance archive is Glacier or an infrequent-access design, not S3 Standard versus R2 Standard.

R2’s S3 compatibility is broad, not identical

R2 works with the AWS SDK by changing the endpoint, account credentials and region setting. Common object operations migrate cleanly. Applications using specialized S3 events, bucket policies, object Lambda, access points or AWS-specific identity flows need an explicit compatibility test.

Production reports also mention sporadic latency spikes and slower support escalation. S3 has outages too, but AWS offers a longer operational history and more mature support structure. Keep a tested export path and do not let a low bill become the only copy of critical data.

Use this decision rule

WorkloadBetter defaultReason
Public downloads, media, datasetsR2Zero direct egress dominates the bill
AWS application data and eventsS3Native integrations and IAM
Long-term cold archiveS3 archival tiersLower storage in exchange for retrieval rules
Cloudflare Workers applicationR2Native binding and one billing ecosystem
Maximum portabilityR2 with tested S3-compatible clientLower exit cost, but verify APIs
Bottom line

If users download the data, R2 wins the price comparison. If AWS services process the data, S3 may still win the architecture.

Calculate storage, operations and destination-specific transfer together. A price per stored gigabyte alone is not an object-storage bill.

Frequently asked questions

Is Cloudflare R2 cheaper than AWS S3?

For public-download workloads, usually yes. R2 storage and request rates are slightly lower and direct internet egress is free. An AWS-native workload with little egress may value S3 integrations more than the price difference.

Does Cloudflare R2 really have free egress?

Cloudflare charges $0 for data transferred directly from R2 through the S3 API, Workers API, r2.dev or a custom domain. Connected metered services can still add their own charges.

Can R2 replace S3 without code changes?

R2 supports the S3 API and common SDKs, but it is not a perfect implementation of every S3 feature. Test the exact APIs, eventing, lifecycle, policy and consistency assumptions your application uses.