Amazon S3 storage classes let you choose how each object is stored based on how often it is read, how quickly it must be available, and how much resilience the workload needs. The lowest storage rate alone does not determine the lowest total cost: retrieval, requests, lifecycle transitions, minimum storage durations, and extra copies can also matter.

A general purpose bucket can contain objects in different storage classes. If you do not specify a class when uploading an object, Amazon S3 uses S3 Standard. You can set a class on upload or use an S3 Lifecycle rule to transition eligible objects later. Start by identifying your access pattern and recovery requirement, then compare the full cost for your Region on the Amazon S3 pricing page.

How to choose an S3 storage class

Use this comparison as a first pass. “Available in milliseconds” means the object can be read directly; Glacier Flexible Retrieval and Glacier Deep Archive require a restore before normal access.

Storage classBest fitAccess and resilienceCost conditions to check
S3 StandardFrequently accessed data, active application content, and data without a proven colder patternDirect millisecond access; data is stored across multiple Availability ZonesNo minimum storage duration
S3 Intelligent-TieringAccess patterns that are unknown or change over timeAutomatically moves eligible objects among Frequent, Infrequent, and Archive Instant Access tiers; those tiers retain direct access. Optional Archive Access and Deep Archive Access tiers require a restoreEligible objects incur monitoring and automation charges. Objects smaller than 128 KB remain in Frequent Access and are not monitored. Standard or Bulk restores have no retrieval charge; expedited restores from optional Archive Access are charged
S3 Standard-IALong-lived data read infrequently, but needed immediately when requestedDirect millisecond access; stored across multiple Availability ZonesRetrieval charges, a 30-day minimum storage duration, and a 128 KB minimum billable object size
S3 One Zone-IAInfrequently read data that can be recreated if its Availability Zone is lostDirect millisecond access; stored in one Availability Zone and not resilient to that zone's lossRetrieval charges, a 30-day minimum storage duration, and a 128 KB minimum billable object size
S3 Glacier Instant RetrievalLong-lived archive data that is rarely read but must be available immediatelyDirect millisecond access across multiple Availability ZonesRetrieval charges, a 90-day minimum storage duration, and a 128 KB minimum billable object size
S3 Glacier Flexible RetrievalArchive data that can wait minutes to hours for accessSubmit a restore request for a temporary copy before reading; data is designed for multiple Availability ZonesRetrieval and restore charges, a 90-day minimum storage duration, and per-object metadata overhead
S3 Glacier Deep ArchiveLong-term data that is rarely accessed and can wait hours for restorationSubmit a restore request for a temporary copy before reading; data is designed for multiple Availability ZonesRetrieval and restore charges, a 180-day minimum storage duration, and per-object metadata overhead
S3 Express One ZoneLatency-sensitive workloads that benefit from consistent single-digit millisecond accessHigh-performance storage in one Availability Zone; requires an S3 directory bucketCompare its storage and request pricing for the workload, and account for single-zone resilience

These classes are not interchangeable labels for “hot,” “warm,” and “cold” data. AWS documents their properties and constraints in its S3 storage class comparison. Two special cases sit outside this regional comparison: S3 Outposts (OUTPOSTS) is only for objects in buckets on AWS Outposts, and AWS lists Reduced Redundancy Storage (RRS) but recommends using S3 Standard instead.

A practical selection process

Start with access and recovery

  • Frequent or not yet measured: use S3 Standard as the simple default while you learn the workload.
  • Unpredictable or changing: consider S3 Intelligent-Tiering when the possible tier change justifies its per-object monitoring charge. Its automatic Archive Instant Access tier still supports direct access; enable the optional asynchronous archive tiers only when restore delays are acceptable.
  • Predictably infrequent, immediate reads required: compare Standard-IA with Glacier Instant Retrieval. Model expected reads and keep the object-size and minimum-duration rules in view.
  • Data can wait for a restore: compare Glacier Flexible Retrieval and Deep Archive using expected retention, restore frequency, and recovery time—not storage rate alone.
  • Data can be recreated: One Zone-IA can be an option when the workload accepts losing the stored copy if its Availability Zone is lost. Do not use it as the only copy of irreplaceable data.
  • Latency is the limiting requirement: evaluate Express One Zone for directory-bucket workloads and plan for its single-zone failure boundary.

Understand what archive access means

S3 Glacier Instant Retrieval is not the same as the archived S3 Glacier Flexible Retrieval and Deep Archive classes: it provides millisecond access. For Flexible Retrieval and Deep Archive, submit a restore request and wait for S3 to make a temporary copy available for the number of days you specify. During that period, you pay for both the archive and the restored copy. S3 Intelligent-Tiering's optional Archive Access and Deep Archive Access tiers also require a restore; once restored, those objects return to the Frequent Access tier. Check the current S3 restore guidance before designing a recovery process.

Use lifecycle rules with their costs in view

When an object's lifecycle is predictable, an S3 Lifecycle rule can transition it after a chosen age or expire it when retention ends. An example policy might keep new data in Standard while it is active, then transition it only after observed use has dropped. A schedule is a management rule, not proof that a transition will lower the bill.

Standard-IA and One Zone-IA have a 30-day minimum storage duration. Glacier Instant Retrieval and Glacier Flexible Retrieval have 90-day minimums; Deep Archive has a 180-day minimum. Deleting, overwriting, or transitioning an object before its minimum is over can leave a prorated minimum-duration charge. Under current S3 Lifecycle defaults, objects smaller than 128 KB do not transition to any storage class. Configurations created before September 2024 can retain the previous behavior until they are modified. A size filter can allow small-object transitions, but per-object transition and storage costs may outweigh savings for small files. See AWS's Lifecycle transition constraints before setting a rule.

Getting started with S3 object storage

If you are new to S3, first understand the relationship between buckets, object keys, and objects in this S3 fundamentals guide. Then create a bucket, upload a few representative objects, and choose a storage class per object. Observe actual reads and retention before applying a lifecycle rule across a large prefix. For a deeper treatment of transition timing, filters, expiration, and version handling, see the guide to S3 Lifecycle rules.

Revisit the choice when access patterns or recovery targets change. Check current AWS pricing for the bucket's Region and include requests, retrievals, data transfer, and any replication copies in the estimate. AWS lists the full set of current class properties in its storage class documentation.