New See exactly what you're overpaying AWS in under 60 seconds. Try the Calculator for free →

AWS Data Transfer Costs: How to Cut Your Egress Bill Without Rebuilding Your Stack

Updated June 5, 2026
19 min read
AWS Data Transfer Costs: How to Cut Your Egress Bill Without Rebuilding Your Stack
On this page

AWS data transfer costs are billed the moment data crosses a boundary: out to the internet, between Availability Zones, between Regions, or through specific networking services. Data flowing into AWS is free. Everything flowing out carries a per-GB charge that compounds fast at scale.

For a workload moving 50 TB/month to the internet, that is roughly $2,100/month in egress alone before any optimizations — at standard rates of $0.09/GB for the first 10 TB, dropping to $0.085/GB for the next 40 TB (verify at Amazon EC2 On-Demand Pricing docs, rates change). Add cross-AZ traffic, NAT Gateway processing fees, and inter-region replication, and data transfer frequently accounts for 10-20% of total AWS spend at mid-to-large scale.

This guide covers every pricing dimension, service-specific differences, a decision tree for architecture-level optimization, and how to find these charges in your AWS bill.

What Are AWS Data Transfer Costs?

AWS data transfer costs are the per-gigabyte charges AWS applies whenever data moves across a network boundary into or out of AWS, between Availability Zones, between Regions, or through specific networking services like NAT Gateway or AWS Direct Connect.

Unlike compute or storage costs, which are driven by resource provisioning, data transfer costs are driven purely by traffic volume and the path that traffic takes. Two EC2 instances in the same AZ talking over private IPs generate zero transfer charges. Move one of those instances to a different AZ and every byte between them costs $0.01/GB in each direction. Move it to a different Region and the rate roughly doubles.

AWS meters data transfer at the network layer and reports it as a separate line item in your bill, typically buried inside “EC2-Other” in Cost Explorer rather than called out explicitly. That is why data transfer costs are consistently underestimated: the charge is real, it is continuous, and it does not appear where most engineers expect it.

Three facts define how the billing works:

  • Data in is always free. Uploading data to AWS from the internet, from your data center, or from another cloud provider costs nothing. AWS has no ingress charges.
  • Data out is always charged. Any byte leaving AWS to the internet, to your data center, or to another Region carries a per-GB rate. The rate depends on destination, volume tier, and which service is sending it.
  • Internal traffic charges depend on topology. Traffic within the same AZ using private IPs is free. Traffic crossing AZ boundaries or Region boundaries is metered, even if both endpoints are AWS services you own.

What Counts as an AWS Data Transfer?

AWS meters data transfer at the network boundary level. The four boundaries that generate charges are:

  • Internet egress (Data Transfer Out): Any data leaving AWS to the public internet. This is the largest data transfer cost category for most teams and applies to EC2, S3, RDS, ElastiCache, Lambda, and nearly every other service.
  • Cross-AZ traffic: Data moving between resources in different Availability Zones within the same Region. Charged at $0.01/GB in each direction (verify at AWS docs, rates change). This catches teams off guard when load balancers, databases, and application servers are spread across AZs without AZ-affinity routing.
  • Cross-Region traffic: Data moving between AWS Regions. Generally $0.02/GB per direction for US Regions, with rates varying for Asia Pacific and South America destinations (verify at Amazon docs, rates change).
  • On-premises traffic: Data moving between AWS and your own data center. Rates depend on whether you use the public internet, AWS Direct Connect, or AWS VPN.

One transfer type is always free: data transferred into AWS (ingress) from the internet. AWS does not charge for uploads.

AWS Data Transfer Pricing Table by Scenario (2026)

All rates are approximate. Verify current pricing at Amazon docs and individual service pricing pages, rates change.

Transfer Type Direction Rate (per GB) Notes
Data In from Internet Inbound Free All services
Data Out to Internet Outbound $0.09 (first 10 TB/mo) Tiered: drops to $0.085 for 10-50 TB, $0.07 for 50-150 TB, $0.05 above 150 TB
Same AZ, Same Service Either Free EC2-to-EC2, S3-to-EC2 same AZ
Cross-AZ (same Region) Either $0.01 Charged each direction
Cross-Region (US) Either ~$0.02 Varies by region pair
Cross-Region (US to EU) Either ~$0.02 Verify per region pair
Cross-Region (US to APAC) Either ~$0.08-$0.09 Higher for distant regions
AWS to AWS (same Region) Either Free Intra-region, same AZ
Direct Connect (private) Outbound $0.02 (US) Lower than internet egress
Direct Connect (internet) Outbound Standard internet rates
VPC Peering (same Region) Either $0.01 (cross-AZ) Free if same AZ
VPC Peering (cross-Region) Either Standard cross-region rates
Transit Gateway (same Region) Either $0.01 processed Plus attachment fee
NAT Gateway Outbound $0.045/GB processed Separate from EC2 egress
CloudFront Outbound $0.0085-$0.012/GB (US/EU) Significantly cheaper than EC2 egress
S3 to EC2 (same Region) Inbound to EC2 Free One of the most searched questions
S3 Transfer Acceleration Outbound +$0.04-$0.08/GB on top of standard Only worth it for long-distance uploads

Cross-AZ Data Transfer: The Hidden Line Item Most Teams Miss

Cross-AZ traffic is charged at $0.01/GB each direction, meaning a round trip costs $0.02/GB. That sounds trivial until you map it to a real workload.

A three-tier application running 10,000 requests per second, with an average response payload of 10 KB, moving data between an Application Load Balancer in one AZ and EC2 instances in another, generates roughly:

  • 10,000 requests/sec x 10 KB = 100 MB/sec of cross-AZ traffic
  • 100 MB/sec x 3,600 seconds x 730 hours/month = approximately 263 TB/month
  • 263 TB x $0.01/GB (each direction) x 2 (round trip) = roughly $5,260/month in cross-AZ traffic alone

This is cross-AZ data transfer at production scale. The fix is AZ-affinity routing: ensure your load balancer uses cross-zone load balancing awareness and that EC2 instances, RDS read replicas, and ElastiCache nodes used by an instance are in the same AZ where possible.

AWS now enables cross-zone load balancing to be disabled on Application Load Balancers and Network Load Balancers independently. Disabling it routes traffic to the same AZ as the original request. For stateless workloads, this is often the single fastest data transfer cost reduction with zero performance impact.

AWS ALB cross-zone load balancing configuration toggle in EC2 console

Service-by-Service Egress Cost Breakdown

Data transfer pricing is not uniform across AWS services. Here is how the major services handle internet egress:

EC2 Data Transfer Costs

Standard tiered pricing: $0.09/GB for the first 10 TB/month, dropping progressively for higher volumes. EC2 instances in the same AZ transfer data to each other free using private IP addresses. Using public or Elastic IP addresses for same-Region EC2 communication triggers $0.01/GB each direction even within the same AZ, this is a common misconfiguration. Always use private IP addresses for intra-VPC communication.

S3 Data Transfer Costs

S3 to the internet: same tiered rates as EC2 egress ($0.09/GB first 10 TB). S3 to EC2 in the same Region: free. S3 to EC2 in a different Region: standard cross-region rates. S3 to CloudFront: free (this is the correct architecture for S3-served content at scale). S3 Transfer Acceleration adds $0.04-$0.08/GB for faster long-distance uploads using AWS edge locations.

RDS Data Transfer Costs

RDS internet egress follows the same tiered rates. Cross-AZ replication traffic within a Multi-AZ RDS deployment is free, AWS does not charge for the synchronous replication between primary and standby. Cross-Region RDS read replicas do incur cross-region data transfer charges on the replication stream.

Lambda Data Transfer Costs

Lambda charges for data transferred out to the internet at standard EC2 egress rates. Lambda to services in the same Region over private endpoints is free. Lambda calling services across Regions are charged at cross-region rates.

ElastiCache Data Transfer Costs

ElastiCache follows standard cross-AZ rates for traffic between nodes in different AZs. Redis cluster mode with cross-AZ replicas will generate $0.01/GB cross-AZ charges on every write replication. Use same-AZ reader endpoints where read latency is not critical.

NAT Gateway: The Surprise Multiplier

NAT Gateway charges $0.045/GB for every byte it processes, this is in addition to, not instead of, EC2 internet egress charges. An EC2 instance routing outbound traffic through a NAT Gateway is paying $0.045/GB (NAT processing) + $0.09/GB (EC2 egress) = $0.135/GB total for the first 10 TB.

For workloads accessing AWS services from private subnets (S3, DynamoDB, SSM, CloudWatch), replacing NAT Gateway routing with VPC Gateway Endpoints eliminates the NAT Gateway processing charge entirely. VPC Gateway Endpoints for S3 and DynamoDB are free and require only a route table update.

VPC console screen for creating an S3 Gateway Endpoint with route table association

How to Find Data Transfer Costs in Your AWS Bill

AWS Cost Explorer labels data transfer charges by their “operation” dimension. The most common operation codes you will see:

  • DataTransfer-Out-Bytes: Internet egress
  • InterZone-In and InterZone-Out: Cross-AZ traffic
  • DataTransfer-Regional-Bytes: Cross-Region traffic
  • NatGateway-Bytes: NAT Gateway processing
  • CloudFront-Out-Bytes: CloudFront egress

To isolate data transfer spend in Cost Explorer:

  1. Open AWS Cost Explorer
  2. Set the date range to the last 3 months
  3. Group by “Service” — look for “EC2-Other” which contains most data transfer charges
  4. Then filter to “EC2-Other” and group by “Usage Type” to see the per-operation breakdown
  5. Filter further by “Operation” and select data transfer operations to see by Region or AZ

“EC2-Other” is where AWS buries most data transfer charges — it is not a separate service line item by default, which is why it is consistently underestimated.

AWS Cost Explorer showing EC2-Other data transfer breakdown by usage type and operation

VPC Peering vs PrivateLink vs Transit Gateway: What Actually Costs Less?

When connecting workloads across VPCs or accounts, your choice of connectivity method directly affects data transfer costs.

Feature VPC Peering AWS PrivateLink Transit Gateway
Same-AZ traffic Free $0.01/GB processed $0.01/GB processed
Cross-AZ traffic $0.01/GB each direction $0.01/GB processed $0.01/GB processed
Cross-Region traffic Standard cross-region rates Not available cross-region Standard cross-region rates
Setup cost Free Endpoint: ~$7.20/mo per AZ $0.05/hr per attachment
Best for Simple 1:1 VPC connectivity Service-to-service (hub/spoke) Complex multi-VPC routing
Routing Non-transitive Transitive Transitive

For simple two-VPC connectivity in the same AZ, VPC Peering is the lowest-cost option. For larger architectures where many services need to reach a shared endpoint, PrivateLink and Transit Gateway have higher per-GB costs but lower operational overhead. For high-throughput same-AZ workloads, VPC Peering with same-AZ placement dominates on cost.

AWS Direct Connect vs Internet Egress: Does It Save on Data Transfer?

Direct Connect reduces internet egress rates. For US Regions, Direct Connect data transfer out over a private virtual interface costs $0.02/GB vs $0.09/GB for internet egress, a 78% reduction on the egress rate (verify at AWS Direct Connect pricing, rates change).

The break-even calculation:

  • Direct Connect 1 Gbps dedicated connection: approximately $216/month (port charge, US) + partner/colocation fees
  • Egress savings: ($0.09 – $0.02) = $0.07/GB saved
  • Break-even volume: $216 / $0.07 = approximately 3 TB/month

If your workload consistently moves more than 3-4 TB/month between your data center and AWS, Direct Connect typically pays for itself on egress savings alone, before factoring in latency and reliability improvements.

AWS Data Transfer Cost Reduction: Decision Tree

Use this framework to evaluate your current architecture against cost-reduction options.

START: Is your data transfer cost above $500/month?

|

YES –> What is the largest line item?

|

+– Internet Egress (DataTransfer-Out-Bytes)

|   |

|   +– Is this serving web content or assets?

|   |   YES –> Move to CloudFront. S3-to-CloudFront is free. CloudFront egress ~$0.0085/GB vs $0.09/GB EC2.

|   |   NO  –> Is traffic going to on-premises?

|   |           YES –> Evaluate Direct Connect (break-even ~3-4 TB/month).

|   |           NO  –> Review application-level compression and caching.

|

+– Cross-AZ (InterZone-In / InterZone-Out)

|   |

|   +– Are your ALB/NLB instances spread across AZs?

|   |   YES –> Disable cross-zone load balancing or implement AZ-affinity.

|   |   NO  –> Check if EC2 instances use public IPs for same-Region communication.

|   |           YES –> Switch to private IP addressing within VPC.

|

+– NAT Gateway (NatGateway-Bytes)

|   |

|   +– What is traffic accessing? AWS services (S3, DynamoDB, SSM)?

|   |   YES –> Replace with VPC Gateway Endpoints (free for S3 and DynamoDB).

|   |   NO  –> Is it internet access from private subnets?

|   |           YES –> Consider NAT Instance for lower-volume workloads or NAT Gateway in each AZ.

|

+– Cross-Region (DataTransfer-Regional-Bytes)

|

+– Is this replication traffic?

|   YES –> Evaluate necessity. Can workloads colocate?

|   NO  –> Is this serving global users?

|           YES –> Route through CloudFront edge instead of origin-to-user.

Worked Example: A 3-Tier Web Application at Scale

Setup: E-commerce platform, us-east-1 Region, 3 AZs, 50,000 active users/day.

  • Application Load Balancer serving 100 GB/day to internet users
  • EC2 fleet (10 instances, mixed AZs) serving app logic
  • RDS Multi-AZ for transactions
  • S3 storing product images (500 GB served/day)
  • ElastiCache Redis cluster (3 nodes, 3 AZs)

Before optimization — monthly data transfer bill estimate:

Item Volume Rate Monthly Cost
ALB internet egress 3 TB $0.09/GB (first 10 TB) $270
S3 internet egress 15 TB $0.085/GB (10-50 TB tier) $1,275
Cross-AZ EC2-to-EC2 5 TB $0.01/GB x2 $100
NAT Gateway (SSM/CW access) 2 TB $0.045/GB $90
ElastiCache cross-AZ replication 1 TB $0.01/GB x2 $20
Total ~$1,755/month

After optimization:

  • Move S3 content behind CloudFront: S3-to-CloudFront free, CloudFront egress $0.0085/GB
  • Add VPC Gateway Endpoint for S3: eliminates NAT Gateway on S3 API calls
  • Enable AZ-affinity on ALB: reduces cross-AZ EC2 traffic by ~70%
  • Place ElastiCache readers in same AZ as EC2 app servers
Item Volume Rate Monthly Cost
ALB internet egress 3 TB $0.09/GB $270
CloudFront egress (replaces S3 direct) 15 TB $0.0085/GB $127.50
Cross-AZ EC2-to-EC2 (reduced) 1.5 TB $0.01/GB x2 $30
NAT Gateway (reduced, VPC endpoints for S3/DDB) 0.5 TB $0.045/GB $22.50
ElastiCache cross-AZ (same-AZ placement) 0.2 TB $0.01/GB x2 $4
Total ~$454/month

Estimated saving: ~$1,300/month (~74% reduction) from architecture changes alone. All rates are approximate. Verify at aws.amazon.com/pricing — rates change.

Ready to see your actual number? Run your free AWS savings estimate in 60 seconds with Usage.ai Savings Calculator →

How to Use AWS Cost Explorer to Investigate Data Transfer Costs

AWS Cost Explorer is the right starting point for a data transfer audit. Here is the exact workflow:

Step 1: Navigate to AWS Cost Explorer in the AWS Console.

Step 2: Set granularity to “Monthly” and set date range to 3 months.

Step 3: Under “Group by,” select “Service.” Identify the “EC2-Other” line item — this typically contains the majority of data transfer charges.

Step 4: Filter to “EC2-Other” only. Change “Group by” to “Usage Type.”

Step 5: Look for usage types containing “DataTransfer,” “InterZone,” “Regional,” or “NatGateway.” These identify where bytes are moving and at what rate.

Step 6: For deeper analysis, use the AWS Cost and Usage Report (CUR). The lineitem_usagetype column contains the operation codes. Query with Athena to break down by resource ID and identify the specific EC2 instances, NAT Gateways, or services generating the most transfer.

The AWS Pricing Calculator lets you model architecture changes before implementing them. Enter current and projected data volumes per transfer type to estimate savings before committing to changes.

AWS Cost Explorer grouped by usage type within EC2-Other showing data transfer operation breakdown

AWS CloudFront vs Direct EC2/S3 Egress: When Does CloudFront Win?

For content served to global users, CloudFront reduces internet egress costs in two ways: the egress rate is lower ($0.0085/GB from US/EU edge locations vs $0.09/GB from EC2), and origin-to-CloudFront transfer is free when the origin is an AWS service (S3, EC2, ALB) in the same Region.

The math for a media company serving 100 TB/month:

  • EC2/S3 direct egress: 100 TB x $0.07/GB (50-150 TB tier) = $7,000/month
  • CloudFront egress: 100 TB x $0.0085/GB (US/EU) = $850/month

That is an $6,150/month saving at 100 TB, before factoring in CloudFront’s caching hit rate reducing origin traffic. Rates vary by CloudFront edge location.

CloudFront is not always the answer. For API traffic with low cacheability, high cache miss rates eliminate the savings advantage. For small-volume workloads under 1 TB/month, the operational overhead may not justify the savings.

How Compute Commitment Strategy Connects to Data Transfer Costs

Reducing data transfer costs and reducing compute costs are related — but not through the same lever.

When you restructure your architecture to reduce cross-AZ traffic (same-AZ placement), your EC2 fleet size per AZ increases while total instance count may stay the same. When you add CloudFront, your origin EC2 load drops. These architecture changes alter your compute baseline and your compute baseline is what determines how much you can save through AWS Savings Plans and Reserved Instances.

A more stable, predictable compute baseline is easier to commit against. Teams that have done a data transfer optimization pass typically see their EC2 utilization patterns stabilize, which makes commitment purchasing recommendations more accurate.

Usage.ai automates commitment purchasing for EC2, RDS, Lambda, and other services — refreshing recommendations every 24 hours vs the 72+ hour refresh cycle of AWS Cost Explorer’s native tools. At $6-12K/day in uncovered compute spend, a 3-day lag in recommendations compounds to $18K+ per refresh cycle before adjustments are made. After you’ve optimized your data transfer architecture, committing the stabilized compute baseline through an automated platform captures savings of 30-50% on top of the transfer cost reductions you’ve already achieved.

Usage.ai Insured Flex Commitments carry no multi-year lock-in. Commitments adjust quarterly. Scale down? No penalty. Underutilized? Cashback paid in real money — not credits. Every commitment purchased through the platform includes a buyback guarantee.

This matters specifically for teams who are mid-optimization: your compute baseline is still shifting as you move workloads to the same AZ, add CloudFront, and remove NAT Gateway traffic. A platform that penalizes you for changing your commitment size is the wrong tool when your architecture is in flux. See how Usage.ai handles dynamic workloads.

Common Data Transfer Cost Mistakes

  • Using public IPs for intra-VPC communication. EC2 instances communicating via public or Elastic IP addresses within the same Region trigger $0.01/GB charges even in the same AZ. Use private IP addresses for all intra-VPC traffic.
  • NAT Gateway for AWS service access. Routing S3, DynamoDB, SSM, CloudWatch, or SQS traffic through a NAT Gateway costs $0.045/GB in processing fees that are completely avoidable with VPC Gateway or Interface Endpoints.
  • Cross-Region replication without traffic modeling. Multi-Region active-active architectures, DynamoDB Global Tables, S3 Cross-Region Replication, all generate cross-region data transfer charges that need to be explicitly budgeted.
  • Ignoring ElastiCache cross-AZ replication costs. Redis clusters with replicas in multiple AZs generate $0.01/GB in replication traffic. For read-heavy workloads, placing reader endpoints in the same AZ as the application instances eliminates this cost.

Multi-AZ RDS confusion. Multi-AZ RDS replication between primary and standby is free. Cross-Region read replica replication is not. These are different features and carry different billing treatments.

 

You’re Overpaying AWS. See by How Much in 60 Seconds.Upload your AWS bill and get your exact overspend number for free. No account access, or commitment required.FIND MY SAVINGS

 

Frequently Asked Questions

1. How much does AWS data transfer cost per GB in 2026?

AWS data transfer out to the internet starts at $0.09/GB for the first 10 TB/month, dropping to $0.085/GB for 10-50 TB, $0.07/GB for 50-150 TB, and $0.05/GB above 150 TB. Cross-AZ traffic within the same Region costs $0.01/GB each direction. Cross-Region traffic between US Regions costs approximately $0.02/GB per direction. All figures are approximate — verify at aws.amazon.com/ec2/pricing/on-demand, as rates change.

 

2. Is data transfer between EC2 and S3 in the same Region free?

Yes. Data transferred from S3 to EC2 instances in the same AWS Region is free, regardless of whether they are in the same or different AZs. Data transferred from EC2 to S3 in the same Region is also free. Charges apply when data leaves the Region or when S3 serves content directly to the public internet.

 

3. What is the difference between cross-AZ and cross-Region data transfer costs?

Cross-AZ traffic (within the same AWS Region) costs $0.01/GB in each direction, so a round trip costs $0.02/GB. Cross-Region traffic between US Regions costs approximately $0.02/GB per direction. Cross-Region rates to APAC or South America are higher, often $0.08-$0.09/GB. Cross-AZ charges are the most common surprise on AWS bills because the rate seems small but volumes compound quickly at scale.

 

4. Does AWS charge for data transfer within the same Availability Zone?

No. Data transferred between AWS resources within the same Availability Zone using private IP addresses is free. This is the architectural principle behind AZ-affinity routing: keep communication within a single AZ to eliminate cross-AZ charges. The exception is communication using public or Elastic IP addresses, which triggers per-GB charges even within the same AZ.

 

5. How do I reduce NAT Gateway data transfer costs?

Replace NAT Gateway traffic destined for AWS services with VPC Endpoints. S3 and DynamoDB support free Gateway Endpoints that require only a route table change. Other AWS services (SSM, CloudWatch, SQS, etc.) support Interface Endpoints at ~$7.20/month per AZ per endpoint, typically cheaper than NAT Gateway processing fees if traffic volumes are significant. For internet-bound traffic from private subnets, the NAT Gateway charge is unavoidable but can be reduced by optimizing the applications generating outbound requests.

 

6. Is AWS Direct Connect cheaper than internet egress for data transfer?

For volumes above 3-4 TB/month between your data center and AWS, Direct Connect usually costs less than internet egress. Direct Connect data transfer out costs $0.02/GB (US private virtual interface) vs $0.09/GB for internet egress — a 78% rate reduction. A 1 Gbps dedicated connection costs approximately $216/month in port charges, plus partner and colocation fees. The per-GB savings break even at roughly 3-4 TB/month of outbound traffic.

 

7. How do I find data transfer costs in AWS Cost Explorer?

In Cost Explorer, group by “Service” and look for “EC2-Other” — this contains most data transfer charges. Filter to EC2-Other and then group by “Usage Type” to see individual operation codes: DataTransfer-Out-Bytes (internet egress), InterZone-In/Out (cross-AZ), DataTransfer-Regional-Bytes (cross-Region), and NatGateway-Bytes (NAT Gateway processing). For resource-level attribution, enable the AWS Cost and Usage Report and query it with Amazon Athena using the lineitem_usagetype and lineitem_resourceid columns.

 

8. Does CloudFront reduce AWS data transfer costs?

Yes, significantly for high-volume content delivery. CloudFront egress from US and European edge locations costs $0.0085-$0.012/GB vs $0.09/GB for EC2 direct egress. Transfer from S3, EC2, or ALB origins in the same Region to CloudFront is free. For workloads serving 10+ TB/month to internet users, CloudFront typically reduces data egress costs by 85-90% compared to direct EC2 or S3 egress.

Cut cloud cost with automation
Latest from our blogs