Egress Cost in 2026: Bandwidth, CDN and Object Storage Priced Per TB
What 1 TB of egress actually costs at AWS S3, Cloudflare R2, Backblaze B2, Wasabi and Bunny CDN in 2026, with two worked scenarios and the traps that double the bill.
Egress is the line item that turns a $20/month project into a $400/month project. This guide prices 1 TB of outbound data at five providers with their published rates as of October 2026, works two scenarios end to end, and shows which “free egress” claims hold up when your read pattern is 10x your storage. Verified 2026-10-19.
The assumptions, stated up front
Every number below depends on these, so change them if your workload differs:
- 1 TB = 1024 GB, which is how these providers meter (they bill binary GB/TB in their calculators).
- Storage scenario: 1 TB stored for a full month, always-hot, Standard class.
- Egress scenario: 5 TB and 10 TB downloaded to the public internet per month.
- Region: US/EU default region for each provider. Asian or African delivery is priced separately and is much worse.
- Prices are list prices on 2026-10-19, no committed-use discounts, no volume negotiation, no free tier applied. A small project gets part of the first tier free; a project at these volumes does not.
- Requests are excluded from the totals. At 1 TB of small objects, request charges can rival storage charges — that is a different guide.
The published rates
| Provider | Storage | Egress to internet | Egress after free allowance |
|---|---|---|---|
| AWS S3 (us-east-1 / eu-west-1) | standard class list price | $0.09/GB | no free allowance worth the name |
| Cloudflare R2 | $0.015/GB-month (Standard) | $0 | $0, always |
| Backblaze B2 | ~$6/TB-month | $0 up to 3x stored | $0.01/GB |
| Wasabi | $7.99/TB-month | $0 | $0, always |
| Bunny CDN (Standard network) | n/a (CDN) | $0.01/GB EU/NA | $0.03/GB Asia, $0.045/GB South America, $0.06/GB Middle East & Africa |
Two things to notice before the totals: 1 TB of egress at AWS list price is $92.16, and the same terabyte through Bunny’s European network is $10.24. That 9x gap is the entire article.
Scenario A: 5 TB egress, 1 TB stored
| Provider | Storage | Egress | Total / month |
|---|---|---|---|
| AWS S3 | n/a (egress-only model here) | 5120 GB × $0.09 | $460.80 |
| Cloudflare R2 | 1024 GB × $0.015 | free | $15.36 |
| Backblaze B2 | 1 TB × $6 | 2 TB over the 3x allowance × $0.01/GB | $26.48 |
| Wasabi | 1 TB × $7.99 | free | $7.99 |
| Bunny CDN in front of R2 | R2 storage $15.36 | 5120 GB × $0.01 | $66.56 |
B2 is the interesting row: the free allowance is 3x your average stored bytes, so storing 1 TB buys you 3 TB of free egress and you pay for the remaining 2 TB. Wasabi wins on a pure hot-storage-plus-heavy-egress workload because the storage rate is the only variable.
Scenario B: 10 TB egress, 1 TB stored
| Provider | Total / month |
|---|---|
| AWS S3 | $921.60 |
| Cloudflare R2 | $15.36 |
| Backblaze B2 | $77.68 |
| Wasabi | $7.99 |
| Bunny CDN in front of R2 | $117.76 |
As egress grows, the B2 3x rule degrades linearly ($10.24 per extra TB) while R2 and Wasabi stay flat. If your read:write ratio is above 3:1, the “free egress” tier on B2 stops being free — it is priced, just deferred.
The traps that actually cost money
1. Free egress usually means “through our partners”
Backblaze’s unlimited-free-egress claim applies when you download to or through a partner CDN or compute provider (Fastly, Cloudflare, bunny.net, CacheFly, Vultr and others). Direct GET from B2 to a browser counts against the 3x allowance and then bills at $0.01/GB. If your architecture is “files served straight from the bucket”, you are on the metered path, not the free one.
2. CDN pull traffic is egress from your origin
A CDN does not delete the origin bill, it moves it. If the CDN pulls from AWS S3, you pay AWS egress and CDN bandwidth. That is why R2 + Bunny ($0 + $10.24/TB) is a common pairing and S3 + CloudFront is not: you would pay twice for the same byte.
3. Minimum storage duration turns deletes into charges
R2 Infrequent Access has a 30-day minimum storage duration: delete the object on day 2 and you are billed as if you kept it 30 days. S3 Standard-IA and One Zone-IA have the same 30-day rule, Glacier Instant Retrieval 90 days, Deep Archive 180 days. A “cheap” archive tier plus an aggressive lifecycle rule can bill more than Standard.
4. Region pricing is not a footnote
Bunny’s standard network is $0.01/GB in Europe and North America, but $0.06/GB in the Middle East and Africa — a 6x swing on the same product. AWS applies its own regional egress tables. If your audience is not where you assumed, re-run the arithmetic before committing.
5. Requests quietly outgrow bandwidth
R2 charges $4.50 per million Class A operations and $0.36 per million Class B. Serving 10 million small reads a day is $104.40/month in Class B alone, which is more than the storage in the examples above. Bandwidth being free does not make the bill free.
What to check on your own provider before trusting any table
- Pull the provider’s price list API or calculator, not a blog post. AWS publishes its S3 rates as a machine-readable CSV per region; that is what a cost model should be built from.
- Price the worst month, not the average. Egress is spiky: a release, a viral post, a backup restore.
- Ask whether the free allowance is per account, per bucket or per project.
- If the answer involves “up to 3x of stored data”, write down whether it is peak or average stored bytes. B2 uses your average for the billing cycle, and a spike in storage inflates the allowance you think you have.
Our recommendation
Our recommendation for a project serving 5–10 TB/month Store on Cloudflare R2 and put Bunny CDN in front of it only if you need edge caching or Asian coverage. R2’s $0.015/GB storage with $0 egress is the cheapest predictable combination in this table once egress passes roughly 3 TB; below that, Wasabi’s flat $7.99/TB is simpler and still cheap.
Our recommendation if you are already on S3 Do not migrate storage to save pennies — migrate the read path. Front S3 with a CDN, cache aggressively, and put a signed-URL TTL in front of anything user-facing. Cutting egress by 80% is worth more than cutting storage by 20%.
Common problems
| Symptom | Cause | Fix |
|---|---|---|
| Bill 10x the estimate | Public bucket served directly, no cache | CDN in front, cache-control on objects |
| “Free egress” still billed | Download not going through a partner CDN | Route through the partner or accept metered egress |
| Deleting files did not reduce the bill | Minimum storage duration (30/90/180 days) | Wait out the window, or use Standard for short-lived objects |
| Costs jumped after a launch | Spiky egress, no budget alert | Provider budget alerts at 50/80/100% |
| Egress free but bill grew | Class A/B request charges | Batch reads, cache metadata, cut small-object churn |
Related guides
- The Cheapest Infrastructure for a SaaS in 2026
- How much does it cost to host a website on a VPS?
- How much does a PostgreSQL database actually cost?
- How to run a SaaS for less than $20/month
Where the numbers came from
- Cloudflare R2 pricing page: storage $0.015/GB-month, Class A $4.50/million, Class B $0.36/million, egress free, 10 GB free storage, IA class $0.01/GB-month with 30-day minimum.
- Backblaze B2 pricing page: $0.01/GB for egress beyond 3x average monthly storage, unlimited free egress through listed partner CDNs, B2 Overdrive starting at $15/TB-month.
- Wasabi pricing page: $7.99/TB-month pay-as-you-go, no egress or API request fees.
- Bunny CDN pricing page: Standard network $0.01/GB EU/NA, $0.03/GB Asia & Oceania, $0.045/GB South America, $0.06/GB Middle East & Africa; Volume network $0.005/GB for the first 500 TB.
- AWS S3 pricing page: data transfer out from S3 to the internet at $0.09/GB (Ireland example), plus per-class minimum storage durations.
All five pages were read on 2026-10-19. Hetzner Cloud and DigitalOcean render their bandwidth tables client-side, so no number from those two providers is included here rather than guessed.