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 Class Price per GB/month Best For
S3 Standard $0.023 Frequently accessed data
S3 Intelligent-Tiering (frequent) $0.023 Unknown or changing patterns
S3 Intelligent-Tiering (infrequent) $0.0125 Auto-moved after 30 days inactive
S3 Standard-IA $0.0125 Infrequent access, rapid retrieval
S3 Glacier Instant Retrieval $0.004 Archives accessed once per quarter
S3 Glacier Flexible Retrieval $0.0036 Archives 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 Type Price per 1,000 requests
PUT, COPY, POST, LIST $0.005
GET, SELECT, and all others $0.0004
DELETE requests Free
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 Type Price 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/month Free
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.

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:

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.