---
title: "S3 Egress Costs: Fees, Pricing, and How to Reduce Them"
description: "S3 egress costs depend on traffic path, region, and volume. See current AWS rates, worked examples, hidden fees, and seven practical ways to cut spend."
url: https://www.zerobuffer.io/blogs/s3-egress-costs
date_published: 2026-08-10
date_modified: 2026-08-10
topic: "CDN Architecture and Delivery Costs (`cdn-architecture-costs`)"
keywords: ["s3 egress costs","aws s3 data transfer cost","s3 egress pricing","aws s3 egress cost per gb","s3 data transfer out","s3 egress fees","reduce s3 egress costs","s3 to cloudfront data transfer cost","s3 cross region transfer cost"]
word_count: 2584
author: "Sahil Asopa"
author_url: https://www.zerobuffer.io/authors/sahil-asopa
author_profiles: ["https://www.linkedin.com/in/sahilasopa/","https://github.com/sahilasopa"]
publisher: ZeroBuffer
license: © 2026 Apexnova Private Limited
---
![Data leaving an object storage origin through metered cloud boundaries](https://www.zerobuffer.io/blogs/s3-egress-costs/thumbnail.png)

# S3 Egress Costs: Fees, Pricing, and How to Reduce Them

A bucket can cost less than $25 per terabyte to store and still produce a much larger delivery bill. The surprise usually appears when downloads grow, data crosses Regions, or traffic takes a paid network path that nobody included in the estimate. Understanding **S3 egress costs** means pricing the route each byte takes—not merely the storage class holding it.

**S3 egress costs are the fees for transferring data out of Amazon S3 across a billable boundary. In US East (N. Virginia), direct internet transfer starts at $0.09 per GB after the account's first 100 GB of eligible monthly AWS internet egress, while S3-to-CloudFront and S3-to-AWS-service transfer within the same Region are listed as free.** Region, destination, monthly volume, retrieval class, and any gateway or acceleration service can change the final bill.

The rates and rules below were checked on August 10, 2026. Examples use public list prices, decimal units—1 TB equals 1,000 GB—and US East (N. Virginia) unless noted. Contracts, credits, taxes, binary usage units, and future price changes can alter an invoice, so confirm the current [Amazon S3 pricing page](https://aws.amazon.com/s3/pricing/) before approving a budget.

## S3 egress costs at a glance

The fastest way to avoid a bad estimate is to classify the transfer path first.

| S3 traffic path | Representative transfer treatment | What can still add cost |
|---|---:|---|
| Internet into S3 | $0/GB | S3 requests, storage, or Transfer Acceleration |
| S3 directly to the internet | First 100 GB/month free across eligible AWS services and Regions; then $0.09/GB for the first paid 10 TB in US East | Requests, retrieval from some storage classes, acceleration, and higher-cost Regions |
| S3 to an AWS service in the same Region | $0/GB for the listed direct transfer | NAT Gateway, PrivateLink, Transit Gateway, requests, and processing in the path |
| S3 bucket to S3 bucket in the same Region | $0/GB | COPY, PUT, GET, and storage charges |
| S3 to CloudFront | $0/GB for the origin-to-CloudFront leg | CloudFront viewer delivery, requests, functions, logs, and optional Origin Shield |
| S3 across AWS Regions | Pair-specific cross-Region rate | Replication requests, destination storage, retrieval, and Multi-Region Access Point routing |
| S3 Transfer Acceleration | Acceleration fee in addition to normal transfer pricing | Region and edge-location route |

AWS explicitly lists the 100 GB allowance, inbound transfer, same-Region bucket transfers, same-Region AWS service transfers, and S3-to-CloudFront transfer among the no-charge cases on its [S3 pricing page](https://aws.amazon.com/s3/pricing/). The allowance is not 100 GB per bucket: it is aggregated across eligible AWS services and Regions, excluding China and GovCloud.

"Free transfer" also does not mean a free request. A GET from S3 Standard can incur a request charge even when its same-Region transfer is free. Reading from Standard-IA or an archive class can add retrieval charges as well. Keep storage, requests, retrieval, and transfer as separate rows in the model.

## How S3 egress costs are calculated

For direct internet delivery, the simplified monthly calculation is:

`direct S3 egress = billable GB in each tier × that tier's regional rate`

In US East, the public tiers commonly used for planning are $0.09/GB for the first 10 TB after the allowance, $0.085/GB for the next 40 TB, $0.07/GB for the next 100 TB, and $0.05/GB above 150 TB. AWS directs customers transferring more than 500 TB per month to contact sales. Because the tiers apply to aggregate AWS data transfer out, do not calculate each bucket in isolation and grant each one a fresh low-volume tier.

### Direct S3 internet egress examples

Assume the account has not consumed its 100 GB allowance elsewhere:

| Monthly data sent | Simplified calculation | Direct S3 transfer cost |
|---:|---:|---:|
| 1 TB | `(1,000 − 100) × $0.09` | $81.00 |
| 10 TB | `(10,000 − 100) × $0.09` | $891.00 |
| 50 TB | `10,000 × $0.09 + 39,900 × $0.085` | $4,291.50 |

These figures cover transfer only. For a complete S3 bill, add storage by class, GET and other request charges, retrieval fees, replication, management features, and any network services in the route.

If the unexplained line is not S3-specific, use the broader [AWS data transfer cost guide](/blogs/aws-data-transfer-cost) to trace cross-AZ, NAT Gateway, Transit Gateway, and service-level transfer meters.

### S3 plus CloudFront example

AWS does not charge the S3-to-CloudFront origin-fetch leg. Under current [CloudFront pay-as-you-go pricing](https://aws.amazon.com/cloudfront/pricing/pay-as-you-go/), the first 1 TB of viewer transfer and first 10 million HTTP/HTTPS requests each month are included in the free tier. In the United States, Mexico, and Canada, the next 9 TB is $0.085/GB.

At 10 TB of viewer delivery in those locations, the simplified bandwidth calculation is therefore `1,000 GB × $0 + 9,000 GB × $0.085 = $765`. Add billable requests and any enabled features.

Note what that buys: $126 off the $891 direct-S3 figure, for an architecture change. Putting a CDN in front of S3 removes the S3 egress meter and replaces it with a CloudFront meter, so the saving comes from the rate difference rather than from caching itself. AWS also offers flat-rate CloudFront plans with bundled services and monthly allowances, each scoped to a single distribution; they are not interchangeable with pay-as-you-go for every workload. The [Amazon CDN cost guide](/blogs/amazon-cdn-cost) models all three CloudFront buying paths — treat this section as the S3 half of that calculation only.

The rate difference is also where a third-party CDN changes the answer. The same 10 TB delivered at ZeroBuffer's flat $0.0049/GB is $49, so the delivery leg stops being the dominant line and the remaining decision is about origin fills, which the migration options below address.

## Hidden fees that get mistaken for S3 egress costs

The `DataTransfer-Out-Bytes` line is only one way bytes become expensive.

### Retrieval is separate from egress

S3 Standard has no per-GB retrieval fee, but Standard-IA and Glacier classes can. An object restored or read from a colder class may therefore produce a retrieval charge and an internet transfer charge. Moving frequently downloaded assets into a cheaper-at-rest class can raise the total bill.

### Cross-Region access and replication

An application in one Region reading a bucket in another crosses a billable regional boundary. Cross-Region Replication also creates transfer, request, and destination-storage costs. Rates depend on the Region pair; for example, AWS's S3 pricing example lists $0.01/GB between US East (N. Virginia) and US East (Ohio), but that figure should not be reused for unrelated pairs.

### NAT, endpoints, and network appliances

Direct S3-to-service transfer in one Region may be free while the chosen route is not. AWS notes that NAT gateways, PrivateLink endpoints, and Transit Gateways can add their own processing fees. For VPC workloads, an [S3 gateway endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) avoids an internet gateway or NAT device and has no additional endpoint charge, although its access and routing constraints still matter.

### Transfer Acceleration and Multi-Region Access Points

S3 Transfer Acceleration charges an extra per-GB acceleration fee on top of data transfer. Multi-Region Access Points add routing fees and can select a copy across a regional boundary. These features can be worth their cost for latency or resilience; they are not free synonyms for ordinary S3 access.

### Retries and interrupted downloads

AWS warns that billed transfer can exceed the bytes an application receives when a large download is terminated because S3 cannot stop streaming instantly. Range requests, client retry behavior, speculative downloads, and bots can all turn a nominal object size into more bytes sent. Measure successful delivery rather than multiplying object size by completed downloads and calling the estimate finished.

## How to find S3 egress costs in your AWS bill

Start with billed evidence, then trace it back to traffic.

1. **Group by usage type and Region.** In Cost Explorer or the Cost and Usage Report (CUR), isolate data transfer and S3-related charges. AWS documents internet egress as a `Region-DataTransfer-Out-Bytes` usage type and Transfer Acceleration entries with `ABytes` in its [data-transfer charge guide](https://docs.aws.amazon.com/cur/latest/userguide/cur-data-transfers-charges.html).
2. **Check product code and operation.** CloudFront and regional internet transfer can use similar-looking usage types. The product code separates `AmazonCloudFront` from AWS regional transfer, while the operation and description help distinguish requests, retrieval, replication, and acceleration.
3. **Draw the actual route.** Record bucket Region, requester location, destination, CDN, VPC route table, endpoint, gateway, firewall, and replication target. Price the forward and retry paths rather than the intended architecture diagram.
4. **Reconcile bytes with logs.** Compare CUR volume with S3 server access logs, application download metrics, and CDN logs. Segment by bucket or prefix so you can identify large objects, cache-bypassing URLs, range behavior, bots, and tenants responsible for the transfer.
5. **Set a baseline before changing anything.** Record monthly GB, cost, cache-hit ratio, successful delivery volume, and request count. Without the baseline, a lower S3 line can hide a larger CDN, retrieval, or gateway line elsewhere.

![An expensive object delivery path redesigned around caching, private endpoints, and a lower-cost origin](https://www.zerobuffer.io/blogs/s3-egress-costs/mid-article.png)

## How to reduce S3 egress costs without breaking delivery

Choose tactics based on the expensive path you found. Storage lifecycle rules do not solve internet egress, and a CDN does not help unique one-time downloads as much as repeatable public content.

### 1. Put repeatable public delivery behind a CDN

CloudFront removes the S3-to-CloudFront transfer charge and shifts viewer delivery to CloudFront pricing. It is strongest when objects are cacheable and repeatedly requested. Keep the bucket private, use the supported origin-access controls, and test signed URLs or cookies if the content is restricted.

A third-party CDN can improve viewer delivery economics, but S3-to-that-CDN origin fills remain ordinary internet egress from AWS. A 95% cache-hit ratio can cut the recurring S3 origin bytes sharply; it does not make the remaining 5% free.

### 2. Fix the cache key and TTL before buying more cache

Immutable images, downloads, and versioned video segments can usually use long TTLs. Unnecessary query strings, cookies, or headers fragment cache keys and force repeated origin fetches. Normalize the key, keep personalized responses out of the shared cache, and use an origin shield when it removes duplicate fills economically.

For video origins, the [CDN for video guide](/blogs/cdn-for-video) explains how segment caching, origin shield placement, and traffic geography change both playback and delivery cost.

### 3. Keep AWS consumers in the same Region

Place compute that reads large S3 objects in the bucket's Region where practical. For multi-Region systems, compare remote reads with replication: replication adds write-driven transfer and storage, while remote reads add request-driven transfer. The cheaper choice depends on dataset churn, read volume, recovery objectives, and locality requirements.

### 4. Bypass NAT for eligible private S3 traffic

Route supported VPC access through an S3 gateway endpoint instead of a NAT gateway. Confirm the endpoint is associated with the correct route tables and that DNS, bucket policies, and application endpoints keep the traffic on that route. An endpoint that exists but is not used saves nothing.

### 5. Send fewer bytes

Compress text responses, serve AVIF or WebP variants for images, choose efficient video renditions, and avoid shipping metadata the client never uses. Support range requests correctly for large media and downloads, but inspect retry amplification and clients that repeatedly request overlapping ranges. Byte reduction saves at every per-GB delivery layer.

### 6. Make the downloader pay when the use case fits

For shared datasets, S3 Requester Pays can shift request and data-transfer charges to the requester's AWS account. It is unsuitable for ordinary consumer downloads and adds authentication and tooling requirements, but the [Requester Pays documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html) makes it a legitimate option for controlled data distribution.

### 7. Move the origin when delivery economics dominate

If S3 API compatibility is required but AWS egress is not, [ZeroBuffer publishes](/) S3-compatible NVMe-backed storage at $0.01/GB-month per replica and global CDN delivery from $0.0049/GB. Moving both the objects and delivery path removes AWS S3 origin egress from the steady-state architecture; keeping S3 as the origin behind ZeroBuffer would still leave paid AWS origin fills, so use an [S3-compatible storage migration checklist](/blogs/s3-compatible-storage) to test the exact calls, durability model, migration path, and total request cost before switching.

## Which S3 egress architecture costs less?

Use the workload shape, not one headline rate, to make the decision.

| Architecture | Best fit | Cost caveat |
|---|---|---|
| Direct S3 delivery | Low-volume or unique authenticated downloads; minimal moving parts | Direct internet egress grows quickly and gives users no edge cache |
| S3 + CloudFront pay-as-you-go | Repeatable public objects and AWS-native operations | Viewer geography, requests, and edge features remain billable |
| S3 + CloudFront flat-rate | A single distribution that fits a listed plan and values bundled AWS services | One plan per distribution; sustained excess over the allowance can move delivery to more distant edges |
| S3 + third-party CDN | Teams optimizing global delivery while retaining S3 | S3 origin fills to a non-AWS CDN still incur AWS internet egress |
| S3-compatible storage + paired CDN | Delivery-heavy workloads willing to migrate the origin | Compatibility, durability, operations, and migration traffic need testing |
| Requester Pays | Controlled distribution of datasets to AWS-aware consumers | Shifts cost and complexity to the requester; poor fit for consumer traffic |

Run the comparison with at least three traffic months: normal, growth, and spike. Include origin-fill GB, viewer GB by geography, requests, retrieval, replication, gateway processing, support, commitments, and migration cost. The cheapest per-GB row can lose once the whole path is priced.

## Frequently asked questions

### How much does S3 egress cost per GB?

For direct internet transfer from US East, the current public starting rate is $0.09/GB for the first paid 10 TB after the shared 100 GB monthly AWS allowance. The rate falls in higher volume tiers, differs by Region and path, and does not include requests, retrieval, acceleration, or other network services.

### Is S3 egress free?

Some S3 transfer paths are free. Internet ingress, the first 100 GB of eligible monthly AWS internet egress, same-Region bucket and AWS-service transfer, and S3-to-CloudFront transfer are listed as no-charge cases. Direct internet transfer beyond the allowance and cross-Region transfer are generally billable.

### Does CloudFront reduce S3 egress costs?

Yes for suitable workloads: AWS waives the S3-to-CloudFront origin-fetch transfer, and CloudFront includes a larger free viewer-transfer allowance with different paid rates. It does not make delivery free — the bytes move onto CloudFront's meter for viewer delivery, requests, and optional features. Since the benefit comes from the rate difference rather than from caching alone, compare that rate against third-party CDNs for the same traffic before assuming CloudFront is the cheapest way off S3.

### Why do I have transfer charges if S3 and my application are in the same Region?

The traffic may pass through a charged NAT gateway, PrivateLink interface endpoint, Transit Gateway, firewall, or another regional boundary. It may also be a different transfer flow—such as cross-AZ application traffic—appearing near the S3 workload. Use CUR usage type, product code, network routes, and logs to identify the billed path.

### Can AWS waive S3 egress fees when I leave AWS?

AWS offers eligible customers free data transfer out when they move all their data off AWS, but it is an approval-based migration program rather than free ongoing multi-cloud egress. The [AWS Global Network FAQ](https://aws.amazon.com/about-aws/global-infrastructure/global-network/faqs/) says to contact Support before moving so AWS can review eligibility and calculate the credit.

## Reduce the path, not just the rate

Treat S3 egress as an architecture cost. First identify the usage type and route, then decide whether to cache repeated delivery, remove a paid gateway, co-locate compute, reduce bytes, shift requester costs, or move the origin. A clean model separates transfer from storage, requests, retrieval, and CDN delivery so a saving in one service cannot hide an increase in another.

If recurring delivery is the dominant line, price a normal month and a traffic spike across direct S3, CloudFront, and a migrated S3-compatible origin. That comparison tells you whether a configuration change is enough or whether the storage-and-delivery architecture itself needs to change.

ZeroBuffer is one concrete version of that third option: S3-compatible storage at $0.01/GB-month per replica paired with CDN delivery at a flat $0.0049/GB, so the origin and the delivery path come from one bill and one cache policy instead of two vendors and a cross-account transfer line. No contracts, no minimums. [Price it against your current month](/tools/cdn-cost-calculator).
