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

S3 Egress Cost: Calculator, Rates, and How to Pay Less

Updated June 4, 2026
15 min read
S3 Egress Cost: Calculator, Rates, and How to Pay Less
On this page

S3 egress is predictable: AWS publishes the tiers, and the math is simple multiplication. What catches teams by surprise is that ‘S3 egress’ is four different billing scenarios with four different prices — and one of them is free. The biggest lever is routing internet-bound traffic through CloudFront. S3-to-CloudFront is free, and CloudFront egress rates are slightly lower than direct S3 internet egress. Most teams serving public content from S3 directly are overpaying.

Use the calculator below to see your monthly egress cost and the CloudFront comparison side by side.

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

S3 Egress Rates: Every Scenario

Internet Egress (Data Out to Users and the Public Internet)

First 100 GB/month across all AWS services: free. This free tier is aggregated across your entire AWS account — S3, EC2, RDS, Lambda all share this 100 GB pool.

Above the free tier, the tiers are: $0.09/GB for 100 GB to 10 TB/month. $0.085/GB for 10 TB to 50 TB/month. $0.07/GB for 50 TB to 150 TB/month. $0.05/GB for 150 TB to 500 TB/month. Above 500 TB: contact AWS for pricing. Each GB falls into whichever tier it reaches — the rate is not retroactively applied to all bytes when you cross a threshold.

Worked example: a SaaS app serving 10 TB/month of user files directly from S3. First 100 GB = free. Remaining 9,900 GB x $0.09 = $891. Plus the first 100 GB is free, so total = approximately $891/month in S3 internet egress alone, before storage and request fees. Source: go-cloud.io (May 2026), consistent with AWS official pricing.

All rates for US East (N. Virginia), May 2026. Verify at aws.amazon.com/s3/pricing — rates change by region.

S3 to CloudFront: Free

Data transfer from S3 to CloudFront within the same AWS account and region costs $0.00/GB since late 2024. AWS eliminated the previous $0.02/GB charge to incentivize CloudFront adoption. For any workload serving content to internet users, routing through CloudFront is strictly cheaper than serving S3 directly: origin transfer is free, and CloudFront egress to users is $0.085/GB — lower than direct S3 internet egress at $0.09/GB.

S3 to Other AWS Services (Same Region): Free

Data transfer from S3 to EC2, Lambda, ECS, EKS, RDS, or any other AWS service within the same region is free. This is one of the most important architectural principles for cost efficiency: keep compute and storage in the same region. A Lambda function in us-east-1 reading from an S3 bucket in us-east-1 pays $0 in transfer costs. The same Lambda reading from a bucket in us-west-2 pays $0.02/GB.

Cross-Region S3 Transfer: $0.02/GB

Transferring data from S3 in one AWS region to a resource in another region costs $0.02/GB for most region pairs (US corridors). Inter-continental transfers (US to Asia Pacific, US to South America) carry higher rates — verify at aws.amazon.com/s3/pricing. Cross-region replication for disaster recovery or compliance generates ongoing transfer costs proportional to your change rate. A bucket with 100 GB of daily changes replicating cross-region: 100 GB x $0.02 x 30 = $60/month in transfer alone.

S3 Transfer Acceleration: +$0.04/GB

Transfer Acceleration uses CloudFront edge locations to speed up long-distance S3 uploads from clients. It adds $0.04/GB on top of standard egress for transfers that actually use the accelerated path. AWS only charges for acceleration when it provides a measurable speed improvement — if the direct upload is faster, it routes directly at no acceleration charge. Worth evaluating for upload-heavy applications with globally distributed users.

AWS S3 pricing page showing the Data Transfer OUT to the internet section with four tiered rows: first 100 GB free, 100 GB to 10 TB at $0.09 per GB highlighted in orange, 10 TB to 50 TB at $0.085 per GB, 50 TB to 150 TB at $0.07 per GB, and 150 TB to 500 TB at $0.05 per GB, with a separate row below showing Data Transfer OUT to Amazon CloudFront at $0.00 per GB highlighted in green, and a handwritten-style annotation in the margin showing the cost comparison for 10 TB per month: direct S3 internet egress totaling $891 versus routing through CloudFront totaling $850 with the $41 monthly saving labeled

Also read: Compute Savings Plans: optimize the compute side of your AWS bill

5 Ways to Reduce S3 Egress Costs

1. Route Internet Traffic Through CloudFront

S3-to-CloudFront is free. CloudFront egress is $0.085/GB versus $0.09/GB direct S3. Add a CloudFront distribution in front of any S3 bucket serving internet traffic. Set the S3 bucket as the origin. CloudFront serves cached objects at the lower egress rate, and cache hits from repeat requests reduce origin fetches to zero. For workloads with 80%+ cache hit ratios, effective per-GB cost drops substantially below $0.085/GB. Source: AWS official pricing, blazingcdn.com (March 2026).

2. Use Gateway Endpoints for Internal Traffic

EC2 instances and containers in private subnets accessing S3 through NAT Gateway pay both NAT processing ($0.045/GB) and NAT hourly charges. A Gateway Endpoint routes S3 traffic from private subnets directly over the AWS backbone at $0.00/GB — completely eliminating the NAT processing charge. Deploy the Gateway Endpoint before deploying NAT Gateways. Takes 5 minutes, generates savings from the next billing cycle. Source: LeanOps (April 2026).

3. Keep Compute in the Same Region as Your S3 Buckets

S3-to-EC2/Lambda/ECS in the same region: $0.00/GB. S3-to-EC2/Lambda/ECS cross-region: $0.02/GB. For data-intensive workloads processing terabytes from S3, the choice between same-region and cross-region compute is the difference between $0/month and hundreds of dollars per month in transfer fees. Avoid storing data in a ‘default’ region while running compute in your ‘primary’ region.

4. Clean Up Orphaned Multipart Uploads

Multipart uploads that are started but never completed continue accumulating in S3 Standard storage indefinitely. They do not generate egress charges — but they generate storage charges. LeanOps (April 2026) estimates that 1-5% of S3 storage across typical accounts is consumed by orphaned incomplete multipart upload parts. Set a lifecycle rule to abort incomplete multipart uploads after 7 days: in the S3 console, navigate to bucket > Management > Lifecycle rules > Create rule > Expire incomplete multipart uploads after 7 days.

5. Compress Before Uploading

Brotli or gzip compression on text-based content (JSON, HTML, CSS, logs, CSV) reduces object size by 60-80% before the object is stored. Egress is charged per byte transferred — smaller objects mean lower egress charges, lower storage charges, and faster transfers. For a bucket storing 1 TB of uncompressed JSON logs that are periodically read by analytics pipelines: compressing to 300 GB reduces both storage ($23/month to $6.90/month) and egress proportionally. Apply compression at the upload stage, not at retrieval time.

AWS S3 management console showing the Lifecycle rules section for a production bucket with one active rule named AbortIncompleteMultipartUploads configured to apply to all objects in the bucket with the action showing Expire incomplete multipart uploads after 7 days, and a small Cost Explorer chart inset in the bottom right corner showing S3 Standard storage cost over the past 30 days with a slight downward trend beginning 7 days after the lifecycle rule was created, representing the reclaimed storage from previously orphaned multipart upload parts

S3 Egress vs CloudFront: Monthly Cost Comparison

At three common monthly traffic volumes, using verified May 2026 rates. All US East (N. Virginia). Verify at aws.amazon.com/s3/pricing and aws.amazon.com/cloudfront/pricing — rates change.

1 TB/month: Direct S3 egress = $91.81 (100 GB free, 924 GB x $0.09). CloudFront = $87.55 (924 GB x $0.085, origin free). Monthly saving via CloudFront: $4.26. Annual: $51.

10 TB/month: Direct S3 egress = $891 (100 GB free, 9,900 GB x $0.09). CloudFront = $849 (9,900 GB x $0.085). Monthly saving: $42. Annual: $504.

50 TB/month: Direct S3 egress = $4,150 (first 10 TB at $0.09 = $897, next 40 TB at $0.085 = $3,400, minus free tier $9). CloudFront = $4,165 (first 10 TB at $0.085 = $850, next 40 TB at $0.080 = $3,276, origin free). At this volume CloudFront is marginally more expensive per GB — but adds global caching, lower latency, and likely reduces origin requests by 60-80% through caching, which reduces effective egress further.

The CloudFront advantage increases with cache hit ratio. At 80% cache hit ratio, 80% of served bytes come from edge cache. Users still download those bytes (CloudFront egress applies), but the origin S3 fetches drop by 80%. For frequently-accessed content, the effective cost-per-unique-byte-stored drops significantly. CloudFront saves more than the per-GB rate difference suggests.

S3 Request Pricing: The Cost That Sits on Top of Egress

Egress is charged per GB transferred. Requests are charged per API call, separately. Both appear on the same bill and both scale with traffic. Teams that estimate S3 costs from the egress rate alone consistently underestimate the total.

Standard Storage Request Rates (US East, May 2026)

PUT, COPY, POST, or LIST requests: $0.005 per 1,000 requests. GET, SELECT, and all other requests: $0.0004 per 1,000 requests. DELETE requests: free. Lifecycle transition requests: $0.01 per 1,000 requests. Source: aws.amazon.com/s3/pricing — verify, rates change.

At scale, request charges matter. A CDN or API serving 100 million GET requests per month from S3: 100,000,000 / 1,000 x $0.0004 = $40/month in request fees alone. At 1 billion GET requests: $400/month. For applications with very high request rates and small object sizes, request fees can approach or exceed transfer fees.

S3 Intelligent-Tiering: Monitoring Fee

S3 Intelligent-Tiering automatically moves objects between access tiers based on usage patterns. The monitoring fee is $0.0025 per 1,000 objects per month — a flat charge regardless of whether any objects actually transition. For a bucket with 10 million objects: 10,000,000 / 1,000 x $0.0025 = $25/month in monitoring fees. For buckets with billions of small objects, the monitoring fee can exceed the storage savings from automated tiering. Intelligent-Tiering is cost-effective for buckets with large objects (100 KB+) and unpredictable access patterns. Not recommended for buckets with millions of tiny objects. Source: aws.amazon.com/s3/pricing (May 2026).

Storage Class Retrieval Fees: The Egress-Adjacent Charge

S3 Standard has no retrieval fee — you pay egress only. Other storage classes charge a separate retrieval fee per GB retrieved, in addition to the standard egress rate:

S3 Standard-IA (Infrequent Access): $0.01/GB retrieval fee on top of egress. If you serve a 1 GB object from Standard-IA to a user, you pay $0.09 egress + $0.01 retrieval = $0.10/GB total. Standard-IA makes sense only for objects accessed less than once per month on average. Accessing Standard-IA objects frequently erases the storage savings and adds retrieval cost.

S3 One Zone-IA: $0.01/GB retrieval fee. Same retrieval cost as Standard-IA, lower storage cost, but only one AZ. No redundancy for data loss scenarios. Not appropriate for primary production data.

S3 Glacier Instant Retrieval: $0.03/GB retrieval fee. Millisecond access with the retrieval cost of deep archive tiers. For data accessed once per quarter or less.

S3 Glacier Flexible Retrieval: $0.01-$0.03/GB depending on retrieval speed (Expedited/Standard/Bulk). Expedited is fastest and most expensive. Standard takes 3-5 hours. Bulk takes 5-12 hours. For true archival data that is rarely needed.

S3 Glacier Deep Archive: $0.02/GB retrieval (Standard, 12 hours) or $0.05/GB (Bulk, 48 hours). Lowest storage cost ($0.00099/GB/month) but highest retrieval cost of any tier. For compliance data that must be retained but is never expected to be accessed.

The storage class trap: a team migrates 10 TB of data to S3 Glacier to save $0.0211/GB/month in storage ($211/month saving). They then need to restore 2 TB for an audit. Standard Glacier retrieval at $0.03/GB: 2,000 GB x $0.03 = $60 in retrieval fees. Plus egress if the restored data leaves AWS. The one-time retrieval can cost more than months of storage savings. Always model retrieval scenarios before migrating to deep archive tiers.

Also read: Compute Savings Plans: complement to network optimization for total AWS bill reduction

Worked Examples: Real S3 Egress Bills at Three Scales

Small SaaS Application: 500 GB/month to Internet

A bootstrapped SaaS app serving user-uploaded documents from S3 directly. 500 GB/month of internet egress. First 100 GB free. Remaining 400 GB x $0.09 = $36/month in egress. Plus request fees: assuming 5 million GET requests per month (400 GB / 80 KB average object size): 5,000,000 / 1,000 x $0.0004 = $2/month. Total: $38/month in S3 transfer and request charges.

CloudFront comparison: origin free. 500 GB egress at $0.085/GB = $42.50 — slightly more expensive than direct S3 at this volume because the small volume stays in the $0.09 vs $0.085 range and the free 100 GB saves more on the direct path. At 500 GB/month, direct S3 is marginally cheaper. The tipping point where CloudFront becomes cheaper: roughly 750 GB/month where caching starts reducing origin fetches meaningfully.

Media Platform: 50 TB/month of Video Delivery

A video streaming service serving 50 TB/month of content globally from S3. Direct S3 internet egress: first 100 GB free. Next 9,900 GB x $0.09 = $891. Next 40,000 GB x $0.085 = $3,400. Total direct S3: $4,291/month.

Via CloudFront (same account, same region): S3 origin: $0/GB. CloudFront egress: first 10,000 GB x $0.085 = $850. Next 40,000 GB x $0.080 = $3,200. Total via CloudFront: $4,050/month. Saving: $241/month vs direct S3, $2,892/year. Plus CloudFront adds edge caching — at 70% cache hit ratio, only 15 TB of origin fetches occur. The effective egress cost per served byte drops further as repeat viewers hit cached content. Source: go-cloud.io worked example (May 2026), consistent with verified rates.

Enterprise Data Platform: Cross-Region Replication

An enterprise data team replicating their primary S3 data store from us-east-1 to eu-west-1 for EU compliance. Total data: 100 TB. Daily change rate: 50 GB of new or modified objects. Monthly replication volume: 50 GB x 30 = 1,500 GB/month. Cross-region transfer at $0.02/GB: 1,500 x $0.02 = $30/month in replication transfer costs.

For an initial full-data replication of 100 TB: 100,000 GB x $0.02 = $2,000 one-time transfer cost. This is the migration tax that teams often forget when planning cross-region DR strategies. Combined with the ongoing $30/month for change replication, the annual cost of this DR posture is $2,360 in transfer fees alone. Not large for a 100 TB dataset, but scales linearly with data volume.

Why Is My S3 Bill So High? The Five Most Common Causes

Teams that see unexpectedly high S3 bills are almost always experiencing one of five patterns:

1. Serving Traffic Directly from S3 Without CloudFront

The most common cause of high S3 egress bills. Direct S3 internet egress at $0.09/GB versus CloudFront at $0.085/GB with free S3 origin. For any public-facing workload above 1 TB/month, the absence of CloudFront is a measurable monthly cost. Fix: add a CloudFront distribution, set the S3 bucket as origin, update DNS to point to CloudFront.

2. EC2 or Lambda Accessing S3 Through NAT Gateway

EC2 instances and containers in private subnets accessing S3 through NAT Gateway pay $0.045/GB in NAT processing on top of any transfer costs. S3-to-EC2 in the same region is free — but only via the direct VPC path or a Gateway Endpoint. If the request routes through NAT Gateway, the processing fee applies. Fix: deploy a free S3 Gateway VPC Endpoint. Takes 5 minutes. Immediately eliminates the NAT processing charge.

3. Accessing Standard-IA or Glacier Objects More Frequently Than Expected

Objects moved to Standard-IA or Glacier tiers to save on storage costs incur retrieval fees when accessed. If access patterns change and objects in IA tiers get accessed frequently, retrieval fees offset and eventually exceed storage savings. Fix: monitor GetObject request count per storage class in CloudWatch. If Standard-IA objects are accessed more than once per month on average, move them back to S3 Standard.

4. Cross-Region Traffic From Processing Pipelines

Data pipelines that read S3 data in a different region from where the processing compute runs pay $0.02/GB. A Spark or Flink job reading 10 TB from an S3 bucket in a different region: $200 in transfer costs per job run. Fix: always co-locate processing compute with the S3 bucket region. Use S3 Object Lambda or S3 Select to reduce the volume of data transferred if cross-region is unavoidable.

5. Orphaned Multipart Uploads Accumulating Storage

Incomplete multipart uploads consume S3 Standard storage indefinitely. While they do not generate egress charges, they inflate your storage bill and indirectly inflate your S3 total cost. A bucket with a high volume of failed large uploads can accumulate gigabytes of orphaned parts monthly. Fix: a lifecycle rule aborting incomplete multipart uploads after 7 days. Recovers 1-5% of storage for most accounts with active upload workflows. Source: LeanOps (April 2026).

Start your free AWS cost analysis with Usage.ai

 

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 S3 egress cost?

S3 egress to the internet costs $0.09/GB for the first 10 TB/month (after the always-free 100 GB/month). Volume discounts: $0.085/GB at 10-50 TB, $0.07/GB at 50-150 TB, $0.05/GB at 150-500 TB. S3-to-CloudFront (same account) is free. S3 to other AWS services in the same region is free. Cross-region transfer is $0.02/GB. Source: aws.amazon.com/s3/pricing, May 2026. Rates change — verify before estimating.

 

2. Is S3 data transfer to CloudFront free?

Yes. Data transfer from S3 to CloudFront within the same AWS account and region costs $0.00/GB since late 2024. AWS eliminated the previous $0.02/GB charge. CloudFront then charges its own egress rate to users ($0.085/GB first 10 TB, US tier) — lower than direct S3 egress ($0.09/GB). This makes CloudFront strictly cheaper than serving S3 directly for internet-facing content.

 

3. How is S3 egress calculated?

S3 egress is calculated per GB transferred out to the internet in a calendar month. The first 100 GB is free (shared across all AWS services in your account). Each subsequent GB falls into a tier based on cumulative monthly volume. Tiers are not retroactive — crossing from the $0.09 tier to the $0.085 tier does not reduce the cost of the first 10 TB already transferred. Requests (GET, PUT) are billed separately from transfer volume.

 

4. What is the cheapest way to serve files from S3?

Put CloudFront in front of S3. S3-to-CloudFront transfer is free. CloudFront egress to users is $0.085/GB (first 10 TB, US tier) versus $0.09/GB direct S3 egress. For internal AWS traffic (EC2, Lambda reading from S3), deploy a free S3 Gateway VPC Endpoint to eliminate NAT Gateway processing charges. For infrequently accessed files, use S3 Intelligent-Tiering or S3 Glacier to reduce storage costs — egress rates are the same regardless of storage class.

 

5. Does S3 charge for internal AWS traffic?

S3 to other AWS services in the same region: free. S3 to services in other regions: $0.02/GB. S3 accessed through NAT Gateway: free from S3’s perspective, but NAT Gateway charges $0.045/GB processing. Use an S3 Gateway VPC Endpoint (free) to eliminate the NAT Gateway processing charge for all S3 traffic from private subnets.

Cut cloud cost with automation
Latest from our blogs