aws · data-transfer · pricing
AWS Data Transfer Costs: Which Gigabytes You Pay For
By Aakash Verma ·
AWS data transfer costs come down to one question: where did the byte go? Out to the internet it’s $0.09 per GB in US East after the first 100 GB a month. Between two Availability Zones it’s $0.01 per GB in each direction. To another region it’s $0.02 per GB, or $0.01 to Ohio from Virginia. Into AWS, it’s free. And a lot of traffic that teams assume they pay for, like EC2 to S3 in the same region or your origin to CloudFront, costs nothing at all.
The prices below are from the AWS Price List for data transfer (the AWSDataTransfer offer, published September 16, 2026) for US East (N. Virginia) and EU (Frankfurt), which charge the same rates, plus the EC2 On-Demand pricing page, checked November 1, 2026.
The rates that matter
| Where the data goes | Price per GB |
|---|---|
| Into AWS from the internet | $0.00 |
| Out to the internet, first 100 GB a month (all services and regions together) | $0.00 |
| Out to the internet, up to 10 TB | $0.09 |
| Next 40 TB | $0.085 |
| Next 100 TB | $0.07 |
| Above 150 TB | $0.05 |
| Between AZs in one region (also via a public or Elastic IP, or a load balancer) | $0.01 out + $0.01 in |
| US East (N. Virginia) to US East (Ohio) | $0.01 |
| To any other region (Virginia or Frankfurt as the source) | $0.02 |
| EC2 to S3, DynamoDB or SQS in the same region | $0.00 |
| Origin (EC2, S3, ALB) to CloudFront | $0.00 |
The tier is counted per account per month, so a second product in the same account pushes the first one into the cheaper tiers sooner. Nobody plans around that, but it’s why the per-GB rate on two bills from the same company can differ.
The cross-AZ line is the one people misread. The price list entry says $0.010 per GB “in/out/between EC2 AZs”, and AWS bills it on both sides: the instance sending pays $0.01 and the instance receiving pays $0.01. So a gigabyte from your app server in us-east-1a to a database in us-east-1b costs two cents, and the answer coming back costs another two.

A worked example
A hypothetical SaaS in US East: an Application Load Balancer, app servers spread over two AZs, PostgreSQL on RDS in one of them, private subnets behind a NAT gateway, and nightly copies of backups to Oregon.
| Line | Usage | Cost |
|---|---|---|
| Internet out from the load balancer | 3,000 GB, first 100 free, 2,900 × $0.09 | $261.00 |
| App servers to and from the database across AZs | 2,000 GB × $0.02 | $40.00 |
| Backups copied to US West (Oregon) | 1,000 GB × $0.02 | $20.00 |
| NAT gateway data processing | 1,500 GB × $0.045 | $67.50 |
| Total | $388.50 |
The NAT line is not data transfer in AWS’s own price list, it’s a VPC charge ($0.045 per GB processed), but it lands on the same traffic and people look for it in the same place. Traffic that goes through a NAT gateway to the internet pays both: $0.045 for processing and $0.09 for leaving. We went through the gateway itself, hours and all, in AWS NAT gateway cost.
What we’d change, in order
Put CloudFront in front of the load balancer. Origin to CloudFront is free, so the $0.09 line on EC2 goes away and CloudFront’s own pricing takes over: the first 1 TB a month is free, then $0.085 per GB in the US and Europe (CloudFront pricing). For the 3,000 GB above, that’s 1,976 GB × $0.085 = $167.96, plus HTTPS requests at $0.01 per 10,000 after the free 10 million. At 25 million requests that’s $15.00, so $182.96 against $261.00. If the site stays under 10 million requests a month, CloudFront’s $15 Pro flat-rate plan covers far more transfer than this, and the line becomes $15. Our CloudFront pricing calculator does both versions.
Add the free S3 gateway endpoint. In our example, 1,200 of the 1,500 NAT gigabytes are app servers reading and writing S3 in the same region, which is free transfer being charged as NAT processing. A gateway endpoint routes it around the NAT gateway for nothing. The NAT line drops to 300 GB × $0.045 = $13.50.
Stop sending reads across AZs. Half the app-to-database traffic is reads. A read replica in the second AZ, with each app server reading from the replica in its own zone, takes that half off the cross-AZ line: $20.00 saved. The replica isn’t free, so this only pays when the cross-AZ traffic is much bigger than in our example or you wanted the replica anyway. Replication between a Multi-AZ RDS primary and its standby is not billed as data transfer, so don’t count that one.
Leave the backups alone. $20 a month for an off-region copy of your data is cheap insurance. Compressing them before the copy is the only change we’d make.
After the first two changes the example is $256.46 a month instead of $388.50 (CloudFront $182.96, cross-AZ $40.00, backups $20.00, NAT $13.50). With the flat-rate plan instead of pay-as-you-go CloudFront, $88.50.
The European Data Act line
The EC2 pricing page has a sentence most people skip: “EU customers may request reduced data transfer rates for eligible use cases under the European Data Act.” AWS doesn’t publish which use cases qualify. Its global network FAQ only says to contact AWS Support. If you’re an EU company sending a lot of data to another cloud provider as part of running your product, it’s worth a support ticket. Separately, AWS waives data transfer out for customers moving all their data off AWS, which matters if you’re planning a move to a European cloud.
Finding your own numbers
In Cost Explorer, filter on the EC2 service and group by usage type. The lines to look for in US East are DataTransfer-Out-Bytes (to the internet), DataTransfer-Regional-Bytes (across AZs), names like USE1-USW2-AWS-Out-Bytes (Virginia to Oregon) and NatGateway-Bytes. Other regions carry a prefix, like EUC1-DataTransfer-Out-Bytes for Frankfurt. Usage type tells you the path, not the culprit. For that you need VPC Flow Logs, and an afternoon.
To price your own volumes, the AWS data transfer cost calculator takes the four paths above and shows the CloudFront version next to it. Our egress pricing comparison shows what the same terabyte costs on 14 other plans.
If data transfer is one of several lines that grew, the free cloud cost audit ($0, bill lines only, no logins) tells you what we’d cut first. Or we reduce your AWS bill for you: $0 up front, 50% of the verified monthly saving for 6 months, nothing if nothing is saved.
Want us to look at your bill?
No upfront fee: for six months you pay half of what we save you each month, then you keep all of it. Nothing saved, nothing owed.
Also here: Free cloud cost audit ($0) · Cloud cost optimization services: $0 up front · Reduce your startup's AWS bill · Pricing: paid only from verified savings · Move from AWS to a European cloud