S3 is AWS's oldest and most used service. Nearly every AWS account has S3 buckets, and many companies have more data in S3 than they realize. The pricing starts at $0.023 per GB/month for Standard storage and drops as low as $0.00099 for Glacier Deep Archive — a 23x price range for the same service.
The trap? S3 charges for more than just storage. There are request costs, data retrieval fees, data transfer charges, and lifecycle transition costs that don't show up in the headline price. A bucket that "costs $100/month to store" can actually generate a $500 bill once you factor in GET requests, cross-region replication, and egress fees.
TL;DR: S3 Standard costs $0.023/GB/month. The free tier includes 5GB storage and 20,000 GET requests for 12 months. For data accessed less than once a month, S3 Intelligent-Tiering automatically moves objects to cheaper classes and saves 40-70% with zero effort. The biggest hidden cost is data transfer out ($0.09/GB after 100GB free) — not storage.
S3 Storage Class Pricing
S3 offers 6 storage classes. Each trades storage cost against retrieval cost and speed:
| Storage Class | $/GB/Month | Retrieval Cost | Retrieval Speed | Min Storage Duration | Best For |
|---|---|---|---|---|---|
| Standard | $0.023 | None | Instant | None | Frequently accessed data |
| Standard-IA | $0.0125 | $0.01/GB | Instant | 30 days | Monthly access patterns |
| One Zone-IA | $0.010 | $0.01/GB | Instant | 30 days | Recreatable infrequent data |
| Glacier Instant | $0.004 | $0.03/GB | Milliseconds | 90 days | Quarterly access, instant need |
| Glacier Flexible | $0.0036 | $0.01-0.03/GB | 1-12 hours | 90 days | Archive, hours of wait OK |
| Deep Archive | $0.00099 | $0.02/GB | 12-48 hours | 180 days | Long-term compliance, rare access |
(AWS S3 Pricing, 2026)
The Storage Class Decision Tree
- Accessed daily? → Standard ($0.023/GB)
- Accessed weekly/monthly? → Standard-IA ($0.0125/GB) — 46% cheaper
- Can survive single-AZ? → One Zone-IA ($0.01/GB) — 57% cheaper
- Accessed quarterly? → Glacier Instant ($0.004/GB) — 83% cheaper
- Can wait hours? → Glacier Flexible ($0.0036/GB) — 84% cheaper
- Compliance/archive, rare access? → Deep Archive ($0.00099/GB) — 96% cheaper
Request Pricing: The Cost Nobody Expects
Storage is only part of the S3 bill. Every GET, PUT, COPY, LIST, and lifecycle transition costs money:
| Operation | Standard | Standard-IA | Glacier Instant |
|---|---|---|---|
| PUT, COPY, POST, LIST | $0.005/1,000 | $0.01/1,000 | $0.02/1,000 |
| GET, SELECT | $0.0004/1,000 | $0.001/1,000 | $0.01/1,000 |
| Lifecycle transitions | — | $0.01/1,000 | $0.02/1,000 |
| Data retrievals | Free | $0.01/GB | $0.03/GB |
The request trap: We've seen customers move 10TB of small files (1-10KB each) to S3-IA to save on storage — then their bill went UP because of retrieval request costs. If you have millions of small, frequently accessed files, Standard is cheaper despite the higher storage rate. Request costs dominate when files are small and numerous.
Quick Math: When Request Costs Matter
| Scenario | Storage Cost | Request Cost | Total |
|---|---|---|---|
| 1TB of large files (1,000 GETs/month) | $23.00 | $0.0004 | $23.00 |
| 1TB of small files (10M GETs/month) | $23.00 | $4.00 | $27.00 |
| 1TB large files in IA (1,000 GETs/month) | $12.50 | $0.01 + $10 retrieval | $22.51 |
| 1TB small files in IA (10M GETs/month) | $12.50 | $10.00 + $10 retrieval | $32.50 |
For the small-files scenario, Standard-IA is more expensive than Standard. Always calculate total cost (storage + requests + retrieval), not just storage.
Data Transfer: The Real Killer
Data transfer out of S3 to the internet is often the biggest cost component, especially for content-heavy applications:
| Tier | Price/GB |
|---|---|
| First 100 GB/month | Free |
| Up to 10 TB/month | $0.09/GB |
| Next 40 TB/month | $0.085/GB |
| Next 100 TB/month | $0.07/GB |
| Over 150 TB/month | $0.05/GB |
| Transfer to CloudFront | Free |
| Transfer to same-region services | Free |
| Cross-region transfer | $0.02/GB |
The CloudFront loophole: Transferring data from S3 to CloudFront is free. CloudFront's first 1TB of outbound transfer is also free. So if you serve static assets through CloudFront instead of directly from S3, you effectively get 1TB of free egress every month — plus faster delivery.
For sites serving 5TB/month of images and downloads:
- Direct from S3: 100GB free + 4,900GB × $0.09 = $441/month
- Via CloudFront: 1TB free + 4TB × $0.085 = $340/month (23% cheaper + faster)
S3 Intelligent-Tiering: The Set-and-Forget Option
If you're not sure which storage class to use — or if your access patterns change unpredictably — Intelligent-Tiering does the work for you. It automatically moves objects between access tiers based on usage:
| Access Tier | When Activated | Storage Cost | Monitoring Cost |
|---|---|---|---|
| Frequent Access | Default (< 30 days since last access) | $0.023/GB | $0.0025/1,000 objects |
| Infrequent Access | After 30 days without access | $0.0125/GB | Included |
| Archive Instant | After 90 days without access | $0.004/GB | Included |
| Archive Access | After 90 days (opt-in) | $0.0036/GB | Included |
| Deep Archive | After 180 days (opt-in) | $0.00099/GB | Included |
The trade-off: You pay a small monitoring fee ($0.0025 per 1,000 objects per month) but save 40-70% on storage costs automatically. For objects over 128KB that have unpredictable access patterns, Intelligent-Tiering is almost always worth it.
When NOT to use it: Objects under 128KB (monitoring cost exceeds savings) and data you know will be accessed frequently (just use Standard).
The 128KB threshold matters: Intelligent-Tiering charges a monitoring fee per object, not per GB. For a bucket with 100 million objects under 128KB, the monitoring fee alone is $250/month. For the same data stored as 1,000 larger objects, it's $0.003/month. Aggregate small objects into larger ones before enabling Intelligent-Tiering.
S3 Lifecycle Policies: Automate Your Savings
If you know your access patterns, lifecycle policies are more precise (and cheaper) than Intelligent-Tiering because there's no monitoring fee.
A Typical Lifecycle Policy
Day 0-30: S3 Standard ($0.023/GB) — Active data
Day 30-90: Standard-IA ($0.0125/GB) — Cooling down
Day 90-365: Glacier Instant ($0.004/GB) — Rarely accessed
Day 365+: Deep Archive ($0.00099/GB) — Compliance retention
Cost for 1TB over one year:
| Strategy | Annual Cost |
|---|---|
| All in Standard (no lifecycle) | $276 |
| With lifecycle policy above | $73 |
| Savings | $203 (74%) |
The lifecycle transition itself costs $0.01-0.05 per 1,000 objects, so factor that in for buckets with millions of small files.
The S3 Free Tier
New AWS accounts get 12 months of free S3:
- 5 GB of Standard storage
- 20,000 GET requests
- 2,000 PUT requests
- 100 GB of data transfer out (shared across all AWS services)
After 12 months, you lose the storage and request freebies. The 100GB outbound transfer free tier is permanent across all AWS services.
Real-World S3 Cost Examples
| Use Case | Data Volume | Storage Class | Monthly Cost |
|---|---|---|---|
| Startup static website | 10 GB | Standard | $0.23 |
| SaaS user uploads | 500 GB | Standard | $11.50 |
| Log storage (90-day retention) | 2 TB | IA + Lifecycle | ~$15-25 |
| Media library (10TB, CDN-served) | 10 TB | Standard + CloudFront | $230 + transfer |
| Data lake (100TB, analytics) | 100 TB | Intelligent-Tiering | $1,000-2,300 |
| Compliance archive (50TB, 7yr) | 50 TB | Deep Archive | $49.50 |
The compliance archive scenario is worth highlighting: 50TB of data for under $50/month is remarkable. That's 7 years of retention for ~$4,200 total. Try doing that with any on-premise solution.
5 S3 Cost Optimization Quick Wins
1. Enable Intelligent-Tiering on All Buckets >1GB
For general-purpose buckets where you can't predict access patterns, Intelligent-Tiering is a no-brainer for objects over 128KB. Set it as the default storage class for new objects.
2. Set Up Lifecycle Policies for Logs and Backups
Application logs, access logs, and backups almost always follow a predictable pattern: hot for a week, warm for a month, cold for a year, delete after compliance period. Automate this with lifecycle policies.
3. Use S3 Storage Lens
S3 Storage Lens provides a dashboard showing storage usage, access patterns, and cost optimization recommendations across all your buckets. It's free for the basic metrics and can identify buckets that should be in cheaper storage classes.
4. Clean Up Incomplete Multipart Uploads
Failed multipart uploads leave fragments in your bucket that you're paying for. Set a lifecycle rule to abort incomplete multipart uploads after 7 days. This is free storage savings that most people miss.
5. Use S3 Select Instead of Downloading Entire Objects
If you only need a subset of data from a large file (CSV, JSON, Parquet), S3 Select scans and returns only the matching rows. You pay for data scanned ($0.002/GB) but save on transfer costs and Lambda compute time.
Frequently Asked Questions
How much does 1TB of S3 storage cost?
It depends on the storage class. S3 Standard: $23.55/month. Standard-IA: $12.80/month. Glacier Instant: $4.10/month. Deep Archive: $1.01/month. For most data that isn't accessed daily, choosing the right storage class saves 46-96% compared to Standard.
Is S3 cheaper than Azure Blob or Google Cloud Storage?
S3 Standard ($0.023/GB) is priced identically to Azure Hot Blob Storage ($0.018-$0.023/GB depending on redundancy) and Google Cloud Standard ($0.020-$0.023/GB). The differences show up in request costs, egress pricing, and free tiers. For most workloads, the storage cost is equivalent across providers — optimization of access patterns matters more than switching providers.
What's the cheapest way to store data on AWS?
S3 Glacier Deep Archive at $0.00099/GB/month — under $1/TB/month. The trade-off: retrieval takes 12-48 hours and costs $0.02/GB. For data you need to keep but rarely access (compliance, legal holds, historical backups), Deep Archive is the cheapest storage available on any major cloud provider.
How do I reduce my S3 bill quickly?
Three immediate actions: (1) Enable Intelligent-Tiering on your largest buckets. (2) Set lifecycle policies to move logs and backups to cheaper storage classes. (3) Abort incomplete multipart uploads — they're invisible storage waste. These three changes typically reduce S3 bills by 30-50% with minimal effort.
Does S3 charge for data transfer between S3 and EC2?
Transfer between S3 and EC2 in the same region is free. Cross-region transfer costs $0.02/GB. Transfer to CloudFront is free. Transfer from S3 to the internet costs $0.09/GB (after 100GB free). Always keep your compute and storage in the same region to avoid transfer charges.
Get Your S3 Costs Under Control
S3 pricing is straightforward on the surface — $0.023/GB/month for Standard — but the real bill comes from requests, retrievals, and data transfer. The companies that pay the least for S3 aren't the ones storing less data. They're the ones using the right storage class for each dataset.
Your action plan:
- Audit with Storage Lens — See where your data lives and how it's accessed
- Enable Intelligent-Tiering — Automatic savings for unpredictable access
- Add lifecycle policies — Automate transitions for predictable data
- Route through CloudFront — Free S3-to-CloudFront transfer + 1TB free egress
- Use Wring to find S3 waste automatically — we catch what Storage Lens misses




