All Articles
Cloud Cost Optimization

Amazon S3 pricing in 2026: What it really costs and how to optimize it

Few cloud services feel as simple as Amazon S3. You put objects in a bucket, pay for the space they take up, and move on. The pricing page reinforces that impression: pick a storage class, multiply by the data you have, and the estimate practically writes itself.

Then the invoice arrives, and it rarely matches.

Amazon Simple Storage Service, commonly referred to as Amazon S3 or simply S3, is not one price. It is a set of meters running at the same time: storage by class, requests, retrieval, data transfer, and a long tail of features and neighboring AWS services. For many teams, storage ends up being the smaller part of the bill. A busy bucket can spend more on requests than on bytes. A NAT Gateway can charge more to move data than Amazon S3 charges to hold it. A versioned backup bucket can quietly double in size.

This guide walks through storage class pricing, the charges that sit on top of storage, data transfer, add-on features, and the adjacent AWS costs are often overlooked with estimating costs. It includes break-even rules of thumb, three worked scenarios, and six changes that deliver the largest savings. Use it to understand what Amazon S3 costs, why it costs that much, and where to find cost savings for your organization.

What is Amazon S3?

Amazon S3 is AWS's object storage service. Data lives as objects inside buckets, is accessed through an API, and is designed for 99.999999999% durability. It serves as the storage layer for data lakes, backups, application assets, media delivery, log archives, and the datasets behind analytics and AI workloads. Newer additions, including Amazon S3 Tables for analytics and Amazon S3 Vectors for embeddings, extend it into areas that once required a separate service and a separate bill.

Because S3 is so widely used, it is rarely owned by a single team in an organization. Many buckets, many owners, and few cost reviews is how S3 spend grows without anyone deciding it should.

How Amazon S3 pricing works

Your Amazon S3 bill is shaped by six variables, and understanding how each one behaves makes everything that follows easier to model.

Storage class: Each class trades storage price against retrieval cost, minimum commitments, and availability. The spread between the cheapest and most expensive class is roughly 23 times.

Volume: Storage pricing is tiered. Rates fall as you cross 50TB and 500TB per month.

Request activity: Every API call is billed per 1,000 requests, and rates differ by request type and storage class.

Retrieval and minimums: Colder classes refers to data you access less often and are often described in Amazon S3 as Glacier storage classes. These are charged per GB retrieved, enforce minimum storage durations, and bill small objects as if they were larger.

Data movement: Data into S3 is free. Data out, across regions, and through certain network paths is not.

Region: Every rate in this guide is for US East (N. Virginia). Other regions can price higher.

The mental model: Four layers of Amazon S3 cost

Most S3 overruns happen because teams model one layer while the others accumulate.

Layer 1: Storage. This is the per-GB-month charge for the storage class you chose, and it is the number the pricing page leads with.

Layer 2: Access. This layer covers requests, retrieval fees, minimum storage durations, and minimum billable object sizes, and it adds the most to your bill when you store many small objects or cold data.

Layer 3: Movement. This layer covers internet egress, cross-region transfer, and replication, along with network paths such as NAT Gateways that add their own per-GB charges.

Layer 4: Everything around it. This layer covers versioning, incomplete uploads, logging, encryption key requests, and monitoring features, plus adjacent services like CloudTrail and CloudWatch that bill separately.

Understanding the storage class landscape

S3 Standard in US East starts at $0.023 per GB-month for the first 50TB, drops to $0.022 for the next 450TB, and $0.021 beyond 500TB. Glacier Deep Archive costs $0.00099. That is a 23-times difference for the same bytes, and most teams are not storing everything in the class that matches how it is actually used. This is an example of how thoroughly evaluating storage class rates and properly understanding your organization's data usage can result in cost savings.

Rather than memorizing rates, it helps to think of them in four tiers by how often the data is accessed. These are common industry terms, not official AWS names:

  • Hot: S3 Standard and S3 Express One Zone are best for data that is accessed frequently, with no retrieval fees and millisecond latency.
  • Warm: Standard-IA and One Zone-IA offer a lower storage price in exchange for per-GB retrieval fees and 30-day minimum storage periods.
  • Cold: Glacier Instant Retrieval and Glacier Flexible Retrieval are built for data that is touched only a few times a year.
  • Frozen: Glacier Deep Archive is the cheapest class, and it is designed for compliance retention and data you hope never to read.

Amazon S3 Intelligent-Tiering spans all of these by moving objects automatically.

Note that pricing information was last verified in October 2026 for US East (N. Virginia). Rates, free tier terms, and availability change. Confirm current details on the official AWS S3 pricing page before finalizing budgets.

Storage classStorage (per GB-month)Retrieval feeMinimum duration
S3 Standard$0.023NoneNone
S3 Intelligent-Tiering$0.023 down to $0.00099, plus monitoring feeNoneNone
S3 Standard-IA$0.0125$0.01 per GB30 days
S3 One Zone-IA$0.01$0.01 per GB30 days
S3 Glacier Instant Retrieval$0.004$0.03 per GB90 days
S3 Glacier Flexible Retrieval$0.0036Bulk free, Standard $0.01 per GB, Expedited $0.03 per GB90 days
S3 Glacier Deep Archive$0.00099Bulk $0.0025 per GB, Standard $0.02 per GB180 days
S3 Express One Zone~$0.11NoneNone

A few patterns worth knowing

Intelligent-Tiering is not free automation: It bills a monitoring fee of $0.0025 per 1,000 objects on top of the storage rate, but charges no retrieval fees when data moves between tiers. That fee matters at scale and for small objects, covered below.

One Zone-IA trades resilience for price: It stores data in a single Availability Zone, so it suits recreatable data such as thumbnails or secondary copies, not your only copy of anything.

Express One Zone is a performance product: Storage is priced around $0.11 per GB-month, roughly five times Standard, but request charges are far lower. It earns its premium in request-heavy workloads such as ML training and high-frequency analytics, and it is a poor fit for cold data.

Three break-even rules worth memorizing

These are the rules that decide whether a cheaper class is actually cheaper.

Standard-IA versus Standard: IA saves $0.0105 per GB-month but charges $0.01 per GB each time data is read. If you read an object in full more than about once a month, Standard is cheaper. Add the 30-day minimum and the 128KB minimum billable size, and IA only makes sense for data that is genuinely quiet.

Glacier Instant Retrieval versus Standard: The storage saving is $0.019 per GB-month against a $0.03 per GB retrieval fee. Break-even is roughly one full read every six weeks. Data read quarterly or less belongs here. Data read monthly does not.

Intelligent-Tiering versus Standard: The monitoring fee works out to $0.0000025 per object per month. An object that moves to the infrequent tier saves $0.0105 per GB, so it needs to be around 250KB before the saving covers the fee. Objects under 128KB are never auto-tiered. Objects between 128KB and roughly 250KB are monitored but save too little to justify it.

The charges that sit on top of storage

This is Layer 2, and it is where bucket economics change for workloads with many small objects or cold data.

Requests

Every API call S3 receives is billed per 1,000 requests, and the rate depends on the request type and the storage class. Here is how the main request charges break down:

  • Writes and lists: PUT, COPY, POST, and LIST requests cost $0.005 per 1,000 in Amazon S3 Standard.
  • Reads: GET and SELECT requests cost $0.0004 per 1,000 in S3 Standard, so writes and lists cost more than 12 times what reads do.
  • Free requests: DELETE and CANCEL requests are free.
  • Infrequent Access classes: These classes charge more, at about $0.01 per 1,000 for writes and $0.001 per 1,000 for reads.
  • Console browsing: Browsing objects in the S3 console generates billable requests at the same rates as API calls.

Example: Uploading 100 million 4KB objects creates about 380GB of data, which costs roughly $9 per month to store. The 100 million PUT requests cost $500. The upload costs more than 50 times what a month of storage does.

Retrieval, minimums, and transitions

Colder classes add four more charges beyond the per-request rates, and each one catches teams off guard in a different way:

  • Retrieval fees: These apply whenever data is read from Infrequent Access and Glacier classes. Glacier Flexible Retrieval and Deep Archive price retrieval by speed (see the table above), and restores can take anywhere from minutes to 48 hours. Bulk retrieval is the cheapest option when the timeline allows, and it is free on Flexible Retrieval.
  • Minimum storage durations: You are billed for the full minimum period even if you delete an object earlier.
  • Minimum object sizes: Standard-IA bills every object as at least 128KB, so a 16KB object is billed as 128KB and costs more than four times as much as it would in Standard. Glacier Flexible Retrieval and Deep Archive add about 40KB of billable metadata overhead per object, which can dwarf the data itself when objects are tiny.
  • Life cycle transitions: Moving objects between classes is billed as requests, and the cost depends on the destination:
    • Into Standard-IA: About $0.01 per 1,000 objects. Moving 16 million objects costs roughly $160 as a one-time charge, which can take several months of storage savings to recover for small objects.
    • Into Glacier Deep Archive: $0.05 per 1,000 objects, so moving 100 million objects costs $5,000 in request fees alone.
    • Default protection: Since September 2024, new or modified life cycle configurations skip objects under 128KB by default. That protects against the worst cases, but it means small objects need to be aggregated before they can be archived cost-effectively.

Data transfer: Where the real surprises live

Layer 3 is where a modest storage bill becomes a large one.

What is free: Uploading data into S3 is free, the first 100GB per month out to the internet is free across all AWS services, and transfer from S3 to CloudFront carries no charge. Transfer to EC2 and other services in the same region is also free.

What is not free: Beyond the free allowance, internet egress costs $0.09 per GB up to 10TB, then steps down to $0.085, $0.07, and $0.05 per GB above 150TB. Cross-region transfer, including replication traffic, typically runs about $0.02 per GB. Transfer Acceleration and Multi-Region Access Points add per-GB surcharges on top of standard rates.

Example: A 5TB media library costs about $115 per month to store. Serving 10TB per month directly from the bucket adds roughly $890 in egress, nearly eight times the storage bill. Putting CloudFront in front removes the S3-to-CDN transfer charge and reduces origin requests.

The NAT Gateway trap

Workloads in private subnets often reach S3 through a NAT Gateway. That works, but NAT charges per GB processed (about $0.045 in US East), even when the destination is S3 in the same region, where S3 itself charges nothing. An S3 gateway VPC endpoint provides the same access at no charge. A fleet reading 30TB per month through NAT pays roughly $1,350 for a path that could be free. It is one of the most common and least visible S3-related charges, because it appears under EC2-Other, not S3.

Add-on features and adjacent AWS charges

Layer 4 is a collection of small meters that individually look harmless.

Replication: Cross-Region Replication stores a full second copy, charges PUT requests at the destination, and bills inter-region transfer. Replication Time Control adds a per-GB fee. Same-region Replication avoids the transfer charge but still doubles storage.

Versioning: With versioning enabled, overwriting or deleting an object keeps the old version, and every version bills as storage. Without a rule to expire noncurrent versions, volume grows quietly.

Incomplete multipart uploads: Failed or abandoned uploads leave parts in the bucket that bill as storage but do not show up in normal object listings. A life cycle rule to abort them after seven days costs nothing.

Encryption and audit logging: SSE-KMS bills per key and per request (about $0.03 per 10,000), and busy buckets can generate millions of calls. Amazon S3 Bucket Keys can cut that request volume dramatically. CloudTrail data events, billed per event (about $0.10 per 100,000), can rival the Amazon S3 request bill if enabled on a busy bucket.

Monitoring and analytics: Storage Lens has a free tier of metrics, while advanced metrics, Inventory, and Batch Operations carry per-object or per-job charges. Server access logging writes to another bucket that then has its own storage bill.

Newer services: S3 Tables and S3 Vectors have their own meters for storage, requests, and monitoring. S3 Vectors is particularly relevant for AI workloads, and our Amazon Bedrock pricing guide explains why it is often a cheaper vector store for Knowledge Bases.

Real-world cost scenarios on S3

Applying current rates to representative workloads shows how the layers combine.

Note: Dollar figures below are illustrative, based on US East rates as of October 2026, and exclude taxes and minor request charges. The relative savings, which is the more useful takeaway, holds even as underlying rates shift.

Scenario 1: Analytics pipeline reading through a NAT Gateway

Stack: 30TB in S3 Standard, an EC2 fleet in private subnets reading about 30TB per month, and 60 million GET requests.

Before: The fleet reaches S3 through a NAT Gateway. S3 charges nothing to send data to EC2 in the same region, but the NAT Gateway charges $0.045 for every GB that passes through it.

After: An S3 gateway VPC endpoint carries the S3 traffic instead. The endpoint is free, so the NAT processing charge disappears while storage and request costs stay the same.

ComponentBeforeAfter (gateway endpoint)
Storage (30,000GB)$690$690
GET requests (60M)$24$24
NAT Gateway data processing$1,350$0
Total~$2,064~$714

One routing change cuts the bill by 65%. No data was moved, deleted, or reclassified. (NAT hourly charges are excluded because the gateway is typically needed for other traffic.)

Scenario 2: Data lake with mixed access patterns

Stack: 100TB of data, around 20TB accessed regularly, 30TB accessed occasionally, and 50TB rarely touched. Average object size is 5MB, or about 20 million objects.

ApproachMonthly storage cost
All S3 Standard$2,250
Life cycle rules (20TB Standard, 30TB Standard-IA, 50TB Glacier Instant)~$1,035
Intelligent-Tiering (same distribution, plus $50 monitoring)~$1,085

Both optimized approaches cut storage costs by more than half. Life cycle rules are slightly cheaper, but they depend on your access assumptions being right. If cold data is read more than expected, retrieval fees erode the savings. Intelligent-Tiering costs about $50 more per month and has no retrieval fees, which makes it the safer choice when patterns are uncertain.

Scenario 3: Backup workload with versioning and replication

Stack: 20TB of current data, versioning enabled with no expiry rule so noncurrent versions grow to another 20TB, cross-region replication to a second region, and 2TB of new data replicated monthly.

Before: Versioning is on with no expiry rule, so noncurrent versions keep accumulating, and the replica in the second region is stored in S3 Standard.

After: Noncurrent versions expire after 30 days, and the replica is stored in Standard-IA, since a disaster recovery copy is rarely read.

ComponentBeforeAfter
Source bucket (current + noncurrent)$920 (40TB)$506 (22TB)
Replica bucket$920 (S3 Standard)$275 (22TB, Standard-IA)
Inter-region transfer$40$40
Total~$1,880~$821

Together, the two changes cut the monthly bill by about 56%, and the data that matters is still protected in both regions.

Six cost optimization strategies to implement

The scenarios above show where S3 savings tend to come from. These six strategies turn those lessons into actions, and together they cover all four cost layers.

1. Match storage class to access pattern

Look at actual access data before moving anything, using S3 Storage Lens or request metrics, then apply the break-even rules above. Moving data to a colder class that gets read monthly increases cost.

2. Put life cycle rules on every bucket

At minimum, every bucket should abort incomplete multipart uploads after seven days and expire noncurrent versions after a defined window. Add transitions for data with a predictable aging pattern, and check the transition request cost against the saving for small objects.

3. Use Intelligent-Tiering where patterns are unpredictable

It is a strong default for large objects with uncertain access, such as data lakes and shared datasets. Avoid it for large populations of objects under about 250KB, where the monitoring fee outweighs the saving.

4. Aggregate small objects

Combining small files into larger ones (compaction, archives, columnar formats like Parquet) reduces request counts, avoids minimum size penalties, and lowers monitoring fees. It often saves more than any change of class.

5. Close the transfer leaks

Use gateway endpoints for S3 traffic from VPCs, keep compute in the same region as the data, and put CloudFront in front of public content. These changes require no data movement and often pay back immediately.

6. Right-size replication, encryption, and logging

Replicate only what needs a second copy, and store replicas in a cheaper class. Enable S3 Bucket Keys on KMS-encrypted buckets. Scope CloudTrail data events to the buckets that need them, and expire access logs on a schedule.

Pre-production cost checklist

Running through these questions before a new bucket or workload goes live catches most unexpected charges.

Storage

  • Is the storage class based on measured access patterns?
  • Is there a life cycle rule for transitions, noncurrent versions, and incomplete uploads?

Access

  • Will this workload create many small objects or heavy LIST activity?
  • Have we checked minimum duration and size charges for colder classes?

Movement

  • Do VPC workloads use a gateway endpoint instead of a NAT Gateway?
  • Is public content served through CloudFront?
  • Is cross-region replication limited to data that needs it?

Adjacent services

  • Are S3 Bucket Keys enabled for SSE-KMS buckets?
  • Are CloudTrail data events and access logging scoped deliberately?

Ongoing

  • Are budget alerts configured for S3 and related spend?
  • Are buckets tagged for cost attribution by team, environment, and application?
  • Is S3 spend visible alongside the rest of our AWS costs in a single dashboard?

Key takeaways

S3 pricing is manageable once all four layers are visible. The surprises are not hidden, just easy to miss: request charges on small objects, noncurrent versions piling up, NAT Gateway data processing, and replication copies that never get cleaned up.

Teams that keep costs under control choose storage classes based on measured access, put life cycle rules on every bucket, and treat adjacent charges as part of the S3 budget from day one. In the scenarios above, the same workloads cost more than half less once optimized.

Manage your S3 costs with ManageEngine CloudSpend

Understanding what S3 costs is one part of the problem. Keeping visibility across buckets, teams, and related services is the other. S3 charges are spread across S3, EC2-Other, KMS, CloudTrail, and CloudWatch line items, and they do not aggregate on their own. Most teams end up stitching them together manually in the AWS console, which stops working as the number of buckets and accounts grows.

ManageEngine CloudSpend gives engineering, DevOps, and finance teams a unified view of cloud spend. Tag your buckets, then filter S3 and related costs by team, application, environment, or cost center, and see everything in one place. CloudSpend also surfaces anomalies and cost trends proactively, so a sudden jump in requests or transfer gets flagged before it becomes a budget conversation.

Sign up for CloudSpend or request a demo to start getting visibility into your S3 costs today.

Note: Pricing data verified as of October 2026. Rates and service features change regularly. Use the AWS Pricing Calculator and confirm current numbers before finalizing budgets.

Frequently asked questions

  • How much does Amazon S3 cost per GB per month?

  • S3 Standard in US East costs $0.023 per GB for the first 50TB, $0.022 for the next 450TB, and $0.021 beyond that. Other classes range from $0.0125 (Standard-IA) down to $0.00099 (Glacier Deep Archive). Requests, retrieval, and data transfer are billed separately.

  • Is data transfer into S3 free?

  • Yes. Uploading data to S3 from the internet or from other AWS services is free. Data out is billed after the first 100GB per month, which is free across all AWS services combined. Transfer from S3 to CloudFront and to EC2 in the same region is also free.

  • What is the cheapest S3 storage class?

  • S3 Glacier Deep Archive at $0.00099 per GB-month, about 23 times cheaper than Standard. The trade-offs are a 180-day minimum, restore times of up to 48 hours, and retrieval fees. It suits compliance archives, not data you read.

  • Why is my S3 bill higher than expected?

  • The usual causes are request charges on large numbers of small objects, noncurrent versions in versioned buckets, incomplete multipart uploads, egress, NAT Gateway processing, replication, and KMS or CloudTrail charges. Many of these appear outside the S3 line item, so check EC2-Other and security services too.

  • Does S3 charge for deleted objects?

  • The delete request itself is free. However, deleting an object from an IA or Glacier class before its minimum duration still bills for the remaining days. In a versioned bucket, deleting an object only adds a delete marker, and previous versions continue to incur storage charges until they are expired.

  • How do I track Amazon S3 costs by bucket or team?

  • Apply cost allocation tags to buckets, activate them in AWS Billing, and filter by tag in Cost Explorer or a dedicated cost management tool. Because Amazon S3 costs spread across several service categories, a tool like ManageEngine CloudSpend that consolidates them is easier than assembling them manually.