Object storage price math, with the egress included this time

S3, R2, B2 and GCS priced on a real workload including the egress bill vendors hope you'll forget. One clear winner for serving files.

The bench2 min readCosts

Grouped bar chart of monthly object storage cost split into storage and egress

If users download what you store, Cloudflare R2 wins and it is not close. If nothing ever leaves the bucket, everyone is nearly the same and you should stop optimizing storage and go fix something else (the observability bill, probably). That's the whole verdict; here is the arithmetic.

Workload for the math: 5 TB stored, 2 TB served to the internet per month, 10M class-A-ish operations. List prices as of May 2026 from public pricing pages. Storage is the number vendors advertise. Egress is the number that decides the bill.

The table

RankProviderStorage (5 TB)Egress (2 TB)Month total
1Cloudflare R2~$75$0~$75 + ops
2Backblaze B2~$30free up to 3x storage~$30 + ops
3Google Cloud Storage~$100~$200+~$300
4Amazon S3~$115~$180~$295

B2 outranks the hyperscalers on the strength of its free-egress allowance (up to three times your stored bytes, per their pricing page), and beats R2 on raw storage price. R2 takes first because zero egress is a policy, not an allowance, and because "your files are already at the CDN" removes a whole architectural conversation.

What the sticker hides

Egress at the hyperscalers runs roughly 9 cents per GB at this volume. That's the entire game. Storage prices differ by tens of dollars; serving 2 TB differs by hundreds. Every "S3-compatible but cheaper" pitch you've heard is really an egress pitch wearing a storage costume.

Operations pricing matters at the margins: millions of small PUTs cost real money everywhere, and archive tiers punish retrieval. If your workload is many tiny writes, model ops explicitly before trusting any row above.

The skip

Skip S3 as a default for public file serving. Keep it for what it's genuinely best at: the integration surface of everything else AWS ships, eleven nines of durability lore, and buckets that other AWS services read natively. As the origin behind a paid CDN serving the public internet, the math above says you're paying a premium for the logo. S3-compatible APIs made leaving easy; the vendors know it, which is why the egress line exists at all.

Prices checked May 2026. When a vendor moves a decimal, this table moves with it.