On this page
What Is Egress Bandwidth (and Why It Shows Up on the Bill)?
Cloud providers meter traffic leaving their network far more strictly than traffic entering it. Egress is the line item that turns a free app into a monthly bill.
Quick answer
- Egress is data leaving the provider’s network toward users or another provider; ingress is data coming in. Egress is usually metered and charged, ingress is often free.
- Most providers bill egress per gigabyte, and the rate varies by destination — within the same region, to the internet, and to another provider’s network are priced differently.
- A storage-heavy or media-heavy app can spend more on egress than on compute, because serving the bytes is the product.
- CDNs exist largely to move egress onto a cheaper network and to cache it closer to users; the origin then sends far less.
- The trap is internal traffic billed as egress: cross-region and cross-availability-zone chatter between your own services is metered.
What is egress bandwidth?
Egress is any traffic that leaves a network boundary defined by the provider — towards an end user, towards a different cloud, or often towards another region of the same cloud. Bandwidth is the rate at which that traffic moves, measured in bits per second at any instant, while the bill is based on the volume moved, measured in bytes over the month. They are related but different: a steady trickle all month and a short burst can move the same volume, and the provider charges for the volume.
The asymmetry between ingress and egress is deliberate. Providers make it cheap or free to bring data in, because that is how you get locked into storing and processing there, and expensive to take data out, because leaving is the competitive threat. The practical consequence for a builder is that the direction of the traffic determines whether it appears on the invoice at all.
How providers meter it
The general shape is a price per gigabyte that depends on destination. Traffic staying inside the same region or availability zone is usually free or nearly so. Traffic to the public internet is charged. Traffic to another region of the same provider is charged, sometimes at a higher rate than internet egress, which surprises people who assume internal traffic is inherently cheap. Traffic to a different provider is charged again, and can be the most expensive case.
Because the rates and free allowances change frequently, and because they differ substantially between providers, the useful exercise is not memorising numbers but checking three things before you design: what your destination mix is, whether target traffic stays within a region, and whether a CDN or direct interconnect changes the price. The billed figure is almost always volume times destination rate, with a small free allowance at the bottom.
Where egress quietly becomes the largest line
Three patterns dominate. Media and file serving: if the product delivers images, video, or large downloads, the bytes are the product and the egress scales with success. Chatty service boundaries: a microservice architecture that passes large payloads between services across regions or availability zones accrues egress for traffic that never leaves the company. And backups or analytics exports: copying a database out nightly, or streaming logs to a third-party platform, is egress every single day and is easy to forget when it is configured once.
Each has a structural fix. Media goes behind a CDN so the origin sends each object roughly once rather than once per user. Services are colocated in one availability zone or region when their traffic is high-volume, with the cost accepted deliberately where the redundancy is worth it. Exports are compressed, incremental, and scheduled inside the same region where the destination allows it.
Designing to keep it small
Put a cache between your origin and the world. A CDN both terminates traffic closer to users — improving latency — and absorbs repeat requests, which is the same traffic that would have been billed as origin egress. The two benefits arrive together, which is why a CDN is the default answer to an egress problem rather than an optimisation.
Then reduce what crosses boundaries. Colocate tightly coupled services, prefer one region over several when the latency budget allows it, compress everything that is compressible, and serve appropriately sized images instead of full-resolution ones. None of these are exotic; they are the ordinary engineering that a builder will not do unprompted, because on a free tier nobody is looking at the meter.
Where this bites vibecoders
An assistant will happily design a multi-region, multi-service architecture on the grounds of resilience without once mentioning that the inter-service traffic is metered. It will also generate an image pipeline that serves original files and a logging setup that ships everything to a third-party endpoint. Each is defensible in isolation; together they make bandwidth the dominant cost. Asking ‘how many bytes leave the provider per user request?’ is a question the assistant can answer, and it is not one it raises by itself.
Where AI coding assistants get this wrong
- Designing cross-region service chatter without accounting for egress charges.
- Serving original-resolution media from the origin instead of through a CDN.
- Shipping all logs and traces continuously to an external service.
- Assuming traffic between your own services is free because it is internal.
- Exporting a full database copy on a schedule when an incremental one would do.
- Ignoring the destination mix when estimating a bill.
Checklist
- List every destination your service sends data to.
- Identify which of those cross a provider or region boundary.
- Put a CDN or cache in front of any large or repeated payload.
- Colocate high-volume service-to-service calls where the latency budget permits.
- Compress responses and serve correctly sized media.
- Check the egress rate for each destination type before committing to an architecture.
FAQ
Why is egress charged but ingress free?
It is a commercial choice rather than a technical one. Free ingress lowers the barrier to putting data and workloads on a provider, and charged egress makes moving them elsewhere expensive. That asymmetry is a large part of what people mean by vendor lock-in, and it is worth factoring into a provider decision.
Is traffic between cloud regions billed?
Usually yes, and sometimes at a higher rate than internet egress. The common assumption that same-provider traffic is free applies only within a region or availability zone; crossing those boundaries is metered. Check the specific rate table for the regions involved before designing services that talk across them.
How does a CDN reduce egress cost?
It absorbs repeat requests at the edge, so the origin serves each object far less often. Those cached responses were previously billed as origin egress; now the CDN’s own egress applies to the ones it must forward. For media-heavy products the difference is often the largest single cost lever available.
What is a reasonable egress allowance for a small app?
It depends entirely on payload size and request volume: a JSON API serving a few hundred kilobytes per request uses far less than an image-heavy site. Estimate bytes per user per day, multiply by users, and compare with the provider’s free allowance. Do this before launch; it is the cost model that grows fastest with success.
Related topics
- Why Is My Cloud Bill So High (and How Do I Find the Leak)?
- How to Reduce Your Cloud Bill Without Breaking Production
- What Is a CDN and Do You Need One?
- What Are Serverless Cold Starts (and Do They Matter for You)?
- Which APAC Cloud Region Should You Deploy To?
- How to Choose a VPS Size for an AI-Built App