Prices as of 2026-06-15 · every figure computed from the sourced tiers below

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 tierPrice /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 CDNOVH / 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)

  1. 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.
  2. 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.
  3. Serve the heavy traffic from a flat-rate box. OVH and Hetzner include generous-to-unlimited transfer.
  4. 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)

Cost by scale

Sources

Don't miss new posts

I publish honest, sourced breakdowns of cloud-exit economics — egress, storage, monitoring, reliability — and the occasional announcement. Leave your email and I'll let you know when something new goes up.

Double opt-in — you'll get one email to confirm. No spam, unsubscribe anytime. Read by me, never shared.