All posts

Cloud egress fees vs unmetered: the 2026 maths

1,024 GB out of AWS is $83.16. A Hetzner CX23 includes 20 TB at €0 of traffic, and a full 1 Gbit port moves 324 TB in 30 days.

Written by NodeRings Inc.

NodeRings Inc. writes these notes. The company runs the marketplace and the agent that stays on the provider’s side of the hypervisor.

1,024 GB of egress out of AWS in US East (N. Virginia), after the 100 GB that month is free, costs $83.16. The rate on that step is $0.090 per GB, and the Data Transfer Out meter ends it at 10,240 GB. Those 10,240 GB come to $912.60. A Hetzner CX23 in an EU location is €5.99 a month excluding VAT, with the IPv4 included and 20 TB of traffic included, so a 10 TB month has a traffic line of €0. A 1 Gbit port filled for 30 days moves 324.00 TB. Unmetered, on a Hetzner root server with that 1 Gbit uplink, is the port.

Those sentences use four different terabytes. AWS ends the $0.090 band at 10,240 GB, so one TB on that meter is 1,024 GB. Azure's bandwidth page sets 1 TB at 1,000 GB. Google prices the outbound byte in GiB. Hetzner bills overage in blocks of 0.0001 TB and calls a block 100 MB, which is a decimal terabyte when that megabyte is a million bytes. DigitalOcean prints the allowance in GiB. A row that says 20 TB means 20 of the unit that vendor printed.

Log chart of monthly egress in dollars from 1 TB to 100 TB for AWS, GCP Premium, Azure, DigitalOcean, and a Hetzner US plan
Monthly egress in USD. AWS counts 1,024 GB as 1 TB, Azure counts 1,000 GB, and GCP and DigitalOcean count GiB. The Hetzner US line is $1.20 per TB past a 1 TB floor, drawn from 5 TB, the first point on that floor with a bill.

How much does 1 TB of cloud egress cost

AWS, GCP, and Azure bill the outbound byte on a ladder. Each step down is small beside the gap between these three and a host that sells a port.

On AWS the free 100 GB is pooled across services and regions, China and GovCloud aside. Past it, US East to the internet is $0.090 per GB through 10,240 GB, $0.085 through 51,200 GB, $0.070 through 153,600 GB, and $0.050 after that. Transfer into EC2 from the internet is $0.00 per GB. EU customers can ask support for reduced rates under the European Data Act. A full exit is a separate waiver from that reduced rate.

1,024 GB minus the free 100 GB, times $0.090, is $83.16. At 102,400 GB the month is still on the $0.070 band, because $0.050 starts after 153,600 GB.

GCP Premium is the default. Standard has to be selected on the service. Premium toward North America is free for the first 1 GiB, then $0.12 per GiB through 1,024 GiB, $0.11 through 10,240 GiB, and $0.08 after that. Toward Europe the rate past 10,240 GiB is $0.085. Australia, Indonesia, Korea, South America, and Saudi Arabia start at $0.19 per GiB from the first byte. Ingress is free. One tebibyte toward North America is the free gibibyte plus 1,023 GiB at $0.12, which is $122.76.

Standard's free tier is the first 200 GiB per account, counted across regions, then $0.085 per GiB through 10,240 GiB, $0.065 through 153,600 GiB, and $0.045 after that. One tebibyte is 1,024 GiB minus 200 GiB, times $0.085, which is $70.04. At 20 tebibytes Standard is the low line of the four.

Azure's internet egress on the Microsoft global network, from North America or Europe to any destination, is free for the first 100 GB, then $0.087 per GB for the next 10 TB, $0.083 for the next 40 TB, $0.07 for the next 100 TB, and $0.05 for the next 350 TB. Their TB is 1,000 GB, so 1 TB is 900 GB times $0.087, which is $78.30. The routing preference that hands traffic to a transit ISP prices that next 10 TB at $0.08. The column here is the global network, the path in place until the preference is changed.

VolumeAWS US EastGCP PremiumGCP StandardAzure
1 TB$83.16$122.76$70.04$78.30
5 TB$451.80$573.32$418.20$426.30
20 TB$1,783.50$1,955.72$1,519.00$1,691.70
100 TB$7,980.20$8,509.32$6,843.80$7,683.00

AWS and GCP step by 1,024 GB. Azure steps by 1,000 GB. GCP Premium in that table is traffic toward North America. All four figures are egress. The machine sending the bytes has an hourly price of its own, left off so a $1,783 line is read as traffic.

DigitalOcean's $4 droplet is 1 vCPU, 512 MiB of memory, 10 GiB of disk, and 500 GiB of transfer, at $0.00595 an hour. Past the allowance, transfer is $0.01 per GiB, and inbound is free. The allowance pools across the team and ends with the cycle. It accrues per second up to 2,419,200 seconds, 28 days, so a droplet present for the whole cycle contributes the transfer printed on the plan. 1,024 GiB out is $5.24 of overage. 20,480 GiB out is $199.80, and with the $4 the month on this droplet is $203.80.

Vultr's pricing page charges $0.01 per GB past the quota, and some locations differ, with that price in the control panel. A 2 vCPU, 8 GB row there is $0.060 an hour with 5.00 TB of bandwidth. On that quota, 20 TB is 15 TB over. Counted as 15,000 GB the overage is $150. Counted as 15 times 1,024 GB it is $153.60. The page prints both units and leaves the conversion open, so the bar uses $150.

Oracle's networking page includes 10 TB a month of public egress free, and outbound data over 10 TB starts at $0.0085. The free-tier list repeats the 10 TB. A region can sit above the starting rate. Counted at 1,000 GB per TB, 20 TB is $85 and 100 TB is $765. The bar says "from" because of that.

Hetzner splits the allowance by location, then charges a flat amount per extra TB. The traffic document gives CX and CAX servers 20 TB in the EU. CPX servers get 20 TB in the EU, 1 to 5 TB in US locations, and 0.5 to 5 TB in Singapore. CCX servers get 20 to 60 TB in the EU and 1 to 8 TB in the US and in Singapore. The CX23 is 2 vCPU, 4 GB, 40 GB NVMe, €5.99 a month excluding VAT, €0.0096 an hour excluding VAT, IPv4 included. The locations on that page are EU, so the inclusion is 20 TB. Extra traffic is product CLOUD_66 on Hetzner's price feed, listed at €1.00 and $1.20, and the traffic document states the same €1 ($1.20) per TB for root-server overage. In Singapore the product is €7.40 and $8.30.

A US plan on the 1 TB floor of the CPX range pays €1 per TB after the first. Five TB is $4.80 on the feed, 20 TB is $22.80, and 100 TB is $118.80. A plan that already includes 5 TB pays less. Overuse bills in blocks of 100 MB, written as 0.0001 TB. Their example, 20.00008 TB, bills as 0.0001 TB. Alerts at 75 percent and at 100 percent leave the port open. Outgoing is the metered direction.

Bar chart of the transfer cost of 20 TB, from GCP Premium at $1,955.72 to several providers at $0
The transfer line for 20 TB. Vultr is 15,000 GB past a plan that lists 5.00 TB, at $0.01 per GB. Oracle is 10,000 GB past 10 TB at the $0.0085 starting rate. Hetzner US uses the $1.20 feed past a 1 TB floor. A $0 row has no per-GB charge on this volume. The virtual machine is still a separate price.

What unlimited bandwidth includes

Included, unlimited, unmetered, and fair use are four contracts. The word unlimited does not name a price.

On the OVH VPS page the VPS-1 is listed from $4.54 a month with unlimited traffic on a 500 Mbps port. The VPS-2 is $8.50 at 1 Gbps, the VPS-3 is $12.32 at 2 Gbps, and the VPS-4 is $23.37 at 3 Gbps. Mumbai, Singapore, and Sydney replace unlimited with a quota: 500 GB on the VPS-1, 1 TB on the VPS-2 and the VPS-3, 3 TB on the VPS-4, then a port held at 10 Mbps.

Hetzner's traffic document calls a root server with a 1 Gbit port unlimited, and that paragraph leaves the 1 Gbit uplink uncapped. A 10 Gbit root server includes 20 TB, then €1 ($1.20) per TB. That 1 Gbit line is the unmetered case. The CX23 is the included case, 20 TB and then a euro per TB.

Contabo ships VPS, VDS, and dedicated servers with no default bandwidth limit, and fair usage can throttle traffic that is exceptionally high or disruptive. VPS and VDS ports run from 100 Mbps to 1 Gbps. Most dedicated servers are on 100 Mbps, and some are on 1 Gbps. The article has no per-GB price. A very large month can be throttled. A 100 Mbps port tops out at 32.40 TB in 30 days even with that throttle left off.

UpCloud's fair transfer adds no excess fee by default, and UpCloud may cut Cloud Servers to 100 Mbps for the rest of the month once the share is used. An optional model charges $0.01 per GB to keep egress unrestricted above the share. The starter plan, 1 vCPU and 1 GB, includes 0.5 TB. Inbound and private traffic are free. The optional cent is a cousin of DigitalOcean's overage. The default is a slower port.

Akamai's transfer doc, on the Linode plans, pools an included amount that reaches 20 TB on larger sizes of the older families. G8 Dedicated CPU, accelerated plans, some GPU plans, and distributed compute regions are usage-based, with included transfer at zero. Inbound is free. A public IPv4 in the same datacenter counts on the meter. The per-GB rate is on the regional pricing page, so Linode stays off the dollar chart.

Cloudflare R2 is object storage, and egress to the internet is free on Standard and on Infrequent Access. Standard storage is $0.015 per GB-month. Infrequent Access storage is $0.01 per GB-month, and reading it back is $0.01 per GB. The free tier, on Standard, is 10 GB-month of storage, 1 million Class A operations, 10 million Class B operations, and that free egress. Class A is $4.50 per million. Class B is $0.36 per million. Store 100,000 GB for the month and Standard storage is $1,499.85 after the free 10 GB-month, with egress at $0. Millions of tiny objects can start the Class B meter on top of that.

How many terabytes fit through a 1 Gbit port

Multiply the speed in megabits by one million, divide by 8, multiply by 86,400 seconds and by 30 days, then divide by 10 to the 12th. The result is a decimal terabyte, 10^12 bytes, for a link that stays full every second of those 30 days. A speed test on a loaded machine lands lower, once the disk, the CPU, and the far host take their share.

python3 - << 'PY'
days = 30
print("port Mbit    100% TB    50% TB")
for mbps in (10, 100, 200, 500, 1000, 3000):
    tb = mbps * 1e6 / 8
    tb = tb * 86400 * days / 1e12
    half = tb / 2
    msg = f"{mbps:4}       {tb:7.2f}"
    msg += f"    {half:7.2f}"
    print(msg)

def aws(gb):
    left = max(0, gb - 100)
    cost = 0.0
    bands = (
        (10240, 0.09),
        (40960, 0.085),
        (102400, 0.07),
        (10**12, 0.05),
    )
    for size, rate in bands:
        take = min(left, size)
        cost += take * rate
        left -= take
    return round(cost, 2)

print("AWS US East USD, 1024 GB = 1 TB")
for tb in (1, 2, 5, 10, 15, 20, 100, 162):
    bill = aws(tb * 1024)
    print(f"{tb:4} TB   {bill:10.2f}")
PY
Bar chart of terabytes per 30 days at 10 Mbit, 100 Mbit, 200 Mbit, 500 Mbit, 1 Gbit, and 3 Gbit
Decimal terabytes through a port held at 100 percent and at 50 percent for 30 days of 86,400 seconds.
Terminal output of the 30-day port arithmetic and the AWS US East egress bill from 1 TB to 162 TB
The same calculator. Port rows are decimal terabytes. The AWS rows use 1,024 GB per TB and subtract the 100 GB free tier before the $0.090 step.

A 200 Mbps port runs out of month at 64.80 TB. The OVH VPS-1, at 500 Mbps, reaches 162.00 TB full and 81.00 TB at half. One gigabit is 324.00 TB full and 162.00 TB at half. The VPS-4, at 3 Gbps, reaches 972.00 TB. Half rate is a planning shape for evenings that are busy and nights that are quiet, and your own counters replace it once you have a month of them.

Cloudflare's essay on AWS egress is the wholesale side of the gap. Wholesale transit, in that essay, fell 23 percent a year across a decade, which they calculate as wholesale bandwidth 93 percent cheaper, while AWS egress over the same stretch fell 25 percent. North American and European egress rates had stayed put since 2018, while wholesale prices in those markets fell by more than half. Their figure for one megabit held full for a month is 0.3285 TB. The 30-day sum here is 0.324 TB per megabit. The gap between those two is the length of the month.

A throttle rewrites the same ladder. Ten megabits for 30 days is 3.24 TB, so an Asia-Pacific OVH port after its quota, or any host that pins you there, holds a video site to that ceiling if the cap lasts the month. One hundred megabits, the UpCloud cut and the slow end of Contabo, holds 32.40 TB. A 15 TB month fits in the 100 Mbps cap and overshoots the 10 Mbps cap.

What 2 TB, 15 TB, and 100 TB of egress cost

A small SaaS is about 2 TB out. A podcast or file host is about 15 TB. A public mirror is about 100 TB. Hyperscaler cells are egress only. Where a small machine has a published price, it sits beside the traffic.

MonthAWSGCP PremiumAzureDO overageCX23 traffic
2 TB$175.32$235.40$165.30$15.48€0
15 TB$1,348.30$1,546.12$1,276.70$148.60€0
100 TB$7,980.20$8,509.32$7,683.00$1,019.00€80

The units match the first table. DigitalOcean is overage past 500 GiB, so add the $4 droplet. The CX23 column is euros past 20 TB, and the server is still €5.99 excluding VAT.

At 2 TB the CX23 allowance is untouched, so twelve months of that server are €71.88 excluding VAT, while one month of the AWS egress in the table is $175.32. The $235.40 GCP cell is 1,023 GiB at $0.12 plus 1,024 GiB at $0.11. Add $4 to the DigitalOcean overage and the droplet month is $19.48. OVH's VPS-1, outside the Asia-Pacific quota, is $4.54, with 2 TB well inside a 162 TB port. A Hetzner US plan on the 1 TB floor pays $1.20 of traffic, and Oracle is still inside its free 10 TB.

Fifteen TB is the first shape that crosses an AWS step. 15 times 1,024 is 15,360 GB. Minus the free 100 GB, the first 10,240 GB at $0.090 cost $921.60 and the remaining 5,020 GB at $0.085 cost $426.70. The GCP cell, $1,546.12, is $122.76 plus $1,013.76 plus $409.60. The US floor is $16.80. Vultr on the 5.00 TB row, counting 10,000 GB over, is $100. Oracle past the free 10 TB, at the starting rate and a decimal terabyte, is $42.50.

A 100 TB mirror needs 308.6 Mbps average if the bytes leave steadily across 30 days. That fits the OVH VPS-1's 500 Mbps port, whose full-month ceiling is 162 TB, and it fits a 1 Gbps port at under a third of the line. It is past a 200 Mbps ceiling of 64.80 TB, so a Contabo VPS at that port speed runs out of interface before fair use has anything to say. The EU cell is €80 of traffic, $96.00 on the feed, on top of the €5.99 server. The US floor is $118.80 of traffic. Vultr past a 5 TB quota, counted as 95,000 GB, is $950. Oracle from the starting rate is $765. R2 egress stays $0, and storing 100,000 GB-month is the $1,499.85 above. In Mumbai, Singapore, or Sydney the VPS-1 quota is 500 GB and the port then sits at 10 Mbps, so the unlimited line on that page has already ended.

What it costs to move data off AWS, Azure, or GCP

The exit waivers cover the move. The following month, ordinary user traffic is back on the published meter.

AWS makes data transfer out free when you move all of the data off AWS, or off one service, and you contact support to arrange it. EU customers can also ask support for reduced rates under the European Data Act. One request is the departure. The other is a lower rate while you stay.

Azure makes egress free when you leave for a different cloud or for your own machines, claimed as a credit, on top of the 100 GB a month already free.

Google's exit page credits the internet transfer when you move every workload and the data for a service to a different cloud or onto your own machines, and then end that service. You file an Exit Notice, start during the initiation window, and file a Completion Notice. The credit lands on the final invoice. Covered data sits in the storage and data-management products, Persistent Disk included.

A CDN puts the viewer's byte on the CDN's bill. Google's VPC pricing lists transfer from a VM to Cloud CDN at no charge, and cache fill on a line of its own. Fill inside North America or inside Europe is $0.01 per GiB. Fill between regions is $0.04 per GiB. For popular content Google says the fill is often under 10 percent of the transfer, which is the part the origin still pays to push.

Inbound transfer is free on the pages these outbound numbers come from. Into EC2 from the internet, into GCP, into Azure, incoming and internal on Hetzner, inbound on DigitalOcean, inbound and private on UpCloud.

Half of a 1 Gbit port, held for 30 days, is 162 TB. On the US East meter that month is $12,180.60. A Hetzner root server with a 1 Gbit uplink is the unlimited line in the traffic document, so the traffic line is €0. A CX23 carrying the same 162 TB pays €142 of overage, 142 TB past the 20 TB inclusion, or $170.40 on the $1.20 feed. Fill the gigabit and the port stops at 324 TB. The allowance stops at 20 TB, and the euro-per-TB line starts on the next block.