What 10 TB/mo of Amazon S3 egress actually costs
TL;DR. Moving 10 TB/mo of data served out of an S3 bucket to the internet costs about $922/month — roughly $11,059/year — in transfer fees alone, before you pay for storage, requests, or any NAT-gateway / cross-AZ traffic. That's a blended $0.090/GB. The same 10,240 GB cost $0 on Cloudflare R2, because those targets don't meter egress the way AWS does.
The worked calculation
AWS bills data transfer in binary gigabytes (1 TB = 1,024 GB), and the rate is tiered — the first block is the priciest, then it steps down. For 10,240 GB:
| Tier | Data | Rate /GB | Cost |
|---|---|---|---|
| First 10 TB | 10,240 GB | $0.090 | $922 |
| One month | 10,240 GB | ~$0.090 blended | $922 |
AWS's first 100 GB/mo of egress is free; it's immaterial at this scale and is omitted above (the figure is intentionally the conservative, un-discounted rate).
The same 10,240 GB on infrastructure that doesn't meter egress
| Where it's served | Egress / month | Notes |
|---|---|---|
| Amazon S3 → internet | $922 | The metered, tiered rate above. |
| Cloudflare R2 | $0 | No egress fees; S3-compatible. Storage billed separately (~$15/TB-mo). |
| bunny.net CDN | $51–$102 | Volume-network pricing, ~$0.005–0.01/GB; excellent for media. |
| OVH / Hetzner flat box | $0 | Generous-to-unlimited transfer included; dedicated boxes are unmetered. |
The honest footnote. This compares egress only. R2 and B2 still charge for storage (~$15/TB and ~$6/TB per month); a flat box still costs rent plus the time to run it. Egress is simply the line where AWS's markup is most extreme and most avoidable — which is why it's usually the first thing worth moving.
What 10 TB/mo actually is
10,240 GB of egress in a month is, concretely, any one of:
- ~3,413 hours of 1080p video streamed (≈3 GB/hour)
- a 100 MB app/dataset downloaded ~102,400 times
- a ~2 MB web page served ~5,120,000 times
- a 50 MB podcast episode delivered ~204,800 times
When this is genuinely fine (don't move it)
- In-region consumption. If these bytes are read by other AWS services in the same region rather than sent to the internet, you're not paying the egress rate — the fix is a free private-network endpoint, not a migration.
- Spiky, unpredictable traffic that genuinely benefits from scale-to-zero and global presence.
- Small and flat. A few hundred GB a month is a small bill; a migration won't pay for itself.
Related
- the full Amazon S3 egress breakdown — the per-GB tiers and every scale from 1 TB to 500 TB.
- The same service at other scales: 1 TB/mo, 5 TB/mo, 50 TB/mo, 100 TB/mo, 500 TB/mo.
Sources
- AWS EC2/S3 data-transfer-out pricing — the $0.09/GB first tier and 100 GB free allowance — aws.amazon.com/ec2/pricing/on-demand/
- Cloudflare, "AWS's Egregious Egress" — egress unchanged since 2018 while wholesale bandwidth fell ~93% over a decade — blog.cloudflare.com/aws-egregious-egress/
- Alternative pricing (Cloudflare R2 zero egress, bunny.net ~$0.005–0.01/GB, OVH/Hetzner included transfer): the respective provider pricing pages.