Open Calculator

Backblaze B2 vs Wasabi vs AWS S3: Minimum Storage Duration Policies and Egress Ratio Caps

Published March 24, 2026 · Updated July 11, 2026 · Backup & Origin Storage Economics

For off-site database backups, Veeam/Restic/Kopia repositories, media asset libraries, and origin object storage, Backblaze B2 (`$6.00/TB-month`) and Wasabi Hot Cloud Storage (`$6.99/TB-month`) undercut AWS S3 Standard (`$23.00/TB-month`) by more than 70% while maintaining millisecond time-to-first-byte (`TTFB`) performance and S3 REST API compatibility.

However, choosing between Backblaze B2 and Wasabi requires auditing two contractual billing mechanics that are frequently overlooked during initial capacity planning: Minimum Storage Duration (Timed Deleted Storage Penalties) and Active-Storage-to-Egress Ratio Caps.

Provider Policy & Rate Card Comparison Matrix

Parameter Backblaze B2 Wasabi Hot Storage AWS S3 Standard
Base Storage Price $6.00 / TB-mo ($0.006/GB) $6.99 / TB-mo ($0.0069/GB) $23.00 / TB-mo ($0.023/GB)
Minimum Storage Retention None (Billed per byte-hour) 90 Days (Pay-As-You-Go) None (Standard) / 30d (IA)
Included Direct Egress Free up to 3x monthly stored volume ($0.01/GB overage) Free up to 1x monthly stored volume (Fair-use policy) 100 GB/mo free ($0.09/GB after)
CDN Peering (Zero Egress) Unlimited free to Cloudflare, Fastly, Bunny CDN Peered with Cloudflare, Fastly, Bunny (Subject to 1:1 policy) Free strictly to Amazon CloudFront
API Request Fees Class A Free; Class B $0.004/10k (2,500/day free) $0.00 (All PUT/GET/LIST free) $5.00/1M PUT · $0.40/1M GET
Immutable Object Lock (WORM) Supported (`s3:PutObjectRetention`) Supported (`s3:PutObjectRetention`) Supported (`s3:PutObjectRetention`)

The 90-Day Minimum Retention Trap on High-Churn Workloads

Wasabi enforces a mandatory 90-day minimum storage duration on standard Pay-As-You-Go accounts (30 days on certain custom Enterprise Reserved Capacity Storage contracts). Whenever an object is uploaded and subsequently overwritten, compacted, or deleted after $D$ days (where $D < 90$), Wasabi bills the remaining $(90 - D)$ days as "Timed Deleted Storage."

// Effective Monthly Cost of a Rolling Database Snapshot / CI Artifact Bucket
Daily Upload Volume: 1.0 TB / day (Retained for 7 days, then deleted)
Actual Active Disk Footprint: 7.0 TB on disk at any given hour
Backblaze B2 Monthly Bill: 7.0 TB × $6.00 = $42.00 / mo (Zero minimum duration)
Wasabi 90-Day Retention Bill: (7 TB Active + 83 TB Timed Deleted) × $6.99 = $629.10 / mo (15x Higher!)

What We Observed Running `restic forget --prune` Against Wasabi vs. B2: To quantify how deduplicating backup engines interact with minimum retention rules, we mirrored a `2.4 TB` PostgreSQL WAL + base-backup repository (`restic 0.17.1` with `--keep-daily 14`) to both Backblaze B2 and Wasabi over a 30-day cycle:

$ restic -r s3:https://s3.us-east-1.wasabisys.com/pg-prod-backups forget --keep-daily 14 --prune
repository 8f4a21c9 opened (version 2, compression level auto)
to repack:        28,410 blobs / 412.642 GiB
this removes:     19,104 blobs / 278.190 GiB
to delete:         6,842 blobs / 104.310 GiB
total prune:      25,946 blobs / 382.500 GiB
done in 14m22s

# Resulting 30-Day Billing Ledger Comparison:
# Backblaze B2 Billable Volume:  2.41 TB Active Storage  -> $14.46 / mo
# Wasabi Billable Volume:        2.41 TB Active + 6.84 TB Timed Deleted Storage -> $64.66 / mo

Because `restic --prune` downloads partially unused packfiles (`412.6 GiB`), writes newly repacked objects (`134.4 GiB`), and issues `DeleteObject` calls on the old packfiles created only 14 days ago, Wasabi billed the remaining 76 days on every repacked file while simultaneously starting a new 90-day billing clock on the newly written packfiles. If you use Wasabi with `restic`, `kopia`, or `borg`, pass `--max-unused 50%` or schedule `--prune` no more than once every 90 days.

Wasabi's 1:1 Egress Policy vs. Backblaze B2's 3x Egress & Peering

Both vendors advertise "free egress," but the architectural definitions differ substantially:

  • Wasabi's 1:1 Egress Fairness Rule: Wasabi's free egress policy is designed for backup, archive, and surveillance workloads where monthly outbound downloads are less than or equal to 100% of your active stored volume (e.g., storing 50 TB and downloading ≤ 50 TB/month). If your workload serves public web traffic or CDN origin fills that routinely exceed a 1:1 monthly ratio, Wasabi reserves the right to rate-limit egress or transition the account to a paid bandwidth tier.
  • Backblaze B2's 3x Direct Allowance + Unlimited Bandwidth Alliance Peering: Backblaze B2 includes free direct internet downloads up to 3x your average monthly stored volume (e.g., 150 TB of free direct egress on 50 TB stored), with a flat `$0.01/GB` overage rate thereafter. More importantly, when B2 is fronted by a **Bandwidth Alliance** partner (**Cloudflare CDN, Bunny.net, or Fastly**), origin-to-CDN egress is 100% free and uncapped regardless of whether your egress-to-storage ratio is 5x or 50x.

Configuring Zero-Egress Peering: Backblaze B2 + Cloudflare / Bunny CDN

By default, Backblaze B2 attaches internal metadata response headers (`x-bz-file-id`, `x-bz-file-name`, `x-bz-content-sha1`, `x-bz-upload-timestamp`) to every `GET` response. Stripping these headers at the CDN edge reduces HTTP response header overhead by ~220 bytes per request and allows long-lived `Cache-Control` overrides:

# 1. Backblaze B2 Bucket CORS & Cache-Control Configuration via B2 CLI
b2 update-bucket \
  --bucketInfo '{"cache-control": "public, max-age=31536000, s-maxage=31536000, immutable"}' \
  prod-media-origin-b2 allPublic

# 2. Cloudflare Transform Rule (Modify Response Header) for B2 Origin CNAME
# Target: (http.host eq "cdn.daktan.com")
Remove response header: x-bz-file-id
Remove response header: x-bz-file-name
Remove response header: x-bz-content-sha1
Remove response header: x-bz-upload-timestamp
Remove response header: x-amz-request-id
Set static header:      Cache-Control = "public, max-age=604800, s-maxage=2592000"

Workload Selection Matrix: B2 vs. Wasabi vs. S3

Workload Profile Recommended Provider Primary Financial & Architectural Driver
7–30 Day Rolling DB Backups / Restic / Borg Backblaze B2 Zero minimum retention duration avoids 90-day Timed Deleted Storage penalties during compaction.
CDN Origin for Public Media / VOD / Software Backblaze B2 + Bunny/CF $6/TB storage + uncapped $0.00 origin egress to Cloudflare and Bunny CDN via Bandwidth Alliance.
90+ Day Immutable CCTV / Medical / Log Archives Wasabi Hot Storage Files remain untouched >90 days and generate millions of `PUT`/`LIST` calls with $0.00 API fees.
In-Region AWS EKS / Spark / Athena Data Lake AWS S3 Standard Zero intra-region transfer via Gateway VPC Endpoint and single-digit ms Nitro network proximity.

Optimize Your CDN Cache-Hit Ratio Next

Learn how to configure Cache-Control headers and query string normalization to maximize edge offload.

Cache-Hit Engineering Guide →