AWS S3 Price Explained: Storage Classes, Hidden Costs and How to Stop Overpaying
One of the most deceptively tricky parts of managing an AWS bill is understanding S3 price. The headline number looks simple – a few cents per gigabyte – but S3 actually charges you across six separate dimensions at once. Most teams only look at the storage line, then ask why the invoice is two or three times what they thought it would be.
Thank you for reading this post, don't forget to subscribe!Here’s a clean breakdown of each piece of AWS storage billing: storage classes, request fees, data transfer costs, and the hidden costs that surprise teams. Whether you’re running a startup on a shoestring budget or managing cloud spend for an enterprise, understanding exactly how S3 billing works is the first step to controlling it.
How AWS S3 pricing works
S3 price on AWS is not flat rate. AWS bills you on 6 independent cost dimensions that add up at the same time each month:
Storage — the amount of GB you store and in which storage class
Requests — all API calls (PUT, GET, LIST, DELETE) are charged
Retrievals – certain storage classes charge a per-GB fee to read data back
Data transfer (egress) – data going from S3 to the Internet or other regions
Management capabilities – S3 Inventory, Storage Lens and lifecycle rules
Replication – cross-region or same-region replication adds both storage and transfer costs
Cost surprises are mainly from dimensions 2, 3, and 4. “Understanding each one before you architect a solution can save big money later.
S3 Storage Classes and Their GB Price
Storage class selection is the single most impactful decision you make for your monthly bill. The same data stored in different classes can cost anywhere between $0.023 per GB and $0.00099 per GB — 23x difference for the same bytes.
Below is a summary of the key storage classes and their current prices (US East — N. Virginia region):
Standard Storage S3
The default and most expensive class is S3 Standard. S3 price at this tier is $0.023 per GB for the first 50 TB/month, $0.022 per GB for the next 450 TB and $0.021 per GB above 500 TB. It is for data accessed frequently — websites, active application data, data lakes, and content distribution.
No retrieval fees or minimum storage duration. You pay only for what you store and what you request.
S3 Intelligent-Tiering
Intelligent-Tiering automatically moves objects between access tiers based on usage patterns. Frequently accessed data is billed at S3 Standard rates ($0.023 per GB per month) and data that moves to Deep Archive Access can be as low as $0.00099 per GB per month. The monitoring fee is $0.0025 per 1,000 objects per month, no retrieval fees, a good choice for unpredictable access patterns.
S3 Standard-IA, One Zone-IA
Standard-IA (Infrequent Access) is $0.0125 per GB, about 46% less than Standard storage, but adds a $0.01/GB retrieval fee. One Zone-IA stores data in a single Availability Zone, so it provides less redundancy but cuts storage costs down even further to $0.01/GB.
Both classes have a minimum storage duration of 30 days. Store an object for 10 days and delete it – you still pay for 30 days. This detail catches teams flat-footed using these classes for short-lived files.
S3 Glacier Tiers
Glacier is where S3 price gets dramatically lower but retrieval speed and price become the tradeoff:
Glacier Instant Retrieval — $0.004/GB, milliseconds access, $0.03/GB retrieval fee
Glacier Flexible Retrieval — $0.0036/GB, retrieval time is minutes to hours
Glacier Deep Archive – $0.00099/GB, retrieval within 12 hours, best for compliance retention
Deep Archive is our lowest cost storage option – 23x cheaper than Standard. It is designed for data that you need to store but almost never access: regulatory archives, old backup sets, long-term audit logs.
S3 Price Nobody Reads First: Request Fees
Request fees surprise many teams. Each API call to S3 will cost:
PUT, COPY, POST, LIST $0.005 per 1,000 requests
GET and all other retrievals — $0.0004 per 1000 requests
Glacier and Deep Archive requests – 2-10x more per 1,000
In low volumes this is negligible. At scale – a data pipeline running millions of GETs per day, or a media platform serving images – request charges can easily match or exceed your storage line. S3 Standard costs $0.40 per million GET requests. The same million GETs against Glacier Instant Retrieval cost $10, plus $0.03 per GB returned. Benchmark your request volume before choosing a storage class in high-read use cases.
S3’s Biggest Price Surprise: Data Transfer
The inbound data transfer to S3 is always free. Costs can multiply quickly when it comes to outbound transfer (data leaving S3):
S3 to the internet – free for the first 100 GB/month, then $0.09/GB for the next 9.9 TB, falling to $0.085/GB, $0.07/GB, and $0.05/GB at higher volumes
S3 to another AWS region – $0.02/GB S3 to EC2 in the same region – Free (using a VPC Gateway Endpoint)
That last point is important. One frequently cited example is an engineer who logged over 20,000 GB of NAT Gateway traffic to S3 in a single day, at a cost of over $900 in transfer fees that would have been completely avoided by a free VPC Gateway Endpoint. Transfer fees are the most avoidable cost item and are often the last thing teams set up.
AWS Free Tier in 2025: What Changed?
New AWS accounts created before July 15, 2025 got 5 GB of S3 Standard storage, 20,000 GET requests, and 2,000 PUT requests free for 12 months.
The model changed. New accounts created on or after July 15, 2025 will receive up to $200 in AWS Free Tier credits usable across eligible services, including S3. Credits are valid for 6 months on the free plan and all credits must be used within 12 months. Moving to a paid plan will automatically apply any remaining credits to your bill.
The new credit model is more flexible and generally more generous to teams doing heavy initial testing, but it’s no longer S3-specific. If you read recent articles that mention “5 GB free forever” that information is outdated for new accounts.
Practical Tips on How to Reduce Your S3 Costs
Match Storage Class to Access Patterns
This is the best optimization possible with the highest ROI. Audit your buckets with S3 Storage Lens or AWS Cost Explorer. Data that has not been accessed for 90 days is almost certainly not needed in Standard.
Lifecycle Policies
Lifecycle rules schedule objects to move between storage classes. Typical pattern:
Days 0–30: S3 Standard ($0.023/GB) — active data
Days 30–90: Standard-IA ($0.0125/GB) – wind down
Days 90-365: Glacier Instant ($0.004/GB) — low access
Days 365+: Deep Archive ($0.00099/GB) – long-term retention
Set it once and your storage costs will automatically scale down as your data ages.
Use VPC Gateway Endpoints.
No-cost configuration change. Routing S3 traffic from EC2 through a VPC Gateway Endpoint completely eliminates inter-service transfer charges. This is one of the easiest wins for AWS-heavy architectures that run compute and storage side-by-side.
Turn on S3 Intelligent-Tiering for unpredictable workloads
When you can’t predict access patterns reliably, Intelligent-Tiering makes the tiering decisions for you. The $0.0025 per 1,000 object monitoring fee quickly pays for itself when it keeps data out of Standard unnecessarily.