S3-compatible storage compared: true cost at 1 TB + 5 TB egress Pricing Compared

What s3-compatible storage compared: true cost at 1 tb + 5 tb egress actually cost, side by side: 12 providers — Cloudflare R2, Backblaze B2, Wasabi, Tigris and 8 more — across 10 pricing fields, each figure sourced and dated. Published list prices only, no negotiated rates, no affiliate deals, last verified 2026-07-23.

Last verified
2026-07-23 (today)
Source confidence
35%
Re-verified
every 30 days
Tools
12
Fields
10
12 tools · verified today
Hetzner Object StorageThe cheapest credible S3 endpoint in Europe, with a deliberately thin feature set.89.1

Pricing

True cost /mo (USD) (/mo)
$12.47 /mo
True cost /mo (AUD) (/mo)
A$18.95 /mo
True cost from Sydney (AUD) (/mo)
Storage $/TB/mo (/TB/mo)
$6.95 /TB/mo
Egress $/TB (/TB)
$1.38 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
StorjDecentralised erasure-coded storage: USD 4/TB stored, USD 7/TB egress, no regions.87.9

Pricing

True cost /mo (USD) (/mo)
$39 /mo
True cost /mo (AUD) (/mo)
A$59.28 /mo
True cost from Sydney (AUD) (/mo)
A$59.28 /mo
Storage $/TB/mo (/TB/mo)
$4 /TB/mo
Egress $/TB (/TB)
$7 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
Backblaze B2Cheap US and EU object storage with free egress up to three times stored volume.87.1

Pricing

True cost /mo (USD) (/mo)
$26.95 /mo
True cost /mo (AUD) (/mo)
A$40.96 /mo
True cost from Sydney (AUD) (/mo)
Storage $/TB/mo (/TB/mo)
$6.95 /TB/mo
Egress $/TB (/TB)
$10 /TB
Egress cap (x stored) (x stored)
3 x stored
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
iDrive e2USD 4/TB S3-compatible storage with zero-egress marketing and a fair-use cap.86.2

Pricing

True cost /mo (USD) (/mo)
True cost /mo (AUD) (/mo)
True cost from Sydney (AUD) (/mo)
Storage $/TB/mo (/TB/mo)
$4 /TB/mo
Egress $/TB (/TB)
$0 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
Bunny StorageEdge storage built as a CDN origin, with its own API rather than a faithful S3 one.82.4

Pricing

True cost /mo (USD) (/mo)
$60 /mo
True cost /mo (AUD) (/mo)
A$91.2 /mo
True cost from Sydney (AUD) (/mo)
A$243.2 /mo
Storage $/TB/mo (/TB/mo)
$10 /TB/mo
Egress $/TB (/TB)
$10 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
MinIOThe self-hosted S3 reference implementation — your hardware, your bandwidth, your SLA.78.8

Pricing

True cost /mo (USD) (/mo)
True cost /mo (AUD) (/mo)
True cost from Sydney (AUD) (/mo)
Storage $/TB/mo (/TB/mo)
Egress $/TB (/TB)
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
Scaleway Object StorageEuropean-sovereign S3 storage with multi-AZ classes and a real IAM system.77.3

Pricing

True cost /mo (USD) (/mo)
$72.8 /mo
True cost /mo (AUD) (/mo)
A$110.66 /mo
True cost from Sydney (AUD) (/mo)
Storage $/TB/mo (/TB/mo)
$16.94 /TB/mo
Egress $/TB (/TB)
$11.6 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
DigitalOcean SpacesBundled object storage plus free CDN, priced as a flat base fee with overages.76.8

Pricing

True cost /mo (USD) (/mo)
$60 /mo
True cost /mo (AUD) (/mo)
A$91.2 /mo
True cost from Sydney (AUD) (/mo)
A$91.2 /mo
Storage $/TB/mo (/TB/mo)
$20 /TB/mo
Egress $/TB (/TB)
$10 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
0 ms
Min billed object
0 B
Cloudflare R2S3-compatible object storage with zero egress fees, on Cloudflare's network.73.6

Pricing

True cost /mo (USD) (/mo)
$22.74 /mo
True cost /mo (AUD) (/mo)
A$34.56 /mo
True cost from Sydney (AUD) (/mo)
A$34.56 /mo
Storage $/TB/mo (/TB/mo)
$15 /TB/mo
Egress $/TB (/TB)
$0 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$4.5 /M ops
Class B $/M ops (/M ops)
$0.36 /M ops
Min retention
0 ms
Min billed object
0 B
WasabiFlat-rate hot storage with no egress or API fees, bounded by a fair-use cap.68.5

Pricing

True cost /mo (USD) (/mo)
True cost /mo (AUD) (/mo)
True cost from Sydney (AUD) (/mo)
Storage $/TB/mo (/TB/mo)
$6.99 /TB/mo
Egress $/TB (/TB)
$0 /TB
Egress cap (x stored) (x stored)
1 x stored
Class A $/M ops (/M ops)
$0 /M ops
Class B $/M ops (/M ops)
$0 /M ops
Min retention
129600 min
Min billed object
4 KB
TigrisGlobally distributed S3-compatible storage that caches objects near readers.67.9

Pricing

True cost /mo (USD) (/mo)
$29.5 /mo
True cost /mo (AUD) (/mo)
A$44.84 /mo
True cost from Sydney (AUD) (/mo)
A$44.84 /mo
Storage $/TB/mo (/TB/mo)
$20 /TB/mo
Egress $/TB (/TB)
$0 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$5 /M ops
Class B $/M ops (/M ops)
$0.5 /M ops
Min retention
0 ms
Min billed object
0 B
AWS S3The API everything else copies, and by far the most expensive egress in this roster.19.0

Pricing

True cost /mo (USD) (/mo)
$472.6 /mo
True cost /mo (AUD) (/mo)
A$718.35 /mo
True cost from Sydney (AUD) (/mo)
A$900.14 /mo
Storage $/TB/mo (/TB/mo)
$23 /TB/mo
Egress $/TB (/TB)
$90 /TB
Egress cap (x stored) (x stored)
Class A $/M ops (/M ops)
$5 /M ops
Class B $/M ops (/M ops)
$0.4 /M ops
Min retention
0 ms
Min billed object
0 B
yespartialnounknown◆ measured · ▸ vendor-claimed · ▪ community · · inferredExpand a row for the source and date behind every cell.

Is the cheapest option the right one?

Price is one group of 10 fields out of 28. Everything else — features, limits, portability, how well any of it works for agents — is on the full s3-compatible storage compared: true cost at 1 tb + 5 tb egress comparison.

Where the bodies are buried in object storage pricing

Four line items reliably cost more than the storage rate you were quoted.

Egress is the obvious one. AWS charges USD 0.09/GB up to 10 TB with only the first 100 GB free, which is 441 dollars of our 472.60 total. DigitalOcean charges 0.01/GB, Scaleway EUR 0.01 (about 0.0116) and Storj 0.007/GB — an order of magnitude better than AWS but not zero, and on a 50 TB month that gap is real money. Only R2 and Tigris charge nothing with no ceiling attached. Wasabi and iDrive e2 also print a zero, and both bound it with a fair-use multiple of what you store, which is a different product sold with the same number; the "egress cap" column is there so you can tell the two kinds of zero apart.

Class A operations are the second. R2's 4.50 per million looks trivial until you run a workload that lists a bucket in a loop or writes a million small objects an hour. AWS is 5.00 per million for the same class. Backblaze, DigitalOcean, Scaleway, Hetzner, Storj, Bunny and iDrive charge nothing per request at all, which is a genuine advantage that none of their pricing pages leads with — Backblaze went furthest and made Class A, B and C calls all free on pay-as-you-go, leaving only outbound event-notification callbacks metered.

Minimum retention is the third, and it is a storage price multiplier in disguise. Wasabi's 90 days means a workload with a seven-day object lifetime pays roughly thirteen times the headline rate. Minimum billable object size is the fourth: Wasabi bills every object at at least 4 KB, and AWS applies a 128 KB floor on its infrequent-access classes, which is how the cheap tier ends up more expensive for thumbnails. Store ten million 1.5 KB objects behind a 4 KB floor and you pay for 40 GB where you stored 15.

Migrating off AWS S3 without a rewrite

The application change is usually one line — a custom endpoint URL and, on some providers, forcing path-style addressing on the S3 client. That part is genuinely easy, and it is what every provider's landing page shows you.

The hard part is everything around the bucket. Bucket policies do not port: R2, Hetzner and Bunny have no IAM policy language, so any authorisation you expressed as a condition on a principal has to move into your application. Versioning does not port to R2 at all — GetBucketVersioning and PutBucketVersioning are unimplemented — so if S3 versioning is part of how you recover from bad writes, budget for replacing it. Lifecycle transitions between storage classes mostly do not port, because most providers have exactly one class. S3 event notifications become provider-specific — R2 fires into Cloudflare Queues, Backblaze uses its own event payload — so anything wired to Lambda needs rebuilding rather than repointing. Object Lock in compliance mode, if you rely on it for a retention obligation, exists on Backblaze, Wasabi, Scaleway, iDrive, Storj, MinIO and AWS, and not on Hetzner, DigitalOcean or Bunny at all.

For the copy itself, do not pull data through your own machines. Cloudflare's Super Slurper, and rclone with server-side copy where it is supported, will move a terabyte far faster. On AWS the one-time egress to leave is often the single largest line on the migration budget: getting 50 TB out of S3 costs roughly USD 4,300 in bandwidth before you have stored a byte anywhere else. Price that exit charge before you commit to the move, and consider draining gradually behind a read-through cache if the number is uncomfortable.

How to actually decide

Work out your egress-to-storage ratio first, because it selects the shortlist before any feature comparison does.

Below about 1:1 — backups, archives, data lakes read by a handful of jobs — storage price dominates and Storj (USD 4/TB), iDrive e2 (4), and Backblaze and Hetzner (6.95 each) are the field. Check the minimum retention and minimum billable object columns, confirm object lock if this is a ransomware-resistant backup target, and stop there.

Above about 3:1 — public assets, media, model weights, package registries — egress dominates absolutely and the shortlist collapses to R2 and Tigris, the only two providers charging nothing per gigabyte with no ceiling behind it, with Hetzner as the value option if a European origin is acceptable. Bunny is often named in the same breath and does not belong there on this axis: its egress is 0.01/GB in Europe and North America, the same as DigitalOcean and Scaleway, and 0.03 into Oceania. Shortlist Bunny for its edge, not for its bandwidth rate. At 10:1 nothing else is worth evaluating; the gap between R2 at 22.74 and AWS at 472.60 will not be closed by any feature.

Then apply two filters. If you need Sydney, drop Backblaze, Hetzner and Scaleway, which have no Australian or Oceania location at all. If you need object lock, versioning and event notifications all three with AWS semantics, almost nothing survives: AWS, Backblaze and MinIO, and that is the list. Tigris has the versioning and the notifications but we could not confirm object lock; R2 has notifications but no versioning and only a bucket-level retention lock; Scaleway has the lock and the versioning but we could not confirm notifications; Hetzner, DigitalOcean and Bunny fail on two of the three. What survives both filters is usually a two-horse race, and at that point pick on the API surface you will actually touch rather than on a dollar figure that differs by less than one engineer-hour a month.

How is this pricing data collected?

Every price on this page is the published pay-as-you-go rate — no committed-use discounts and no enterprise agreements. The killer field, "true cost /mo", is computed by us from those rates against one fixed scenario: 1 TB (1,000 GB) stored for a calendar month, 5 TB (5,000 GB) egressed to the public internet, and 10 M requests split 1 M Class A (PUT, POST, COPY, LIST) and 9 M Class B (GET, HEAD). Each provider's arithmetic is written out in the note on its own cell so you can check us — if a figure cannot be reconstructed from the numbers published in its own row, it does not belong in the column, which is why three rows are null rather than estimated. The same request split is applied to everyone, so providers that do not meter requests at all get a genuine advantage here rather than a modelling artefact.

One netting rule, applied everywhere. An allowance that is part of the rate card itself is deducted before the overage rate applies: the volumes bundled into Hetzner's and DigitalOcean's base fees, Backblaze's free egress up to three times stored data, AWS's first 100 GB of egress, and Scaleway's first 75 GB of storage and 75 GB of egress. A separately branded free plan is not deducted, because it is a different product tier rather than the price of the one we are quoting — that affects only Cloudflare R2, whose 10 GB / 1 M Class A / 10 M Class B free tier would take its total from 22.74 to 14.85, and we say so in the cell note instead of folding it in.

Non-USD list prices are converted at 1 EUR = 1.16 USD, and the AUD column at 1 USD = 1.52 AUD, both struck 2026-07-23 — refresh them if the spread has moved, because for Scaleway and Hetzner the FX rate moves the answer more than the pricing page does. This page previously carried the euro at 1.08, which understated both of those providers by about seven per cent. Three rows have a null cost. Wasabi's no-egress-fee model is bounded by a fair-use cap of roughly one times stored volume, so this scenario falls outside its terms and has no list price. iDrive e2 sells the same shape of promise and publishes neither the multiple nor the rate above it, so there is nothing to compute against — we previously quoted 24.00 there on an assumed 3x allowance and an assumed 0.01/GB overage, neither of which appears on iDrive's rate card, and it has been withdrawn. MinIO has no price because you are buying servers and transit, not storage. Latency figures are inferred from network topology and community reports, not measured by toolweight, and are marked accordingly.

Pricing questions

Is Cloudflare R2 egress really free, with no catch?

Yes for standard object reads over the public internet — R2 bills storage and operations only, with no published fair-use cap on bandwidth. The catches are elsewhere: Class A operations cost USD 4.50 per million, which stings on write-heavy or list-heavy workloads, and the free bandwidth is Cloudflare's network, so you inherit its routing. R2 also has no contractual Sydney region, only an Oceania location hint.

Why can't you price Wasabi on this page?

Wasabi charges no egress fee, but its acceptable-use policy limits monthly downloads to roughly the volume you store. Our scenario egresses five times the stored volume, which is outside those terms — Wasabi reviews or restricts the account rather than sending a larger bill, so there is no list price to quote. Storage alone would be USD 6.99 for the terabyte, and we have left the computed cell null.

What does a minimum retention period actually cost me?

It means an object deleted before that window is still billed for the full window. Wasabi's is 90 days, so a file written and deleted on day two costs 90 days of storage. On churny workloads — CI caches, temporary uploads, video transcode intermediates — this quietly multiplies the effective storage price several times over the headline rate. Check it before you compare per-terabyte numbers.

Should I self-host MinIO to save money?

Only if you already operate storage hardware. On our scenario the cheap managed providers land at USD 12–30; a dedicated box with enough disk for a terabyte of erasure-coded capacity and the traffic included is more like USD 50–70 before you count your own time, and you take on erasure-coding configuration, upgrades and on-call. Self-hosting is a control and data-residency decision here, not a cost saving. MinIO's community build also lost its admin console in 2025, so the free tier is less complete than it was.