Cloud egress cost calculator: AWS, Google Cloud, Azure, Cloudflare and Fastly side by side
See what the same monthly traffic costs to send out of each cloud, with tiered internet rates, a CDN, and cross-AZ and cross-region transfer included.
How to verify this
Open your browser's network tab and change an input: nothing is sent. The page computes with the formulas and the dated price table below. Some entries in that table could not be checked against an official page and are labelled. The same engine answers the API and the MCP tool, so you can reproduce any scenario from code.
Cheapest: Cloudflare R2 at $0.00/month, $52,736/year less than AWS.
- Heads-up:Cloudflare R2 charges nothing for egress but bills storage and operations, which are not in this total.
- Note:Volume is within 5% of a price boundary, so a small change in traffic moves the rate (aws internet egress: 51,200 GB against a boundary at 51,300 GB; azure internet egress: 50,000 GB against a boundary at 51,295 GB).
- Note:Prices for AWS, Azure, Fastly are not fully verified against an official vendor page. AWS: Internet egress above 51,200 GB after the 100 GB allowance: the $0.07 tier and its 153,600 GB boundary could not be read from an official AWS page (the EC2 data-transfer tables render with JavaScript). They come from an AWS Builder Center community article. The $0.05 floor for US East is confirmed by an AWS blog. Above 500 TB a month the AWS EC2 and S3 pages say to contact AWS, so the $0.05 rate is carried forward there as an assumption. Azure: Azure CDN Zone 2 (Asia Pacific) and Zone 3 (South America): above 1,000,000 GB (1,000 TB) Microsoft publishes 'contact us', so the last published rate is carried forward as an assumption. Fastly: Fastly publishes no per-GB rate above 20 TB a month (contact sales), so the last published rate is carried forward as an assumption. The Fastly pricing page does not say whether a TB is 1,000 or 1,024 GB; decimal is assumed for the tier bounds (10 TB and 20 TB) and for the conversion. This result reaches that assumed range.
Monthly cost by provider, split into components
- Internet egress
- CDN
- Inter-AZ
- Inter-region
| Provider | Internet | CDN | Inter-AZ | Inter-region | Total | Vs current |
|---|---|---|---|---|---|---|
| Cloudflare R2 | $0.00 | $0.00 | n/a | n/a | $0.00 | -$4,395 |
| Azure | $4,183 | $0.00 | $0.00 | $0.00 | $4,183 | -$212.06 |
| AWS | $4,395 | $0.00 | $0.00 | $0.00 | $4,395 | $0 |
| Google Cloud | $4,813 | $0.00 | $0.00 | $0.00 | $4,813 | +$417.97 |
| Fastly | $5,316 | $0.00 | n/a | n/a | $5,316 | +$921.20 |
Cloudflare R2: egress only, no inter-AZ or inter-regionFastly: egress only, no inter-AZ or inter-region Azure: prices not fully verifiedAWS: prices not fully verifiedFastly: prices not fully verified
Not in these totals: Cloudflare R2 (storage, operations); Fastly (requests, package fees).
Destination mix used: 70% North America and Europe, 20% Asia Pacific, 10% rest of the world.
Monthly cost as traffic (or cache hit ratio) changes
Calculating the range…
How it is calculated
Volume
V = monthly_outbound_tb × tb_to_gb (GB in a TB as each vendor defines it) V_origin = V × (1 − cache hit ratio) (with a CDN; otherwise V_origin = V)
Tiered internet egress for one provider
C_tier(X) = Σ_i r_i × min( max(X − F − B_(i−1), 0), B_i − B_(i−1) ) F = free allowance, B_i = cumulative tier bounds measured after F, r_i = rate in tier i r_i = Σ_g w_g × r_(g,i) (w = destination mix as shares of 1; g = North America and Europe, Asia Pacific, rest of the world)
Total for one provider
C_total = C_tier(V_origin) + C_cdn(V) + V × p_az × r_az + V × p_reg × r_reg r_az is doubled when the provider bills both directions Origin pulls into the provider's own CDN are 0 when the dataset marks origin_to_cdn_free
Derived values
effective $/GB = C_total ÷ V difference vs current = C_total − C_total(current provider)
Assumptions
- Prices are list prices in USD from the dated table below. Negotiated discounts, commitments, request fees, plan or package fees and taxes are not modelled.
- Tiers are consumed by the total monthly volume. Where a vendor publishes a separate ladder per destination region, the three destination groups each use one representative rate card (named in the data notes) and the tier rate is the destination-mix-weighted average.
- One CDN is applied in front of every origin provider compared. The CDN bills its own delivery rate on all traffic; only cache misses (volume × (1 − hit ratio)) are pulled from the origin. A provider's own CDN is free or cheap to pull from; any other CDN pulls at that provider's internet egress rate.
- Fastly is a delivery network with no origin hosting, so its row is the cost of delivering the whole volume through Fastly and ignores the hit ratio. Cloudflare means R2 object storage with free egress.
- Each vendor's own meaning of a TB is used to turn your TB into GB (1,024 GB for AWS and Google Cloud, 1,000 for Azure, Cloudflare and Fastly). Every ladder is evaluated at that vendor's GB figure.
- Providers with no compute zones (Cloudflare, Fastly) have no cross-AZ or cross-region charge here, and their total is labelled egress only. Zero-egress storage still bills storage and operations, which are not in the total.
- AWS and Azure internet egress is priced by the region traffic leaves from: the data are AWS US East (N. Virginia) and Azure sources in North America and Europe.
- Where a vendor publishes no price above some volume (contact sales), the last published rate is carried forward and the result says so.
The data behind it
| Provider | 1 TB = | Free allowance | Internet egress | Inter-AZ | Inter-region | Checked |
|---|---|---|---|---|---|---|
| AWS * | 1,024 GB | 100 GB | Tiered | $0.01/GB each direction | $0.02/GB | Not fully verified |
| Google Cloud | 1,024 GB | 1 GB | Tiered | $0.01/GB | $0.02/GB | 2026-11-05 |
| Azure * | 1,000 GB | 100 GB | Tiered | Free | $0.02/GB | Not fully verified |
| Cloudflare R2 | 1,000 GB | None | Zero egress | n/a | n/a | 2026-11-05 |
| Fastly * | 1,000 GB | 100 GB | Delivery network | n/a | n/a | Not fully verified |
| Provider | Destination | Tiers |
|---|---|---|
| AWS * | All destinations | to 10,240 GB: $0.09; to 51,200 GB: $0.085; to 153,600 GB: $0.07; above 153,600 GB: $0.05 |
| Google Cloud | North America and Europe | to 1,023 GB: $0.12; to 10,239 GB: $0.11; above 10,239 GB: $0.08 |
| Google Cloud | Asia Pacific | to 1,023 GB: $0.12; to 10,239 GB: $0.11; above 10,239 GB: $0.085 |
| Google Cloud | Rest of the world | to 1,023 GB: $0.19; to 10,239 GB: $0.18; above 10,239 GB: $0.15 |
| Azure * | All destinations | to 10,235 GB: $0.087; to 51,195 GB: $0.083; to 153,595 GB: $0.07; above 153,595 GB: $0.05 |
| Fastly * | North America and Europe | to 9,900 GB: $0.12; to 19,900 GB: $0.08; above 19,900 GB: $0.08 (assumed) |
| Fastly * | Asia Pacific | to 9,900 GB: $0.19; to 19,900 GB: $0.14; above 19,900 GB: $0.14 (assumed) |
| Fastly * | Rest of the world | to 9,900 GB: $0.19; to 19,900 GB: $0.14; above 19,900 GB: $0.14 (assumed) |
| CDN | Destination | Tiers | Free allowance | Pulling from the same provider's origin |
|---|---|---|---|---|
| Amazon CloudFront * | North America and Europe | to 9,216 GB: $0.085; to 50,176 GB: $0.08; to 152,576 GB: $0.06; to 510,976 GB: $0.04; to 1,047,552 GB: $0.03; to 5,241,856 GB: $0.025; above 5,241,856 GB: $0.02 | 1,024 GB | Free |
| Amazon CloudFront * | Asia Pacific | to 9,216 GB: $0.12; to 50,176 GB: $0.10; to 152,576 GB: $0.095; to 510,976 GB: $0.09; to 1,047,552 GB: $0.08; to 5,241,856 GB: $0.07; above 5,241,856 GB: $0.06 | 1,024 GB | Free |
| Amazon CloudFront * | Rest of the world | to 9,216 GB: $0.11; to 50,176 GB: $0.105; to 152,576 GB: $0.09; to 510,976 GB: $0.08; to 1,047,552 GB: $0.06; to 5,241,856 GB: $0.05; above 5,241,856 GB: $0.04 | 1,024 GB | Free |
| Google Cloud CDN | North America and Europe | to 10,240 GB: $0.08; to 153,600 GB: $0.055; to 1,024,000 GB: $0.03; above 1,024,000 GB: $0.02 | None | Cache fill $0.01 / $0.02 / $0.02 per GB |
| Google Cloud CDN | Asia Pacific | to 10,240 GB: $0.09; to 153,600 GB: $0.06; to 1,024,000 GB: $0.05; above 1,024,000 GB: $0.04 | None | Cache fill $0.01 / $0.02 / $0.02 per GB |
| Google Cloud CDN | Rest of the world | to 10,240 GB: $0.09; to 153,600 GB: $0.06; to 1,024,000 GB: $0.05; above 1,024,000 GB: $0.04 | None | Cache fill $0.01 / $0.02 / $0.02 per GB |
| Azure CDN Standard from Microsoft (classic) * | North America and Europe | to 10,000 GB: $0.081; to 50,000 GB: $0.075; to 150,000 GB: $0.056; to 500,000 GB: $0.037; to 1,000,000 GB: $0.028; above 1,000,000 GB: $0.023 | None | Free |
| Azure CDN Standard from Microsoft (classic) * | Asia Pacific | to 10,000 GB: $0.129; to 50,000 GB: $0.121; to 150,000 GB: $0.112; to 500,000 GB: $0.093; to 1,000,000 GB: $0.075; above 1,000,000 GB: $0.075 (assumed) | None | Free |
| Azure CDN Standard from Microsoft (classic) * | Rest of the world | to 10,000 GB: $0.233; to 50,000 GB: $0.186; to 150,000 GB: $0.168; to 500,000 GB: $0.149; to 1,000,000 GB: $0.13; above 1,000,000 GB: $0.13 (assumed) | None | Free |
| Cloudflare CDN | All destinations | No charge | None | Free |
| Provider | Note |
|---|---|
| AWS | Internet egress above 51,200 GB after the 100 GB allowance: the $0.07 tier and its 153,600 GB boundary could not be read from an official AWS page (the EC2 data-transfer tables render with JavaScript). They come from an AWS Builder Center community article. The $0.05 floor for US East is confirmed by an AWS blog. |
| AWS | Above 500 TB a month the AWS EC2 and S3 pages say to contact AWS, so the $0.05 rate is carried forward there as an assumption. |
| Azure | Azure CDN Zone 2 (Asia Pacific) and Zone 3 (South America): above 1,000,000 GB (1,000 TB) Microsoft publishes 'contact us', so the last published rate is carried forward as an assumption. |
| Fastly | Fastly publishes no per-GB rate above 20 TB a month (contact sales), so the last published rate is carried forward as an assumption. |
| Fastly | The Fastly pricing page does not say whether a TB is 1,000 or 1,024 GB; decimal is assumed for the tier bounds (10 TB and 20 TB) and for the conversion. |
| Topic | What catches people out |
|---|---|
| Cross-AZ traffic | AWS bills inter-AZ transfer in each direction, so 1 GB between zones costs twice the listed per-GB rate. Google Cloud bills the sender only; Azure currently does not charge. |
| Free allowances | Allowances differ (AWS 100 GB a month across all services, CloudFront 1 TB, Azure 100 GB, Fastly 100 GB) and are subtracted before the first tier, so they matter most at small volumes. |
| Origin pulls | Pulls from a provider's storage into its own CDN are often free (CloudFront, Azure CDN); pulling into a different CDN is billed as internet egress, and Google Cloud CDN charges a cache-fill rate. |
| Zero-egress storage | Cloudflare R2 charges nothing for egress but still bills storage and operations, and anything else you connect to the bucket bills on its own. |
| NAT and gateways | NAT gateway, load balancer and PrivateLink processing fees are billed on top of data transfer and are not in these totals; the AWS NAT Gateway & PrivateLink Estimator covers them. |
| Destinations | Some vendors price by where the user is (CloudFront, Google Cloud, Fastly) and others by where the traffic leaves from (AWS, Azure). Asia Pacific and South America users are usually the expensive ones. |
| Tier boundaries | Rates fall as volume grows, so the cost per GB is not constant. Near a boundary a small change in traffic changes the rate you are paying on the next GB. |
Last updated 2026-11-05 (dataset 2026-11, refreshed monthly). Entries marked unverified or modelled could not be checked against an official page.
- https://aws.amazon.com/vpn/pricing/
- https://aws.amazon.com/ec2/pricing/on-demand/
- https://aws.amazon.com/blogs/networking-and-content-delivery/exploring-data-transfer-costs-for-aws-network-load-balancers/
- https://aws.amazon.com/cloudfront/pricing/pay-as-you-go/
- https://cloud.google.com/vpc/network-pricing
- https://cloud.google.com/cdn/pricing
- https://azure.microsoft.com/en-us/pricing/details/bandwidth/
- https://azure.microsoft.com/en-us/pricing/details/cdn/
- https://developers.cloudflare.com/r2/pricing/
- https://developers.cloudflare.com/billing/understand/how-charges-accrue/
- https://www.fastly.com/pricing
Three ways to reduce this number
- Raise the CDN cache hit ratio: each 10 points of hit ratio removes 10% of the origin egress.
- Serve large public objects from zero-egress storage or a CDN with no per-GB charge instead of straight from compute.
- Keep chatty services in one availability zone where resilience allows it, and compress responses before they leave.
Use it from code
The same engine is available as a REST endpoint and as an MCP tool named calc_cloud_egress_bandwidth_calculator. Your scenario as an API call:
curl -X POST 'https://api.x12i.com/v1/calc/cloud-egress-bandwidth-calculator' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"input": {
"current_provider": "aws",
"monthly_outbound_tb": 50,
"inter_az_pct": 0,
"inter_region_pct": 0,
"cdn": "none",
"dest_na_eu_pct": 70,
"dest_apac_pct": 20,
"dest_other_pct": 10,
"compare_providers": [
"aws",
"gcp",
"azure",
"cloudflare",
"fastly"
]
},
"options": {
"explain": false
}
}' Schema: GET /v1/calc/cloud-egress-bandwidth-calculator/schema
Frequently asked questions
How much does AWS charge for data transfer out?
Data transfer into AWS is free. Out to the internet from US East, the first 100 GB a month across all AWS services is free, then $0.09 per GB for the next 10,240 GB and $0.085 per GB for the next 40 TB, with lower rates at higher volumes; the full ladder is in the data table on this page. Traffic between availability zones is $0.01 per GB in each direction and traffic to another Region is about $0.02 per GB. Rates vary by Region, and CloudFront has its own ladder with 1 TB a month free.
Is Cloudflare R2 egress really free?
Yes for the egress itself: Cloudflare's R2 pricing states there are no charges for egress bandwidth for any storage class. R2 still bills storage, operations (Class A and Class B requests) and any other metered service you connect to the bucket. That is why this calculator labels Cloudflare's total as egress only and warns that storage and operations are not in it.
What is inter-AZ data transfer and why is it billed?
Availability zones are separate data centres inside one cloud region. Traffic between instances in different zones crosses the provider's network between buildings, so AWS charges $0.01 per GB in each direction and Google Cloud charges the sender $0.01 per GiB, while Azure does not charge today. Chatty services spread across zones for resilience can move more data between zones than they send to users, which is why this calculator takes cross-AZ traffic as a percentage of outbound volume that can exceed 100%.
Does a CDN lower my egress bill?
It can. The CDN bills its own per-GB delivery rate on all traffic, but only cache misses go back to your origin, so a higher hit ratio shrinks the origin egress. Pulling from a provider's own CDN is often free, which makes that provider cheaper; pulling into a different CDN is billed as ordinary internet egress. Use the cache hit ratio range in the chart to see where the saving flattens out.