AWS S3 Data Transfer Out Cost: How to Estimate It

Bundles of blue network cables plugged into a rack switch in a data center

Photo by John Barkiple on Unsplash

AWS S3 data transfer out to the internet costs $0.09 per GB for the first 10 TB a month in us-east-1, falling to $0.085, $0.07 and $0.05 per GB at higher volumes. The first 100 GB each month is free, but that allowance is shared across all AWS services and Regions. Transfer to CloudFront and to AWS services in the same Region is free.

You don’t need an AWS S3 data transfer out cost calculator to get a first estimate, but you do need the rules. This guide is for developers and engineering leads who serve files from S3 (downloads, media, backups pulled by customers) and want to predict the egress line on the bill before it surprises them. You’ll get the current rate table, the rules that decide what counts as data transfer out, three worked examples with the arithmetic shown, and the changes that cut egress the most.

If you just want a number, plug your monthly GB into the free S3 egress and storage pricing calculator. It applies the same tiers and the 100 GB free allowance described below, alongside storage and request costs.

What counts as S3 data transfer out?

“Data transfer out” means bytes leaving an S3 bucket. Whether you pay, and how much, depends on where those bytes go, not on how they were requested. A browser download through a presigned link, an aws s3 cp to your laptop and a partner’s script pulling a nightly export are all internet egress. If you hand out links with the presigned S3 download URLs you create with AWS SDK v3, every byte your users fetch is billed to the bucket owner.

According to the Amazon S3 pricing page, these transfers are free:

  • Data transferred in from the internet (uploads). The PutObject upload example with S3Client in TypeScript pays for the PUT request, not for the bytes.
  • Data transferred between S3 buckets in the same Region.
  • Data transferred from S3 to any AWS service in the same Region as the bucket, including a different account in that Region.
  • Data transferred out to Amazon CloudFront.
  • The first 100 GB per month of data transfer out to the internet, aggregated across all AWS services and Regions (except China and GovCloud).

Everything else is billed per GB: internet egress, transfer to another AWS Region, and S3 Transfer Acceleration.

S3 internet egress cost per GB: the current rate table

These rates come from the AWS public price list (the AWSDataTransfer and AmazonS3 offer files) and match the official Amazon S3 pricing page. S3 counts storage and transfer in binary gigabytes, so 1 GB is 230 bytes and 1 TB is 1,024 GB.

Transfer from S3 in us-east-1 to… Price per GB (us-east-1, as of September 2026)
Internet: first 100 GB / month (all services and Regions combined) $0.00
Internet: first 10 TB / month beyond the free 100 GB $0.09
Internet: next 40 TB / month $0.085
Internet: next 100 TB / month $0.07
Internet: over 150 TB / month $0.05
Amazon CloudFront $0.00
AWS services in us-east-1 (EC2, Lambda, other buckets) $0.00
US East (Ohio), us-east-2 $0.01
US West (Oregon), us-west-2 $0.02
S3 Transfer Acceleration out, via edge locations in the US, Europe or Japan (added on top of the transfer price) +$0.04

Note: the 100 GB allowance is global. AWS states it “does not apply separately or individually to AWS Regions”, so if EC2 instances or a load balancer already send 100 GB to the internet this month, your S3 downloads start at $0.09 per GB from the first byte. For AWS accounts on the new credit-based Free Tier, see what the S3 free tier covers for new and older accounts.

S3 transfer out pricing by Region varies: the table above is for buckets in us-east-1. Other Regions have their own internet egress tiers, and inter-Region prices depend on the source and destination pair. Pick the bucket’s Region in the calculator or on the AWS pricing page before you estimate.

How to calculate AWS S3 data transfer monthly cost

The method is the same at any scale:

  1. Measure monthly egress in GBUse Cost Explorer grouped by usage type (look for DataTransfer-Out-Bytes) or the bucket’s CloudWatch request metrics. If you’re estimating a new workload, multiply average object size by expected downloads.
  2. Subtract the free 100 GB onceOnly if no other service in the account already uses it. When in doubt, don’t subtract it; the estimate will be about $9 high at most.
  3. Fill the tiers in orderThe first 10 TB at $0.09, the next 40 TB at $0.085, the next 100 TB at $0.07, the rest at $0.05.
  4. Add the GET requestsEvery download is also a GET request at $0.0004 per 1,000 for S3 Standard. The guide to calculating S3 GET and PUT request costs shows why that line is usually tiny for large files and large for tiny ones.

The AWS S3 data transfer out cost calculator linked above does these steps for you. Still, it is worth doing one by hand so you can sanity-check the bill.

Worked examples: estimate S3 download bandwidth charges

Example 1: a software download site, 2 TB a month

You host installers averaging 4 MB and serve 2 TB (2,048 GB) a month straight from S3. Nothing else in the account sends data to the internet.

  • Billable egress: 2,048 GB − 100 GB free = 1,948 GB
  • Transfer cost: 1,948 × $0.09 = $175.32
  • Downloads: 2,048 GB × 1,024 MB ÷ 4 MB = 524,288 GET requests
  • Request cost: 524,288 ÷ 1,000 × $0.0004 = $0.21
  • Total: $175.32 + $0.21 = $175.53 a month

If your EC2 fleet already used the free 100 GB, the transfer line becomes 2,048 × $0.09 = $184.32. Either way, egress is roughly 99% of the cost and storage of the installers is noise.

Example 2: a media archive serving 60 TB a month

60 TB is 61,440 GB. After the free 100 GB, 61,340 GB is billable and it spans three tiers:

  • First 10 TB: 10,240 GB × $0.09 = $921.60
  • Next 40 TB: 40,960 GB × $0.085 = $3,481.60
  • Remaining: 61,340 − 51,200 = 10,140 GB × $0.07 = $709.80
  • Total: $921.60 + $3,481.60 + $709.80 = $5,113.00 a month

The blended rate is $5,113.00 ÷ 61,440 GB ≈ $0.083 per GB. Tiering helps, but not dramatically: to reach the $0.05 tier you need more than 150 TB a month.

Example 3: cross-Region replication of 500 GB a month

You replicate 500 GB of new objects each month from us-east-1 to a disaster-recovery bucket. The transfer charge is 500 × $0.02 = $10.00 to us-west-2, or 500 × $0.01 = $5.00 to us-east-2. Replication also bills requests and the destination bucket’s storage, so run the full picture through the S3 storage, request and transfer calculator.

How to reduce S3 data transfer out cost

Egress is priced per byte, so the only levers are sending fewer bytes to the internet or sending them through a cheaper path.

  • Put CloudFront in front of the bucket. S3 to CloudFront is free, and cached objects are served from the edge instead of the bucket. CloudFront bills its own transfer to viewers, so compare its pricing for your traffic before switching; the gain is largest when the same objects are downloaded many times. To serve it on your own domain, point www to CloudFront with a Route 53 alias record.
  • Keep compute in the same Region as the data. An EC2 or Lambda job in us-east-1 reading a us-east-1 bucket pays nothing for transfer. The same job in another Region pays inter-Region rates on every read.
  • Compress before you store. Gzip or Brotli on JSON, CSV and logs often shrinks them several times, and you pay for the compressed bytes.
  • Stop re-downloading whole objects. Range requests, caching headers (Cache-Control, ETag) and client-side caches cut repeat transfer.
  • Make heavy consumers pay. For datasets shared with other AWS accounts, S3 Requester Pays buckets bill the requester for transfer and requests instead of you.
  • Find the bucket that’s doing it. Egress usually concentrates in one or two buckets. The script that finds the size of each S3 bucket tells you where data sits, and bucket request metrics tell you which ones are downloaded.

Storage class doesn’t change egress price. Moving data to cheaper tiers helps the storage line, which the comparison of S3 Standard vs Intelligent-Tiering cost covers, but a GB downloaded from Intelligent-Tiering costs the same to transfer as one from S3 Standard.

Ask your account where the egress comes from

Estimating is half the job; the other half is finding out what you’re actually paying. ChatWithCloud answers questions like “How much did I pay for S3 data transfer out last month, by usage type?” or “Which buckets had the most bytes downloaded this week?” from your terminal. It writes AWS SDK code, runs it on your machine with your profile and summarizes the JSON result, which is the question-to-SDK-code loop explained on the How it works page.

Cost questions need ce: permissions for Cost Explorer on top of read access, and because generated code runs without a confirmation step, use a read-only profile. The walkthrough to ask AI why your AWS bill increased from the terminal shows the exact Cost Explorer calls, and asking AI which S3 buckets are largest is the natural next question once you know S3 is the cause. The tool can be wrong, so check large numbers against the Billing console or a script that breaks last month’s AWS cost down by service.

Frequently asked questions

Is the first 100 GB of S3 data transfer out free every month?

Yes. AWS gives 100 GB of data transfer out to the internet free each month, aggregated across all AWS services and Regions except China and GovCloud. It is one allowance per account (or per consolidated bill), not 100 GB per bucket or per Region.

How much does it cost to download 1 TB from S3?

In us-east-1, 1 TB is 1,024 GB. With the free 100 GB available: 924 × $0.09 = $83.16. Without it: 1,024 × $0.09 = $92.16. Add GET requests at $0.0004 per 1,000.

Is uploading data to S3 free?

Data transfer in from the internet is free. You still pay for the PUT requests ($0.005 per 1,000 for S3 Standard) and for storing the data.

Does transfer from S3 to EC2 cost anything?

Not when the instance and the bucket are in the same Region. If they are in different Regions, you pay the inter-Region rate, for example $0.02 per GB from us-east-1 to us-west-2.

Is CloudFront cheaper than serving directly from S3?

S3 to CloudFront is free, so you only pay CloudFront’s own delivery charges. Whether that is cheaper depends on your volume and cache hit rate; compare CloudFront’s current pricing for your traffic in the AWS Pricing Calculator.

Related guides

Ask your AWS account in plain English

Your first 15 runs are free, with no OpenAI key needed.

npx chatwithcloud