S3 Standard costs $0.023 per GB per month in us-east-1. Most articles bury this number three paragraphs down. Here it is in the first sentence, because that is the only number most people actually need.

But storage cost is rarely where AWS bills blow up. After 30 years managing infrastructure budgets, the pattern is always the same: teams size the storage bill correctly and completely miss the egress charges. A team storing 1TB and serving 500GB outbound each month pays roughly $23 in storage and $45 in data transfer. The egress costs almost twice as much as the storage itself.

Here is every S3 cost component broken down, with the real numbers AWS charges in 2026.

S3 Storage Tier Pricing

AWS offers several storage classes targeting different access patterns. Picking the wrong one wastes money in either storage fees or retrieval fees.

Storage ClassPrice per GB/monthBest For
S3 Standard$0.023Frequently accessed data
S3 Intelligent-Tiering (frequent)$0.023Unknown or changing patterns
S3 Intelligent-Tiering (infrequent)$0.0125Auto-moved after 30 days inactive
S3 Standard-IA$0.0125Infrequent access, rapid retrieval
S3 Glacier Instant Retrieval$0.004Archives accessed once per quarter
S3 Glacier Flexible Retrieval$0.0036Archives with minutes-to-hours retrieval

Glacier Instant Retrieval at $0.004/GB is worth a hard look for backups and logs you need to access occasionally but not regularly. The storage cost is 83% cheaper than Standard. The catch: retrieval fees apply, and if you are pulling data often, those charges accumulate fast.

Intelligent-Tiering monitoring fee: AWS charges $0.0025 per 1,000 objects per month to monitor and automatically move objects between tiers. For buckets with millions of small files, this monitoring fee can exceed the storage savings. Run the math before enabling it.

Request Costs: The Line Item Nobody Reads

Every API call to S3 costs money. Most teams never look at this line on their bill until it is too large to ignore.

Request TypePrice per 1,000 requests
PUT, COPY, POST, LIST$0.005
GET, SELECT, and all others$0.0004
DELETE requestsFree
Lifecycle transition requests$0.01 per 1,000

PUT requests are 12.5x more expensive than GET requests. If your application writes millions of small objects, request costs matter. An application generating 10 million PUTs per month pays $50 in request fees alone, on top of whatever storage it uses.

LIST operations are billed at the PUT rate, not the GET rate. Applications that list bucket contents frequently can generate surprising charges. Use prefixes and structure your key namespace to minimize LIST calls.

Data Transfer: Where the Real Bill Lives

This is the section that matters most. Storage costs are predictable and scale linearly. Data transfer out to the internet is where AWS margins are highest, and where teams consistently underestimate costs.

Transfer TypePrice per GB
Data in (uploads to S3)Free
Transfer between S3 and EC2 (same region)Free
Transfer to AWS services (same region)Free
Transfer out to internet: first 100GB/monthFree
Transfer out to internet: 100GB to 10TB$0.09
Transfer out to internet: 10TB to 50TB$0.085
Transfer to another AWS region$0.02
Transfer via CloudFront (from S3)Free

Critical note on CloudFront: Transfer from S3 to CloudFront is free. If you are serving S3 content directly to users at $0.09/GB, put CloudFront in front of it. CloudFront has its own egress pricing, but it is lower at scale and you get caching on top of it. Serving S3 directly to end users without CloudFront is almost always the wrong architecture for anything with real traffic.

A Real Monthly Bill: 1TB Stored, 500GB Outbound

Here is what a team actually pays storing 1TB in S3 Standard and serving 500GB to end users each month. These are the real numbers, not estimates.

// monthly s3 bill breakdown — us-east-1
Storage: 1,024 GB × $0.023$23.55
GET requests: 1M × $0.0004/1000$0.40
PUT requests: 100K × $0.005/1000$0.50
Egress: first 100GB free$0.00
Egress: remaining 400GB × $0.09$36.00
Total Monthly Cost~$60.45

The storage costs $23.55. The egress costs $36.00. That ratio is typical. Scale to 5TB stored and 2TB outbound and you are looking at roughly $118 storage and $171 in egress. The transfer bill is always larger than the storage bill once you have real traffic.

If that same team used CloudFront to serve their content instead of S3 directly, they would eliminate the S3 egress charge entirely. CloudFront charges $0.0085/GB for the first 10TB in us-east-1, meaning 400GB would cost about $3.40 instead of $36. The architectural decision is worth far more than any storage tier optimization.

Infrequent Access and Glacier: Hidden Retrieval Fees

The cheaper storage tiers come with retrieval charges that can wipe out your savings if you are not careful.

  • S3 Standard-IA retrieval: $0.01 per GB retrieved. Break-even against Standard is roughly 30 days of inactivity per month.
  • Glacier Instant Retrieval: $0.03 per GB retrieved. This tier is only worth it if you access the data less than once per month on average.
  • Glacier Flexible Retrieval: Free bulk retrieval (5-12 hours), $0.01/GB expedited retrieval (1-5 minutes). Know your RTO before choosing this tier.

The mistake teams make: they move data to IA to save money, then access it more often than expected and end up paying more. The Intelligent-Tiering class exists precisely to solve this, but the monitoring fee per object means it only pencils out for objects larger than about 128KB.

The Practical Checklist

Before accepting your next S3 bill without question, check these four things:

  • Are you serving S3 directly to users? Put CloudFront in front of it. The egress savings alone pay for it immediately.
  • Do you have S3 lifecycle rules configured? Objects that age into infrequent access patterns should transition automatically. No lifecycle policy means everything stays in Standard forever.
  • Are you paying for inter-region replication transfer? At $0.02/GB, replicating 1TB per month adds $20 before storage costs. Know why you are replicating and whether it is necessary.
  • What are your LIST call volumes? Applications that poll S3 for new objects with frequent LIST requests can generate more in request fees than storage fees for small buckets.

Cost comparison context: Backblaze B2 charges $0.006/GB/month for storage (74% cheaper than S3 Standard) with no egress fees when accessed via Cloudflare. For static assets with global traffic, B2 plus Cloudflare is a serious alternative to S3 plus CloudFront. See the full B2 vs S3 comparison for the math.

S3 Standard at $0.023/GB is not expensive storage. The operational capabilities, the ecosystem integrations, the durability guarantees: all worth paying for. But egress at $0.09/GB reflects AWS extracting maximum value from your network dependency. That is the line item to watch, minimize, and architect around.