Compare / Object storage
Object storage pricing, normalized
For a small always-hot bucket, Backblaze B2 is the cheapest published cloud rate ($0.00695/GB-month, first 10 GB free, egress free up to 3× storage). Cloudflare R2 and Railway Buckets both store at $0.015/GB-month with free egress; Railway also makes API calls free. Wasabi is $7.99/TB-month with free egress inside its policy, but it bills a 1 TB minimum. Hetzner Object Storage is $5.99/month for 1 TB stored and 1 TB egress — cheap once you actually use that quota. AWS S3 Standard is $0.023/GB-month in us-east-1 plus $0.09/GB egress after 100 GB free.
Prices from each provider's official pricing page, checked 17 Oct 2026. USD, excluding tax. Storage examples use decimal GB unless a vendor publishes GiB or 1024 GB/TB. 24/7 extra-storage hours use 730 h. "Not published" or "unverified" means the page did not list that number. Estimates, not guarantees.
Price for the same stored gigabyte
| Provider | Storage per GB-month | Egress per GB | Request costs | Free tier / minimum |
|---|---|---|---|---|
| Amazon S3 | $0.023/GB-month (Standard, first 50 TB, us-east-1) | $0.09/GB after 100 GB free (first 10 TB DTO, us-east-1) | PUT $0.005 per 1,000; GET $0.0004 per 1,000; DELETE free | New-account 12-month free tier: 5 GB Standard + 20,000 GET + 2,000 PUT + 100 GB DTO/month |
| Cloudflare R2 | $0.015/GB-month (Standard) | Free | Class A $4.50/million; Class B $0.36/million; DELETE free | 10 GB-month + 1 million Class A + 10 million Class B/month (Standard only) |
| Backblaze B2 | $0.00695/GB-month ($6.95/TB-month) | Free up to 3× average monthly storage, then $0.01/GB. Unlimited free via listed CDN/compute partners. | Class A/B/C free on pay-as-you-go. Class D $0.004 per 10,000 after 2,500/day free. | First 10 GB storage always free |
| Wasabi | $0.0078/GB-month ($7.99/TB-month, 1024 GB/TB) | Free if monthly egress ≤ stored volume (policy). Overage $ not published — they may limit or suspend instead. | Free (policy: no unreasonable API load) | 1 TB/month minimum ($7.99). Pay-as-you-go 90-day minimum storage duration. |
| DigitalOcean Spaces | $5.00 includes 250 GiB; extra $0.02/GiB-month | $0.01/GiB after 1,024 GiB included | Not published | $5.00/month once any bucket exists (prorated hourly if you delete them all) |
| Hetzner Object Storage | $5.99/month includes 1 TB (effective $0.00599/GB at that quota) | $1.20/TB extra after 1 TB included ($0.0012/GB) | Free (PUT, GET, DELETE) | $5.99/month base (hourly $0.0096, capped) while any bucket exists, even empty |
| Railway Buckets | $0.015/GB-month | Free (bucket egress) | Free (unlimited S3 API operations) | Free plan: 10 GB-month against the $1 credit. Hobby $5 includes $5 usage (1 TB cap). Pro unlimited capacity. |
| Tigris | $0.02/GB-month (Standard) | Free | Class A $0.005 per 1,000; Class B $0.0005 per 1,000; DELETE free | First 5 GB Standard + 10,000 Class A + 100,000 Class B/month |
| MinIO (self-hosted) | $0 software (AIStor Free, single-node) + the disk you run it on | Whatever the host charges for egress | None from MinIO on AIStor Free | AIStor Free $0. Enterprise Lite/Enterprise prices are quote-only — omitted. |
| Garage (self-hosted) | $0 software + the disk you run it on | Whatever the host charges for egress | None (you run the binary) | Free open-source software |
What you actually get
| Provider | S3 API | Included transfer / quota | Min duration / object size | Plan notes | Regions |
|---|---|---|---|---|---|
| Amazon S3 | Native S3 | First 100 GB DTO/month free across AWS (except China and GovCloud) | None on Standard | 12-month new-account free tier; 100 GB DTO every month after that | All AWS regions; us-east-1 used here |
| Cloudflare R2 | S3-compatible | Unlimited free egress (all storage classes) | None on Standard; Infrequent Access 30 days | Standard free tier above; Infrequent Access has no free tier | Cloudflare's network (see R2 docs) |
| Backblaze B2 | S3-compatible | 3× stored data free; partner egress unlimited (Fastly, Cloudflare, bunny.net, and others listed) | No minimum file size or storage duration fees | 10 GB storage; Class A/B/C API calls free on pay-as-you-go | U.S. West rates are the published comparison row |
| Wasabi | S3-compatible | Free egress inside the "egress ≤ storage" guideline | 90 days on pay-as-you-go; 4 KB minimum billable object | No free tier; 1 TB minimum | North America, EMEA, APAC at the same $7.99/TB |
| DigitalOcean Spaces | S3-compatible; Spaces CDN included at no extra fee | 1,024 GiB outbound included across all buckets | None on Standard; Cold Storage 30-day min ($0.007/GiB-month, not used here) | No free Spaces subscription | NYC, SFO, AMS, SGP, FRA, SYD, BLR, ATL, LON, TOR |
| Hetzner Object Storage | S3-compatible | 1 TB egress included (up to 1.1160 TB in a 31-day month) | 64 KB minimum billable object | No free tier; empty buckets still bill the base | Falkenstein (FSN1), Nuremberg (NBG1), Helsinki (HEL1) |
| Railway Buckets | S3-compatible (runs on Tigris metal). Private buckets; public buckets not yet supported. | Unlimited free bucket egress (presigned URL or S3 API). Uploads from a Railway service still count as service egress. | None. 52-hour restore window after delete. | 10 GB-month on Free; Hobby included usage equals the $5 plan fee | Picked at create time; cannot change |
| Tigris | S3-compatible | Free egress | None on Standard; Infrequent Access 30 days; Archive 90 days | 5 GB + 10,000 Class A + 100,000 Class B | Global (see tigrisdata.com/pricing). Multi-region copies add the per-region rate. |
| MinIO (self-hosted) | S3-compatible. AIStor Free is single-node; multi-node is Lite/Enterprise. | Host transfer (Hetzner CX23 includes 20 TB) | Not published as a cloud min-duration (you own the disk) | AIStor Free single-node commercial download. The AGPL community edition is frozen (no patches). | You pick the host |
| Garage (self-hosted) | S3-compatible | Host transfer (Hetzner CX23 includes 20 TB) | None published | Software is free | You pick the host; designed for geo-distributed nodes |
Best for
- Amazon S3
Data that already lives next to AWS compute, or the 12-month free tier.
- Cloudflare R2
Public assets and downloads where egress would have been the S3 bill.
- Backblaze B2
The cheapest published always-hot cloud bucket when egress stays under 3× storage.
- Wasabi
A TB-scale always-hot archive that is not downloaded faster than it is stored.
- DigitalOcean Spaces
A small public bucket with a fat included transfer allowance at $5.
- Hetzner Object Storage
A TB-scale EU bucket with free API calls once you will actually use the included 1 TB.
- Railway Buckets
Object storage on the same Railway bill as the app, with free egress and free API calls.
- Tigris
A globally replicated S3 bucket with free egress when 5 GB free is not enough and Railway's 1 TB Hobby cap would bite.
- MinIO (self-hosted)
An S3 API on a disk you already operate, if a single node is enough.
- Garage (self-hosted)
A small multi-node S3 store you operate, without a vendor storage bill.
Zero-egress clouds vs a TB-minimum vs a bucket you run yourself
Zero-egress object stores (Cloudflare R2, Railway Buckets, Tigris Standard, and Backblaze B2 up to 3× stored data or via listed CDN/compute partners) shift the bill onto storage and sometimes requests. That is the right shape for a public asset bucket. AWS S3 Standard still charges $0.09/GB after the first 100 GB of data transfer out per month.
Wasabi and Hetzner sell a fat included quota. Wasabi pay-as-you-go is $7.99/TB-month with a 1 TB monthly minimum and a 90-day minimum storage duration — a 20 GB side project still pays $7.99. Hetzner Object Storage bills $5.99/month whenever any bucket exists and includes 1 TB stored plus 1 TB egress; below that quota you are paying for capacity you do not use.
Self-hosting MinIO or Garage is $0 for the software on a VPS you already run. MinIO's pricing page (checked 17 Oct 2026) says the AGPL community edition is frozen; AIStor Free is a $0 single-node commercial download, and Lite/Enterprise prices are quote-only. Garage remains free open-source software. A Hetzner CX23 is $6.49/month for 40 GB NVMe — enough for the Small example, not for 500 GB or 5 TB. Extra cloud-volume SKUs were not verified here, so those sizes are omitted for self-host rather than guessed.
What would a real project cost?
Estimates, not guarantees. Built from the published rates above (checked 17 Oct 2026); check each provider's current pricing before you commit. Tax is not included. Numbers marked unverified or not published were left out rather than guessed.
- Small: hobby / side project. 20 GB stored all month, 50 GB egress, 10,000 writes (Class A / PUT), 100,000 reads (Class B / GET). No extra CDN beyond what the vendor includes.
- Medium: production app uploads. 500 GB stored, 500 GB egress, 100,000 writes, 2,000,000 reads.
- Large: media / backups. 5,000 GB stored, 2,000 GB egress, 500,000 writes, 10,000,000 reads.
| Provider | Small: hobby / side project | Medium: production app uploads | Large: media / backups |
|---|---|---|---|
| Amazon S3 | $0.55 (us-east-1; 50 GB inside 100 GB DTO) | $48.80 | $292.50 |
| Cloudflare R2 | $0.15 | $7.35 | $74.85 |
| Backblaze B2 | $0.07 | $3.41 | $34.68 |
| Wasabi | $7.99 (1 TB minimum; 50 GB egress outside free-egress guideline) | $7.99 (1 TB minimum) | $39.95 (5 × $7.99) |
| DigitalOcean Spaces | $5.00 | $10.00 | $109.76 |
| Hetzner Object Storage | $5.99 | $5.99 | $30.55 |
| Railway Buckets | $0.30 | $7.50 | $75.00 (Pro; Hobby max 1 TB) |
| Tigris | $0.30 | $11.30 | $107.30 |
| MinIO (self-hosted) | $6.49 (CX23 + AIStor Free) | Not priced here (disk larger than verified CX SKUs) | Not priced here (disk larger than verified CX SKUs) |
| Garage (self-hosted) | $6.49 (CX23 + free software) | Not priced here (disk larger than verified CX SKUs) | Not priced here (disk larger than verified CX SKUs) |
Small: hobby / side project
Try first: Backblaze B2 at about $0.07 — first 10 GB free, 50 GB egress is inside 3× storage (60 GB), Class A/B/C free.
Runner-up: Cloudflare R2 at $0.15 (zero egress, always) or Railway Buckets at $0.30 if the app is already on Railway.
Avoid: Wasabi's $7.99 1 TB minimum for 20 GB, and a 50 GB download that exceeds stored volume (outside their free-egress guideline). AWS S3 is only ~$0.55 here because 50 GB sits inside the 100 GB DTO allowance — it stops being cheap the moment egress grows.
Medium: production app uploads
Try first: Backblaze B2 at about $3.41 — 500 GB egress is well under 3× storage, API calls free.
Runner-up: Hetzner Object Storage at $5.99 if you want EU/GDPR and the included 1 TB, or R2 at $7.35 / Railway at $7.50 for zero egress.
Avoid: AWS S3 at about $48.80, where $36 of that is egress. Wasabi is fine at $7.99 if you accept the 90-day minimum duration.
Large: media / backups
Try first: Hetzner Object Storage at about $30.55 — $5.99 base, 4 TB extra storage at $0.0080/TB-hour × 730 h, 1 TB extra egress at $1.20, API calls free.
Runner-up: Backblaze B2 at $34.68, or Wasabi at $39.95 (5 × $7.99) if 2 TB egress stays ≤ 5 TB stored. R2 at $74.85 and Railway at $75.00 if you want zero egress without a 1 TB Hetzner-shaped quota.
Avoid: AWS S3 at about $292.50 ($171 of that is egress) and Tigris at $107.30 unless you need its global copies. Railway Hobby's 1 TB cap cannot hold 5 TB — Pro is required.
Show the math
- Project — Small: hobby / side project
- 20 GB stored all month, 50 GB egress, 10,000 writes (Class A / PUT), 100,000 reads (Class B / GET). No extra CDN beyond what the vendor includes. AWS: 20×$0.023 = $0.46 + DTO $0 (50 GB < 100 GB) + PUT 10×$0.005 = $0.05 + GET 100×$0.0004 = $0.04 → $0.55 (new-account free tier would cover 5 GB / 2,000 PUT / 20,000 GET). R2: (20−10)×$0.015 = $0.15; requests inside free. B2: (20−10)×$0.00695 = $0.07; egress inside 3×. Wasabi: $7.99 minimum; 50 GB egress > 20 GB stored, overage $ not published. Spaces: $5.00 (inside 250 GiB / 1,024 GiB). Hetzner: $5.99. Railway: 20×$0.015 = $0.30. Tigris: (20−5)×$0.02 = $0.30; 10,000 Class A and 100,000 Class B are exactly the free tier → $0.30. MinIO/Garage: CX23 $6.49.
- Project — Medium: production app uploads
- 500 GB stored, 500 GB egress, 100,000 writes, 2,000,000 reads. AWS: 500×$0.023 = $11.50 + (500−100)×$0.09 = $36.00 + PUT $0.50 + GET 2,000×$0.0004 = $0.80 → $48.80. R2: (500−10)×$0.015 = $7.35; 100,000 Class A and 2,000,000 Class B inside free. B2: (500−10)×$0.00695 = $3.41. Wasabi: still the $7.99 1 TB minimum; 500 GB egress = 500 GB stored, inside policy. Spaces: $5 + (500−250)×$0.02 = $10.00; 500 GiB egress inside 1,024 GiB. Hetzner: $5.99. Railway: 500×$0.015 = $7.50. Tigris: (500−5)×$0.02 = $9.90 + 90,000×$0.005/1,000 = $0.45 + 1,900,000×$0.0005/1,000 = $0.95 → $11.30. MinIO/Garage: not priced (500 GB > verified CX disks).
- Project — Large: media / backups
- 5,000 GB stored, 2,000 GB egress, 500,000 writes, 10,000,000 reads. AWS: 5,000×$0.023 = $115.00 + (2,000−100)×$0.09 = $171.00 + PUT 500×$0.005 = $2.50 + GET 10,000×$0.0004 = $4.00 → $292.50. R2: (5,000−10)×$0.015 = $74.85; 500,000 Class A inside 1 million free; 10,000,000 Class B is exactly the free 10 million. B2: (5,000−10)×$0.00695 = $34.68; 2,000 GB egress < 15,000 GB 3× cap. Wasabi: 5 × $7.99 = $39.95; 2 TB egress < 5 TB stored. Spaces: $5 + 4,750×$0.02 = $100.00 + (2,000−1,024)×$0.01 = $9.76 → $109.76. Hetzner: $5.99 + 4 TB × $0.0080 × 730 h = $23.36 + 1 TB × $1.20 = $1.20 → $30.55. Railway: 5,000×$0.015 = $75.00 (Pro; Hobby max 1 TB). Tigris: (5,000−5)×$0.02 = $99.90 + 490,000×$0.005/1,000 = $2.45 + 9,900,000×$0.0005/1,000 = $4.95 → $107.30. MinIO/Garage: not priced (5 TB disk unverified).
- Amazon S3
- Official S3 FAQs, US East (N. Virginia): Standard first 50 TB = 51,200 GB × $0.023. PUT $0.005/1,000, GET $0.004/10,000 (= $0.0004/1,000), DELETE free. DTO first 10 TB after the 100 GB free allowance is $0.09/GB. Always-on 100 GB DTO free is on the S3 pricing page. Request rates for S3 Standard came from the FAQs (the HTML price table did not render). Source: https://aws.amazon.com/s3/pricing/ (checked 17 Oct 2026)
- Cloudflare R2
- Standard $0.015/GB-month, Class A $4.50/million, Class B $0.36/million, egress $0. Infrequent Access is $0.01/GB-month plus retrieval $0.01/GB — not used in the examples. Usage rounds up to the next billing unit. Source: https://developers.cloudflare.com/r2/pricing/ (checked 17 Oct 2026)
- Backblaze B2
- $6.95/TB-month → $0.00695/GB-month using 1 TB = 1,000 GB. First 10 GB free. Examples stay inside 3× egress. Class D is omitted from the worked examples (the pages do not say a typical app hits Class D). Source: https://www.backblaze.com/cloud-storage/pricing (checked 17 Oct 2026)
- Wasabi
- Official FAQ: $7.99/TB-month ÷ 1024 GB = $0.0078/GB-month. 1 TB monthly minimum. Free egress if monthly download ≤ active storage; above that they reserve the right to limit or suspend — no $/GB overage is listed, so examples that break the guideline omit an egress dollar amount. Source: https://wasabi.com/pricing/faq (checked 17 Oct 2026)
- DigitalOcean Spaces
- Docs last verified 13 Jul 2026: $5.00 includes 250 GiB storage and 1,024 GiB outbound. Extra storage $0.02/GiB-month. Extra outbound $0.01/GiB. Request fees are not on the pricing page — omitted. Source: https://docs.digitalocean.com/products/spaces/details/pricing/ (checked 17 Oct 2026)
- Hetzner Object Storage
- Official USD (excl. VAT): base $5.99/month includes 1 TB storage and 1 TB egress. Extra storage $0.0080/TB-hour. Extra egress $1.20/TB. Ingress and eu-central internal traffic are free. Extra-storage examples use 730 h to match the other pages. Source: https://www.hetzner.com/storage/object-storage/ (checked 17 Oct 2026)
- Railway Buckets
- Official billing docs: $0.015/GB-month (30-day month), fractional GB-month rounds up. API operations and bucket egress are free. Service-to-bucket uploads use the app egress rate ($0.05/GB on Railway pricing) — examples assume presigned URLs so that fee is $0. Source: https://docs.railway.com/storage-buckets/billing?referralCode=4xHDyE (checked 17 Oct 2026)
- Tigris
- Standard $0.02/GB-month, Class A $0.005/1,000, Class B $0.0005/1,000, egress $0. Free: 5 GB Standard, 10,000 Class A, 100,000 Class B. Storage is binary GB (2^30 bytes). Examples use the Standard tier in one region. Source: https://www.tigrisdata.com/pricing/ (checked 17 Oct 2026)
- MinIO (self-hosted)
- min.io/pricing: AIStor Free is $0 for a standalone node. Lite/Enterprise are "request pricing" — omitted. A Hetzner CX23 ($6.49/month, 2 vCPU / 4 GB / 40 GB NVMe) holds the 20 GB Small example. 500 GB and 5 TB need more disk than the CX SKUs verified on the 15 Jun 2026 adjustment page, so those sizes are omitted. Source: https://min.io/pricing (checked 17 Oct 2026)
- Garage (self-hosted)
- Garage is free software (garagehq.deuxfleurs.fr). Same host math as MinIO: CX23 $6.49 covers Small (20 GB). Medium and Large disk SKUs were not verified — omitted. Source: https://garagehq.deuxfleurs.fr/ (checked 17 Oct 2026)
FAQ
- What is the cheapest S3-compatible bucket for a small project?
- Backblaze B2 at about $0.07 for 20 GB stored and 50 GB egress (first 10 GB free, 3× egress free). Cloudflare R2 is $0.15 with no egress cap. Railway Buckets are $0.30 with free API calls if the app is already on Railway.
- When does AWS S3 get expensive?
- On egress. At 500 GB stored and 500 GB downloaded, about $36 of the $48.80 estimate is data transfer out at $0.09/GB after the 100 GB free allowance. Storage alone is $11.50.
- Is Wasabi really free egress?
- Inside their published guideline: monthly download ≤ stored volume. Above that they reserve the right to limit or suspend service. They do not publish a $/GB overage. Pay-as-you-go also has a 1 TB monthly minimum ($7.99) and a 90-day minimum storage duration.
- Do Railway Buckets charge Railway's $0.05/GB app egress?
- Not for downloads from the bucket. Official docs: bucket egress is free (presigned URLs or the S3 API). Uploads from a Railway service to the bucket still count as that service's public egress. The examples assume presigned uploads from the client.
- Is MinIO still open source?
- MinIO's pricing page (17 Oct 2026) says the AGPL community edition is frozen — no new features, fixes, or security patches. AIStor Free is a $0 single-node commercial download. Distributed AIStor Lite/Enterprise prices are not published (request a quote), so they are omitted.
- What would a real project cost?
- Estimates from published rates: 20 GB + 50 GB egress is about $0.07 on B2, $0.15 on R2, $0.30 on Railway or Tigris, $5–$6 on Spaces/Hetzner, $7.99 on Wasabi. 5 TB + 2 TB egress is about $31 on Hetzner, $35 on B2, $40 on Wasabi, $75 on R2 or Railway, $293 on S3.
Related pages
Stack of the Week
Get one stack a week that replaces a SaaS bill.