Amazon S3 egress cost
S3 has no separate egress meter: data transfer out of S3 to the internet is billed on the standard AWS tiers, $0.09/GB for the first 10 TB after a 100 GB free allowance. What makes S3 different is which paths are free, which cross a region, and how to keep buckets off the NAT Gateway.
How much does S3 egress cost?
Serving data out of S3 to the internet costs $0.09/GB for the first 10 TB each month after the 100 GB free allowance, then $0.085/GB to 50 TB, $0.07/GB to 150 TB, and $0.05/GB above that. So 1 TB/month out of S3 costs $83.16, 10 TB costs $912.60, and 50 TB costs $4,394.70.
These are the same tiers as EC2 and every other AWS service, because there is no separate S3 bandwidth meter. The savings on S3 come from the free paths, not a lower rate: S3 to CloudFront and S3 to same-region services are both free.
Model your S3 volume below ↓, or see the full AWS data transfer reference → and CloudFront vs S3 breakeven →.
US regions · standard egress · excludes requests & cross-region
[01]Every S3 data path, and what it costs
The rate is only half the story with S3. The bigger lever is which direction the bytes go: three of the six paths below are free, and routing through a NAT Gateway instead of a VPC endpoint is the most common avoidable charge.
| Data path | Rate | What to know |
|---|---|---|
| S3 out to the internet | $0.09/GB start | Standard tiered egress after 100 GB free. The only path most people mean by S3 egress. |
| S3 to CloudFront (same account) | Free | No S3 transfer charge. CloudFront then bills its own outbound rate. |
| S3 to EC2 / services, same region | Free | No per-GB charge. Use a VPC Gateway Endpoint to keep it off NAT Gateway. |
| S3 cross-region (replication) | $0.02/GB | Inter-region transfer, plus storage on both sides and a request fee per object. |
| S3 Transfer Acceleration | +$0.04-0.08/GB | Edge-routed surcharge on top of transfer: $0.04 US/EU/Japan edges, $0.08 others. |
| S3 via VPC Gateway Endpoint | Free | No hourly and no data-processing fee for S3 and DynamoDB gateway endpoints. |
Standard internet egress verified from AWS on-demand data transfer pricing; S3-to-CloudFront, same-region, and gateway-endpoint free paths from the S3 pricing page.
[02]Calculate your S3 egress
Enter monthly S3 data transfer out to the internet. The tier math is identical to standard AWS egress; every GB is billed at the rate of the band it falls into.
Standard internet egress · US regions · excludes S3 requests, cross-region, and Transfer Acceleration
[03]Worked example: 10 TB / month static assets
A media site serving 10 TB / month of images and downloads. Direct from S3 to the internet, the bill is $912.60. Front it with CloudFront and the S3-to-CloudFront hop is free, so you only pay CloudFront’s cheaper rate on a larger free tier.
CloudFront wins on rate and on its 1 TB free tier; the gap widens at higher volume and with cache hits.
S3 egress is one line of the AWS transfer bill
The same tiers apply to EC2, RDS, and Lambda, and NAT Gateway plus cross-AZ fees usually add more than the headline egress. See the full AWS reference, or compare S3 egress against zero-egress object storage like Cloudflare R2.
[04]Frequently asked
Q.01How much does S3 egress cost?
›
Amazon S3 data transfer out to the internet uses the standard AWS internet egress tiers: $0.09/GB for the first 10 TB per month, $0.085/GB for the next 40 TB, $0.07/GB for the next 100 TB, and $0.05/GB above 150 TB, after a 100 GB monthly free allowance aggregated across all AWS services and regions. So serving 1 TB/month out of S3 costs $83.16, 10 TB costs $912.60, and 50 TB costs $4,394.70. S3 to CloudFront in the same account and S3 to any AWS service in the same region are both free.
Q.02Is S3 to CloudFront transfer free?
›
Yes. Data transfer from an S3 bucket to a CloudFront distribution in the same AWS account is free of AWS data transfer charges. CloudFront then applies its own outbound pricing ($0.085/GB for the first 10 TB in North America and Europe after a 1 TB free tier), which is slightly cheaper than direct S3 egress at scale and comes with a much larger free allowance. Putting CloudFront in front of S3 is the standard pattern for cost-optimised content delivery.
Q.03Is S3 to EC2 in the same region free?
›
Yes. Data transferred from an S3 bucket to any AWS service, including EC2, in the same AWS Region is free. There is no per-GB charge for that path. Using a VPC Gateway Endpoint for S3 keeps that traffic on the AWS private network at no hourly or data-processing cost, and also avoids routing S3 traffic through a NAT Gateway, which would otherwise charge $0.045/GB. The egress charge only applies when data leaves AWS to the internet or crosses a region.
Q.04How much does S3 cross-region replication cost in data transfer?
›
S3 Cross-Region Replication is billed at the inter-region data transfer rate of $0.02/GB for the copied data, plus storage on both the source and destination buckets and a replication request fee per object. It is not internet egress, so the 100 GB free tier does not offset it. Replicating 10 TB/month across regions adds roughly $205/month in transfer alone, before the duplicated storage. Same-Region Replication has no inter-region transfer charge but still doubles storage.
Q.05What does S3 Transfer Acceleration cost?
›
S3 Transfer Acceleration routes uploads and downloads through CloudFront edge locations and adds a per-GB fee on top of standard data transfer: $0.04/GB when the edge location used is in the United States, Europe, or Japan, and $0.08/GB for other edge locations. That surcharge is in addition to the normal S3 request and transfer pricing, so it only pays off when the latency improvement is worth the premium.
Q.06Does the AWS free tier reduce S3 egress cost?
›
Yes. The 100 GB per month of free outbound data transfer to the internet is aggregated across all AWS services and regions, so S3 egress draws from the same allowance as EC2, RDS, and Lambda. It is always-free, not part of the 12-month introductory tier. A 1 TB S3 transfer is billed on 924 GB after the free allowance. S3 request charges (GET, PUT, LIST) are billed separately per 1,000 requests and are a small line item next to data transfer for most download-heavy workloads.