CloudFront egress cost: what data transfer really costs (and how to cut it)
TL;DR. CloudFront meters data delivered from the CloudFront CDN to viewers (US/Europe) per gigabyte, and the rate has barely moved in years even as wholesale bandwidth fell by more than half. At 50 TB/mo that's about $4,060/month — roughly $48,722/year — in transfer alone, before storage or requests. The same bytes cost $0 in egress on Cloudflare CDN, a few hundred dollars on a CDN like bunny.net, or nothing on a flat-rate box you already rent. Below: the exact per-GB tiers, what they add up to at every scale, the lines that are also egress but rarely get blamed on it, and the honest cases where you should leave it where it is.
The per-GB tiers
CloudFront egress is tiered — the first block is the priciest, then it steps down (US/Europe, as of 2026-06-15):
| Monthly egress tier | Price /GB |
|---|---|
| First 1 TB (perpetual free tier) | free |
| First 10 TB | $0.085 |
| 10–50 TB | $0.080 |
| 50–150 TB | $0.060 |
| 150–500 TB | $0.040 |
What it costs at every scale
Pure transfer-out cost, CloudFront to the internet, before storage or requests — vs the targets that don't meter egress the same way. As of 2026-06-15.
| Egress / month | CloudFront → internet | Cloudflare CDN (free tier) | bunny.net CDN | OVH / Hetzner flat box |
|---|---|---|---|---|
| 1 TB/mo | $0 | $0 | $5–$10 | $0 |
| 5 TB/mo | $348 | $0 | $26–$51 | $0 |
| 10 TB/mo | $783 | $0 | $51–$102 | $0 |
| 50 TB/mo | $4,060 | $0 | $256–$512 | $0 |
| 100 TB/mo | $7,132 | $0 | $512–$1,024 | $0 |
| 500 TB/mo | $24,540 | $0 | $2,560–$5,120 | $0 |
The honest footnote. This table is 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 the markup is most extreme and most avoidable.
The fine print
CloudFront includes a perpetual 1 TB/month free tier (netted out above), which makes small workloads nearly free — but per-request (HTTP/HTTPS) fees and origin-fetch transfer still apply, and the per-GB rate is barely cheaper than raw S3 once you're past the free tier.
The ways to cut it (in order of effort)
- Put a cache in front (lowest effort). A CDN serves repeat requests from cache, so they never touch metered egress. Cloudflare's free tier gives unmetered cache-hit bandwidth for normal sites; bunny.net (~$0.005–0.01/GB) is excellent for media.
- Move to zero-egress storage. Cloudflare R2 is S3-compatible with no egress fees; Backblaze B2 gives free egress up to 3× stored data. Both speak the S3 API — usually a config change.
- Serve the heavy traffic from a flat-rate box. OVH and Hetzner include generous-to-unlimited transfer.
- Fix the hidden internal egress. Add private-network endpoints (AWS VPC gateway endpoints, Azure Private Link / Service Endpoints, GCP Private Google Access) so internal traffic skips metered paths; collapse needless cross-zone chatter. Worth doing even if you stay put.
When it's genuinely fine (don't move it)
- Low egress (a few hundred GB/month) — the bill is small; not worth a migration.
- Spiky, unpredictable traffic that truly benefits from scale-to-zero and global presence.
- Deep in-region integration — if data is consumed by other AWS services in-region (no internet egress), you're not paying the rate; the fix is the free private-endpoint cleanup, not a move.
Cost by scale
- What 1 TB/mo of CloudFront egress costs — ~$0/month.
- What 5 TB/mo of CloudFront egress costs — ~$348/month.
- What 10 TB/mo of CloudFront egress costs — ~$783/month.
- What 50 TB/mo of CloudFront egress costs — ~$4,060/month.
- What 100 TB/mo of CloudFront egress costs — ~$7,132/month.
- What 500 TB/mo of CloudFront egress costs — ~$24,540/month.
Sources
- AWS CloudFront pricing — US/Europe tiers and the perpetual 1 TB/mo free tier — aws.amazon.com/cloudfront/pricing/
- Alternative pricing (Cloudflare R2 zero egress, bunny.net ~$0.005–0.01/GB, OVH/Hetzner included transfer): the respective provider pricing pages.