Yashveer Singh
Connect
<- All posts
Comparisons and Vendor Decisions12 min read

Cloudflare R2 vs S3 vs Backblaze B2

S3 is the original object storage with the broadest ecosystem and the deepest integration with the AWS stack. Cloudflare R2 is S3 compatible storage with zero egress fees. Backblaze B2 is the lowest cost option with reasonable performance. The right choice depends on the egress pattern, the surrounding stack, and the team's risk appetite for newer vendors.

Written by Yashveer Singh, founder of Yashveer Labs.

What you actually need to know

  • S3 is the default. Deepest ecosystem. Most expensive at scale because of egress.
  • R2 wins when egress is the cost driver. Zero egress is the headline.
  • B2 wins on pure storage cost. Bandwidth alliance with Cloudflare is meaningful.
  • All three offer S3 compatible APIs. Migration is straightforward.
  • Pick by cost pattern and ecosystem fit, not by reliability.
PropertyS3R2B2
Storage per TB per month23 USD15 USD6 USD
Egress per TB90 USD0 USD10 USD with alliance free
Read request per million0.40 USD0.36 USD4 USD
Write request per million5 USD4.50 USD4 USD
Free egress to internet100 GB monthlyAllVariable
S3 API compatibleNativeYesYes
EcosystemLargestGrowingSmaller

The core argument

Object storage looks like a commodity. The three main providers offer similar durability, similar APIs, and similar developer experience for most use cases. The pricing differences are what make the decision interesting.

S3 is the safe default because of the ecosystem. Every cloud tool integrates with S3. The pricing is the most expensive, especially on egress, but the integration savings are real for teams already on AWS. The team does not have to think about it.

R2 is the egress free option. The storage cost is moderate. The egress is zero. The math is favorable for workloads with heavy egress relative to storage. Static asset hosting, public file downloads, image and video delivery. The savings versus S3 can be tens of thousands of dollars per month at scale.

B2 is the cheapest. The storage cost is roughly a quarter of S3. The egress through the Cloudflare bandwidth alliance is free or very cheap. The ecosystem is smaller and the performance is adequate rather than excellent. B2 is the right call for cold storage, backups, and archive use cases where cost dominates.

The teams that pick well evaluate the pattern. Heavy egress chooses R2. Heavy cold storage chooses B2. Deep AWS integration chooses S3. The wrong call costs real money at scale.

The cost math at three scales

At 1 TB of storage with 5 TB of egress per month.

S3 costs 23 USD for storage, 442 USD for egress (after free tier), 7.50 USD for requests. Total roughly 472 USD per month.

R2 costs 15 USD for storage, 0 USD for egress, 5 USD for requests. Total roughly 20 USD per month.

B2 costs 6 USD for storage, depending on alliance configuration this can be 0 to 50 USD for egress, 5 USD for requests. Total roughly 11 to 61 USD per month.

The R2 savings at this scale are roughly 450 USD per month or 5400 USD per year. The B2 savings are higher in pure cost but require the bandwidth alliance to fully realize.

How much does this cost

The numbers above scale linearly with usage. A 10 TB storage with 50 TB egress per month produces an S3 bill of roughly 4700 USD versus an R2 bill of roughly 175 USD. The savings are significant.

The migration cost is one sprint of engineering work for most teams plus the data transfer cost. The payback is fast at scale.

Features the object store must have

  • Server side encryption.
  • Versioning for objects.
  • Lifecycle policies for tiering and expiration.
  • Presigned URLs for direct uploads and downloads.
  • Cross region replication if availability matters.
  • CDN integration for public content.
  • Detailed access logs.
  • A clear path for migration if you ever need to leave.

Expert opinion

Object storage pricing is one of the few places where the savings are dramatic and the engineering work to realize them is small. The teams that pay full S3 egress at scale are paying for ecosystem they may not be using. R2 has matured to the point where most production workloads can move to it cleanly. The decision is worth making deliberately every couple of years as the pricing landscape shifts.

>

Yashveer Singh, founder of Yashveer Labs

How this played out on a real project

A client SaaS was serving customer assets from S3 to users worldwide. The egress bill was approaching 8000 USD per month and growing fast. The storage bill was modest by comparison.

We migrated to R2 over two weeks. The data transfer was the longest part. The application change was a credential and endpoint swap. The verification was running both stores in parallel for a week and comparing checksums on a sample.

The monthly bill dropped from roughly 8500 USD to roughly 600 USD. The savings paid for the migration cost in the first week. The team has been on R2 for two years since without significant issues.

For more on the related work, see cloud hosting costs at scale what founders underestimate and CDN strategy for a global SaaS in 2026.

Common mistakes teams make

  1. Picking S3 by default without checking the egress math.
  2. Picking R2 for storage heavy cold data where B2 would have been cheaper.
  3. Picking B2 for AWS deep workloads where the integration cost dominates the savings.
  4. Ignoring request costs. They add up on high request workloads.
  5. No lifecycle policies. Storage accumulates.
  6. No versioning. Lost data is unrecoverable.
  7. Public buckets that leak data.
  8. No migration plan. Vendor lock is real for huge stores.

A 30 day plan to evaluate object storage

  1. Week one. Measure current storage, egress, and requests. Calculate the bill at each provider.
  2. Week two. Pick the right provider. Set up a test bucket.
  3. Week three. Migrate a non production workload. Verify performance.
  4. Week four. Plan the production migration if savings warrant it.

For more on the related work, read cloud hosting costs at scale what founders underestimate and reserved instances and cost math when they pay off. On the broader vendor side, the vendor audit every funded startup should run once a year is the natural next read.

FAQ

Frequently asked

Author

The reason my name is on this page

My name is on this page because I wrote what is on this page. Yashveer Singh. Full stack developer. Founder of Yashveer Labs. The portfolio is on the homepage. The projects are live. The code is real. The work is provable. If you have read this far, you already know whether the voice matches the standard you are looking for. The next move is yours.

Related reading