Multi-cloud S3-compatible storage: Cloudflare R2 (zero egress fees, edge-replicated across 300+ cities), Backblaze B2 (cheapest storage at $0.005/GB/month, $0.01/GB egress), Wasabi (flat $7/TB/month, no egress fees), and MinIO (self-hosted, S3-compatible). The right pick: R2 for read-heavy workloads with global users, B2 for cold/archival storage, Wasabi for predictable flat pricing, MinIO for on-prem or hybrid cloud.
Table of contents
- The 4 options at a glance
- Cloudflare R2: zero egress, edge-replicated
- Backblaze B2: the cheapest storage
- Wasabi: flat pricing, no egress
- MinIO: the on-prem / hybrid option
- The right pick by workload
- How this fits the rest of the stack
- FAQ
The 4 options at a glance
Cloudflare R2 - S3-compatible object storage with zero egress fees. Storage: $0.015/GB/month. Operations: $0.36/million Class A (writes), $0.36/million Class B (reads). The team that has a read-heavy workload with global users uses R2 - the lack of egress fees is a real saving at scale.
Backblaze B2 - S3-compatible, the cheapest per-GB storage. Storage: $0.005/GB/month. Egress: $0.01/GB (free up to 3x monthly storage). The team that has a cold/archival workload and can tolerate the egress cost uses B2.
Wasabi - S3-compatible, flat $7/TB/month ($0.007/GB) for hot storage, no egress fees. The team that has predictable storage needs and wants no surprises uses Wasabi.
MinIO - self-hosted, S3-compatible. The team that needs on-prem or hybrid cloud uses MinIO. Compare to on-premises S3 platforms for the full comparison.
Cloudflare R2: zero egress, edge-replicated
The killer feature: zero egress fees. S3 charges $0.09/GB for egress, R2 charges $0. The team that serves a lot of data to a global audience saves real money on R2 vs S3.
Storage is replicated across Cloudflare’s 300+ cities automatically. The team that has users in multiple continents gets low-latency reads from the edge.
The S3-compatible API means the team that uses boto3, the AWS SDK, or any S3 client can point it at R2 with no code changes.
Pricing (as of 2026):
-
Storage: $0.015/GB/month (free for first 10 GB)
-
Class A operations (writes, lists): $4.50/million
-
Class B operations (reads): $0.36/million
-
Egress: $0 (zero)
The team that reads 100 TB/month from S3 ($9,000/month egress) vs R2 ($0 egress) saves $108k/year.
Backblaze B2: the cheapest storage
Storage: $0.005/GB/month. The cheapest per-GB object storage from any major provider.
Egress: $0.01/GB, free up to 3x your monthly storage. The team that stores 100 TB and downloads 100 TB/month pays $0 egress (3x multiplier means 300 TB free egress).
B2 has been around since 2015. Mature, reliable, the team that has backups and cold storage uses B2.
Pricing:
-
Storage: $0.005/GB/month (first 10 GB free)
-
Egress: $0.01/GB (free up to 3x monthly storage)
-
Class B transactions (reads): $0.004/10k
Compare: 100 TB stored, 50 TB egress/month = $500/month storage + $500/month egress (if over 3x) = $1000/month. On S3: $9000/month egress. On R2: $0 egress.
Wasabi: flat pricing, no egress
Storage: $7/TB/month ($0.007/GB). Flat - no tiered pricing, no per-class operation fees.
Egress: $0 (free), but with a 1 TB minimum storage commitment.
Wasabi is positioned as a direct S3 competitor with simpler pricing. The team that has predictable storage and wants to budget accurately uses Wasabi.
Pricing:
-
Storage: $7/TB/month (1 TB minimum)
-
Egress: $0
-
API requests: $0 (no per-request fees)
The team that has a stable 50 TB of data on S3 pays $50,000+/year with egress charges; on Wasabi, the same data is $4,200/year (no egress).
MinIO: the on-prem / hybrid option
Self-hosted, S3-compatible. The team that needs on-prem storage (compliance, latency, data sovereignty) uses MinIO. See the on-premises S3 storage post for the full MinIO/Ceph/SeaweedFS comparison.
For hybrid cloud: MinIO on-prem + a cloud S3-compatible layer in front (e.g., MinIO Gateway that mirrors to S3). The team that has compliance needs for some data and global access for the rest uses this pattern.
The right pick by workload
Read-heavy, global audience, no egress budget: Cloudflare R2. The team that has a CDN-like workload (lots of reads, few writes, global users) picks R2.
Cheapest storage, archival, backups: Backblaze B2. The team that has 100 TB of cold backups and downloads rarely uses B2.
Predictable budget, no surprise bills, hot data: Wasabi. The team that has a fixed storage budget and does not want to think about egress uses Wasabi.
On-prem, compliance, data sovereignty: MinIO. The team that needs the data in a specific datacenter (or in their own datacenter) uses MinIO.
Already on AWS, no reason to leave: S3. The team that is deeply integrated with the AWS ecosystem stays on S3.
FAQ
Is Cloudflare R2 really S3-compatible?
Yes - R2 implements the S3 API. The team that uses boto3, the AWS SDK, aws-cli, or any S3 client can point it at R2 with no code changes.
Why is Cloudflare R2 so much cheaper than S3 for egress?
Cloudflare makes money on the CDN/compute side, not on storage. They can afford to charge $0 egress because the storage + API request fees cover their costs. AWS charges for egress because it is a separate revenue line. The team that picks based on the actual usage pattern saves real money.
Can I use Backblaze B2 with the AWS SDK?
Yes - B2 is S3-compatible. The team that uses boto3 sets the endpoint to https://s3.<region>.backblazeb2.com and uses the same API.
Is Wasabi faster than S3?
For the same region, S3 is usually faster (AWS has a more mature edge). Wasabi is comparable for most workloads. The team that benchmarks on their specific workload gets the only correct answer.
What happens to my data if my S3-compatible provider goes down?
If the provider has cross-region replication (R2, S3 with CRR enabled, Wasabi with replication), your data is replicated to another region. If not, you have a single point of failure. The team that needs durability enables cross-region replication or backs up to a different provider.
Can I use multiple S3-compatible providers at the same time?
Yes - the team that uses CloudFlare R2 for hot data and Backblaze B2 for backups, with a script that syncs between them, has multi-cloud storage. The trade-off: managing two providers, two bills, two sets of credentials.
How this fits the rest of the stack
For a sense of what the full project costs before it commits, the RunxBuild hosting calculator shows the line items together. The API, the database, the storage, the worker, the bandwidth - each one is a separate number, and the team’s mental model for the platform is the sum of those numbers.
Useful related references: