CostMonStart free

Calculator

What is AWS data transfer actually costing you?

Internet egress, cross-AZ, NAT gateway, inter-region, and public IPv4: enter your monthly volumes and see the total, a ranked breakdown of where the money goes, and a computed fix list with dollar deltas. Every rate below is us-east-1, verified against AWS's own pricing data.

Rates verified us-east-1 only — other regions differ, see each source link below

Free calculator

Price your own volumes

Enter your monthly volumes for each path below. Everything computes in your browser — nothing you type here is sent anywhere. Rates are us-east-1; see the full rate card below the calculator.

Data leaving to the public internet — the first 100 GB/mo is free, aggregated across your whole account.

GB actually moved between Availability Zones — billed once as egress and once as ingress.

Bytes that pass through a NAT gateway — billed on top of any standard transfer charge.

Each one bills a flat hourly charge regardless of traffic.

Billed source-side only — the destination region's inbound leg is $0.00.

Billed hourly whether an address is actively serving traffic or sitting idle.

Your estimateus-east-1
Live
Estimated monthly cost$138
Annualized
$1,661

Where the money goes

  • NAT gateway$79.20
  • Internet egress$36.00
  • Public IPv4 addresses$18.25
  • Cross-AZ transfer$4.00
  • Inter-region transfer$1.00
Start freeDecode your AWS bill
Fix listRanked by monthly savings
  • Release idle public IPv4 addresses−$18.25/mo

    Every public IPv4 address bills the same $0.005/hour whether it's serving traffic or sitting idle after a decommission. Release whichever ones you're not using.

  • Move S3/DynamoDB traffic off NAT onto a free gateway endpoint−$13.50/mo

    Gateway VPC endpoints for S3 and DynamoDB carry no hourly or per-GB charge. Every GB of that traffic routed around the NAT gateway instead avoids its $0.045/GB processing charge.

  • Colocate chatty services in one Availability Zone−$4.00/mo

    Same-AZ traffic over private IPs is free. Every GB that stops crossing an AZ boundary avoids $0.02/GB moved (billed once in, once out).

  • Front internet egress with CloudFront−$2.00/mo

    CloudFront's per-GB data-transfer rate undercuts direct internet egress at every volume tier, and a cache hit avoids origin egress entirely. Fetches from an AWS origin back to CloudFront are $0.00/GB.

Estimate only, based on the volumes you enter and us-east-1 list prices verified against AWS's Price List Bulk API — not a bill. CostMon surfaces what your stack actually costs, continuously, from your real, connected spend.

Rate card

Every AWS data transfer path, priced

us-east-1, verified against AWS's first-party Price List Bulk API — not blog hearsay. Each row links to its official AWS source.

AWS data transfer paths, their rate, billed direction, usage-type code, and source
PathRateBilled directionUsage typeSource
Internet data transfer in$0.00/GBIngress — Always. Inbound transfer to an AWS region is never billed.DataTransfer-In-BytesAWS docs →
Global data-transfer-out free tierFirst 100 GB/mo freeEgress — Aggregated across every AWS service and region in the account, not granted per service.Global-DataTransfer-Out-BytesAWS docs →
Internet data transfer out$0.090/GB ≤10 TB · $0.085/GB next 40 TB · $0.070/GB next 100 TB · $0.050/GB >150 TBEgressDataTransfer-Out-BytesAWS docs →Decode DataTransfer-Out-Bytes on your bill →
Cross-AZ (regional) transfer$0.010/GB, each direction ($0.02/GB total moved)Both directions billed: sender's egress and receiver's ingressDataTransfer-Regional-BytesAWS docs →Decode DataTransfer-Regional-Bytes on your bill →
PrivateLink / Transit Gateway / Client VPN cross-AZ transfer$0.00/GBBoth directions — Only for VPC interface endpoint (PrivateLink), Transit Gateway, and Client VPN traffic, waived since 2022-04-01. General EC2/RDS/EKS cross-AZ traffic is NOT covered by this waiver and still bills under DataTransfer-Regional-Bytes above.{Region}-DataTransfer-xAZ-In/Out-BytesAWS docs →
Inter-region transfer out$0.010–$0.020/GB depending on destination regionEgress, source-side only (the destination region's inbound leg is $0.00){Source}-{Destination}-AWS-Out-BytesAWS docs →Decode inter-region transfer on your bill →
NAT gateway$0.045/hour per gateway + $0.045/GB processedProcessing fee, on top of any standard data-transfer charge the same bytes already incurNatGateway-Hours / NatGateway-BytesAWS docs →Decode NatGateway-Bytes on your bill →
Public IPv4 address$0.005/hour per addressFlat holding fee — Never. Billed identically whether the address is in-use or idle.PublicIPv4:InUseAddressAWS docs →Decode PublicIPv4:InUseAddress on your bill →
VPC interface endpoint (PrivateLink)$0.01/hour per AZ + $0.01/GB processedProcessing feeVpcEndpoint-Hours / VpcEndpoint-BytesAWS docs →Decode VPC interface endpoints on your bill →
Gateway VPC endpoint (S3, DynamoDB)$0.00No charge — Always. Unlike interface endpoints, gateway endpoints carry no hourly or per-GB fee.(not billed, no usage-type string)AWS docs →
Transit Gateway$0.05/hour per attachment + $0.02/GB processedProcessing fee, independent of the inter-AZ waiver aboveTransitGateway-Hours / TransitGateway-BytesAWS docs →Decode TransitGateway-Bytes on your bill →
CloudFront (US price class)$0.085/GB ≤10 TB, tapering to $0.020/GB at high volume; AWS-origin fetch $0.00/GBEgress, at rates below direct internet egress; origin fetch from an AWS origin is freeUS-DataTransfer-Out-BytesAWS docs →Decode CloudFront data transfer on your bill →

About AWS data transfer pricing

Why data transfer is the least understood line on an AWS bill

Compute and storage scale with resources someone deliberately provisioned: an instance, a volume, a database. Data transfer scales with application behavior instead: a chatty microservice mesh, a new public API, a cross-region replica, a NAT gateway on the default egress path. Nobody decided to spend more on data transfer; the architecture just moved more bytes.

That's what makes it CostMon's exact kind of problem: invisible spend that compounds silently until the invoice arrives, with no single obvious decision point to point back to.

How the calculator works

Every field below maps to one of the rate-card paths further down this page. Internet egress applies the 100 GB global free tier first, then the four volume tiers to whatever's left. Cross-AZ, NAT, inter-region, and public IPv4 each use their own flat or tiered rate. The total is the sum of all five, and the breakdown ranks each path by its monthly dollar contribution so the biggest lever is always at the top.

The fix list only shows a recommendation when it applies to what you entered: zero NAT traffic means no gateway-endpoint suggestion. Every dollar figure is computed from the same functions as the total, not a separate estimate.

The traps

The non-obvious mistakes that cost real money

Cross-AZ is billed twice, not once

AWS meters DataTransfer-Regional-Bytes on both legs of a cross-AZ transfer: the sender's outbound byte and the receiver's inbound byte are each billed at $0.010/GB. One gigabyte that moves from an instance in AZ-a to an instance in AZ-b costs $0.020, not $0.010. The flat "$0.01/GB" headline number hides that detail.

The $0.00 xAZ-In/Out-Bytes row is not "cross-AZ is free"

us-east-1 shows two different cross-AZ usage types side by side: DataTransfer-Regional-Bytes at $0.010/GB, and {Region}-DataTransfer-xAZ-In/Out-Bytes at $0.00/GB. Reading the second row and concluding cross-AZ transfer is free is a real, expensive mistake.

The $0.00 rate is a narrow waiver, effective 2022-04-01, that applies only to traffic through a VPC interface endpoint (PrivateLink), a Transit Gateway, or a Client VPN endpoint. General EC2, RDS, and EKS cross-AZ traffic (the kind most teams have) gets none of it and still bills under the $0.010/GB row above.

A NAT gateway double-charges every byte

NAT gateway data processing is $0.045/GB, charged on top of whatever standard data-transfer rate the same bytes would incur anyway: internet egress, inter-region, or otherwise. A gigabyte of internet-bound traffic through a NAT gateway pays both the $0.045/GB processing fee and the internet egress rate, plus the gateway's flat $0.045/hour uptime charge regardless of traffic.

Inter-region transfer is billed source-side only

AWS emits two usage-type lines for every inter-region transfer: an outbound line on the sending region's bill and an inbound line on the receiving region's bill. Only the outbound line carries a charge; the inbound line is always $0.00. That's why the team receiving cross-region replication or read-replica traffic never sees the cost. It never appears on their side of the account.

The 100 GB free tier is global, not per-service

The free tier is a single 100 GB/mo allowance aggregated across every AWS service and every region in the account, not 100 GB per service and not per region. It masks a growing data-transfer problem entirely at small scale, then disappears the moment aggregate usage crosses the line, with no gradual ramp to signal it's about to happen.

Egress hides inside "EC2-Other" in Cost Explorer

Cost Explorer's default "Service" grouping rolls data transfer, EBS, and several other EC2-adjacent charges into a single "EC2-Other" bucket. A data-transfer spike then appears as a vague, undifferentiated increase in a line item that doesn't say "data transfer" anywhere in its name. Group by Usage type instead of Service to see it directly.

FAQ

Common questions about AWS data transfer costs

Is data transfer into AWS free?

Yes. Data transfer from the public internet into an AWS region is always $0.00/GB, and the inbound leg of an inter-region transfer is also $0.00. Only the sending side of a transfer (internet egress out, or the outbound leg of an inter-region transfer) carries a charge.

Why does moving 1 GB between two Availability Zones cost $0.02 instead of $0.01?

AWS bills DataTransfer-Regional-Bytes on both legs of the move: the sender's outbound byte at $0.010/GB and the receiver's inbound byte at another $0.010/GB. The $0.01/GB headline rate is per direction, not per gigabyte moved.

Is cross-AZ traffic free if I see a $0.00 xAZ-In/Out-Bytes line on my bill?

No. That $0.00 rate is a narrow waiver for VPC interface endpoint (PrivateLink), Transit Gateway, and Client VPN traffic only, in effect since 2022-04-01. General EC2, RDS, and EKS cross-AZ traffic still bills under the separate DataTransfer-Regional-Bytes usage type at $0.010/GB per direction.

Why is my NAT gateway bill so much higher than I expected?

A NAT gateway bills three ways at once: a flat $0.045/hour uptime charge per gateway, a $0.045/GB processing charge for every byte that passes through it, and then whatever standard data-transfer rate that traffic would have incurred anyway. Routing S3/DynamoDB traffic through a free gateway VPC endpoint instead removes it from the NAT gateway entirely.

Does the 100 GB free tier reset per AWS service?

No. It's a single 100 GB/mo allowance aggregated across every AWS service and every region in the account, not 100 GB per service. That's why it masks a growing data-transfer problem at small scale and then disappears all at once as usage grows.

Why can't I find data transfer charges in AWS Cost Explorer?

Cost Explorer's default "Service" grouping rolls data transfer into a catch-all "EC2-Other" bucket alongside several other charges, so it never appears as its own labeled line. Switch "Group by" to Usage type instead of Service to see internet egress, cross-AZ, NAT, and inter-region transfer as their own distinct lines.

Does CostMon replace calculating this by hand every month?

That's the point of it. CostMon pulls these same usage-type-level records automatically, normalizes them alongside the rest of your cloud and AI spend, and alerts you before a data-transfer path like an unbalanced NAT gateway or a new cross-region replica turns into a surprise on the invoice.

The meter you don't watch still grows.

Waste rarely hides in the service you check every week. CostMon watches every meter on your stack, including the ones you forgot were running.

Esc