Egress: the cloud-bill line you can't see
Most cloud bills have one number everybody watches (compute) and one number almost nobody does (egress — the cost of moving your own data out). The first is a price you can shop on. The second is a meter that spins faster the more successful you get, and it rarely shows up in anyone’s forecast.
Find it on your own bill in five minutes
- Open your latest invoice or a Cost Explorer export.
- Group by usage type and search for
DataTransfer,Egress, orOut-Bytes. - Add up everything billed per-GB out to the internet (ignore in-region, ignore ingress — that’s usually free).
That subtotal is the number that grows with your traffic whether or not you ship a single new feature. On AWS the headline rate has sat at roughly $0.09/GB since 2018, even as wholesale bandwidth more than halved. At 50 TB/month that’s about $53,000 a year in transfer fees alone — before storage, before compute.
Where those bytes are actually coming from
Egress is rarely one line — it’s a dozen small ones that add up, which is exactly why it hides. The usual sources, in rough order of how often they surprise people:
- Serving files and media to users. Every image, video, download, or API response that leaves for the public internet. If your product is media- or download-heavy, this is your bill.
- CDN origin fetches. A CDN caches your content — but every cache miss pulls a fresh copy out of your origin at full egress rate. A low cache-hit ratio quietly reopens the meter.
- Cross-zone chatter. Traffic between availability zones is billed too (roughly $0.01/GB each way on AWS). Chatty microservices, a database replica in another zone, a busy message queue — a few pennies a gigabyte that never sleeps.
- The NAT gateway. Anything in a private subnet reaching the internet goes through it, and it adds a data-processing fee (~$0.045/GB) on top of egress, plus an hourly charge. It’s one of the most common “why is this line so big?” moments on an AWS bill.
- Cross-region replication. Copying data between regions for disaster recovery or latency is billed per gigabyte (~$0.02/GB), continuously.
Egress isn't one scary line. It's a dozen small ones, and none of them sleep.
Don’t memorise the rates — they change, and every provider tiers them differently. The point is that this number grows with your traffic, not your feature list, and it’s spread across enough line items that no single one looks alarming on its own.
Why it matters more than the sticker price
AWS has held its headline egress rate near $0.09/GB since 2018, even as the wholesale cost of bandwidth more than halved. That gap is the tell: egress isn’t priced like a cost, it’s priced like a moat — the thing that makes leaving expensive. And because it scales with traffic, the more your product succeeds, the bigger this invisible line gets.
A flat-rate server you rent doesn’t charge per gigabyte at all. So the savings from moving traffic-heavy workloads off the hyperscaler (AWS, Azure, Google) don’t just exist once — they compound as you grow. The usual moves:
- Put a zero-egress store behind your downloads. Cloudflare R2 charges no egress fee, and Backblaze B2 serves free through Cloudflare (the Bandwidth Alliance waives the transfer). For a download- or media-heavy product, that one change can erase most of the line.
- A CDN in front of static assets, so you pay to serve a file once, not once per view.
- A flat-rate box for the steady, traffic-heavy part — the savings are largest exactly where the meter spins fastest.
And the honest caveat this site always adds: if your egress is small, or spiky-but-mostly-idle, don’t bother. The hyperscaler’s per-GB rate on a low volume is cheaper than the effort of moving it. The move pays off when the line is both large and steady — that’s the whole test.
If you want the egress line on your bill broken out and costed against owned or flat-rate infrastructure, send it to me — I’ll send back a one-page teardown within a business day. And if moving it wouldn’t actually pay off, I’ll tell you that too.