Cloud egress fees are the line on a cloud invoice that grows fastest and gets read last. Getting data into AWS, Google Cloud or Azure is free; getting it back out to the internet is billed by the gigabyte, on a tiered schedule that most teams never look at until a launch, a viral file or a backup restore turns it into the largest item on the bill. This guide lays out the list rates side by side, works out what a month of traffic costs at four volumes, finds the egress that does not appear on the pricing page, and shows the two ways out: a waiver when you leave, and a flat-rate server when you stay.
What counts as egress
Egress is data leaving the provider's network. Three kinds show up on a bill:
- Internet egress — anything sent to users, customers or other providers. This is the expensive one, and the one this article mostly prices.
- Inter-region transfer — between two of the provider's own regions, for example replication from Frankfurt to Ireland.
- Inter-zone transfer — between availability zones inside one region, which is what a "highly available" deployment does all day.
Ingress, traffic arriving, is free at every provider in the table below. That asymmetry is deliberate: it costs nothing to move in and real money to move out.
One unit trap before the numbers: AWS and Azure price per GB, Google prices per GiB, which is 7.4% larger. Azure states its tiers in decimal terabytes; AWS's tier boundaries sit at 10,240 GB, so its "TB" is 1,024 GB. Close enough for planning, but worth knowing when two quotes are a few percent apart.
The list rates, side by side
Internet egress from a European region, on-demand list price, checked 19 October 2026:
| Provider |
Free each month |
First tier |
Volume tiers |
Unit |
| AWS (Frankfurt) |
100 GB, across all services |
$0.09 to 10 TB |
$0.085 to 50 TB, $0.07 to 150 TB, $0.05 beyond |
GB |
| Google Cloud, Premium Tier (Frankfurt, to Europe) |
none |
$0.12 to 1 TiB |
$0.11 to 10 TiB, $0.08 beyond |
GiB |
| Azure (from Europe) |
100 GB |
$0.087 for the next 10 TB |
$0.083, $0.07, then $0.05 up to 500 TB |
GB |
| Oracle Cloud (from Europe and UK) |
10 TB |
$0.0085 beyond 10 TB |
flat |
GB |
| Cloudflare R2 (object storage) |
— |
$0 egress |
storage and operations billed instead |
GB |
Sources: AWS EC2 pricing and its price list API for the Frankfurt tiers, Google Cloud network pricing, Azure bandwidth pricing, Oracle networking pricing, Cloudflare R2 pricing.
Google also sells a Standard Tier that routes over the public internet rather than its own backbone, at $0.085 per GiB falling to $0.045, after 200 GiB free. Above 500 TB a month, AWS, Google and Azure all ask you to contact sales, so the top of this table is a starting point for negotiation rather than a price.
What a month actually costs
The tiers make the arithmetic tedious, so here it is done. The flat-rate column sizes a guaranteed port for a peak three times the monthly average, which is a typical shape for user-facing traffic, and uses our own list prices.
| Monthly egress |
Average rate |
AWS |
Google Premium |
Azure |
Oracle |
Flat port that carries it |
| 10 TB |
31 Mbps |
$891 |
$1,035 |
$861 |
$0 |
1 Gbps, €209 |
| 50 TB |
154 Mbps |
$4,293 |
$4,043 |
$4,182 |
$340 |
1 Gbps, €209 |
| 100 TB |
309 Mbps |
$7,812 |
$7,768 |
$7,683 |
$765 |
2 Gbps, €259 |
| 300 TB |
926 Mbps |
$18,886 |
$22,669 |
$18,685 |
$2,465 |
5 Gbps, €519 |
The average rate is the monthly volume spread evenly over 30 days: 1 TB a month is about 3.1 Mbps. The cloud figures are egress only, before compute, storage or any of the charges in the next section.
Two things stand out. AWS, Google and Azure land within about 20% of each other at every volume, so moving between them does not fix an egress problem. And Oracle, at roughly a tenth of the others, shows how much of a hyperscaler's egress rate is pricing policy rather than the cost of moving bytes. The derivation of a per-terabyte figure for each billing model is in the cost per terabyte of bandwidth; the point here is that a flat port stays flat while the metered columns climb.
The egress the pricing page does not show
Internet egress is the visible charge. These sit next to it:
NAT gateways. Instances in private subnets reach the internet through a NAT gateway, which bills for every gigabyte it processes on top of the transfer itself. AWS's own worked example on its VPC pricing page charges $0.045 per GB processed plus $0.045 an hour, then the normal $0.09 per GB to leave. Ten terabytes of software updates and API calls through a NAT gateway is about $450 in processing before it is egress at all.
Cross-zone traffic. AWS bills $0.01 per GB of regional transfer between availability zones in Frankfurt. A database replicating to a standby in another zone, or an application tier reading from a database in a different zone, pays it continuously.
Inter-region replication. From Frankfurt to Ireland or North Virginia, AWS charges $0.02 per GB. Cross-region backups are cheap per gigabyte and large in total.
Public IPv4 addresses. AWS bills every public IPv4 address, in use or idle, by the hour. It is not egress, but it lands on the same part of the bill and catches the same people.
To find these on an AWS bill, group Cost Explorer by usage type and look for DataTransfer-Out-Bytes, DataTransfer-Regional-Bytes and NatGateway-Bytes, each prefixed by a region code such as EUC1- for Frankfurt.
The exit door: waivers and the EU Data Act
Leaving used to mean paying full egress on everything you take with you. That changed in 2024. AWS announced free data transfer out for customers moving all of their data off AWS, or off one AWS service; you apply through AWS Support, and it says it will apply extra scrutiny to repeat requests. Google Cloud runs a similar programme for customers migrating all workloads and data off the relevant service.
The legal backdrop is the EU Data Act, which phases out switching charges for cloud customers. AWS's pricing page now tells EU customers they may request reduced data transfer rates for eligible cases under it. Both routes cover leaving, not running: they do nothing for the egress a live service generates every month.
Keep the cloud, move the delivery
The cheaper middle path is to keep compute and storage where they are and put a flat-rate cache in front of them. Users fetch from the cache; the cache fetches from object storage only on a miss. You pay cloud egress once per object rather than once per download.
The arithmetic for 100 TB a month of downloads served from S3 in Frankfurt:
Direct from S3: 100 TB egress → $7,812
Cache, 95% hit ratio: 5 TB egress from S3 → $441 + €259 for a 2 Gbps cache
Cache, 98% hit ratio: 2 TB egress from S3 → $171 + €259
The hit ratio decides everything: large, rarely changing files such as installers, media segments and game patches cache well; personalised API responses do not. How to build the cache tier, size it and measure its hit ratio is covered in building a CDN origin server and build your own CDN.
When the cloud price is the right price
Egress fees are not always worth escaping. Under 100 GB a month, AWS and Azure charge nothing. A workload whose traffic is unpredictable by an order of magnitude month to month may be better off paying per gigabyte than holding a port it rarely fills. And when egress is a small share of a bill dominated by managed databases, queues and machine learning services, moving it saves less than the engineering time it costs.
The case for moving is a steady, large outbound stream: downloads, video, backups served back to customers, public datasets, VPN traffic. That is the shape where per-gigabyte billing compounds and a flat port does not.
Flat-rate ports, for reference
Our unmetered dedicated servers are sold by guaranteed rate, with no traffic counter: 1 Gbps from €209, 2 Gbps from €259, 5 Gbps from €519 and 10 Gbps from €659 a month, in 13 locations. The guarantee applies in each direction. Inbound is free there too, which makes these servers a natural landing place for data leaving a cloud under an exit waiver.
Frequently asked questions
What are cloud egress fees?
Cloud egress fees are per-gigabyte charges for data leaving a cloud provider's network, mainly to the internet but also between regions and availability zones. AWS, Google Cloud and Azure list European internet egress at roughly $0.09 to $0.12 per GB for the first tier, falling with volume.
Why is inbound traffic free but outbound is not?
Free ingress makes it cheap to bring data in, and per-gigabyte egress makes it expensive to take it out or serve it at scale. The rate is a pricing decision as much as a cost: Oracle lists European egress at $0.0085 per GB beyond 10 TB, about a tenth of the other three.
Can I avoid egress fees when leaving AWS or Google Cloud?
Yes, if you are moving out. AWS waives data transfer out for customers moving all their data off AWS or off one service, on request through AWS Support. Google Cloud offers free data transfer for customers migrating all workloads and data off the relevant service.
Is Cloudflare R2 egress really free?
R2 charges nothing for data transfer to the internet from either storage class. It bills instead for storage, from $0.015 per GB-month, and for operations, at $4.50 per million Class A and $0.36 per million Class B requests on Standard storage.
How do I estimate my cloud egress bill?
Take last month's outbound gigabytes from the provider's cost tool, subtract the free allowance and apply each tier in order. Then add NAT gateway processing, cross-zone and inter-region transfer, which are billed separately and are easy to miss.