I calculate the cost of data retrieval from the S3 Intelligent Tiering storage class, to help you compare...


When AWS introduced S3 Intelligent Tiering in November, 2018, I started planning immediately. By September, 2019, I'd transitioned most of the data at the startup where I was working. Transition charges had been recovered. From then on, my employer would be saving approximately $2 million per year on file storage — forever.

My résumé pegs the savings at $1 million per year because, as my former boss told me in 2020, additional storage was already eating half of the annual $2 million savings. We lamented that people notice total cost but don't ask how many units of service are being consumed. S3 Intelligent Tiering is all about lowering the unit cost of storage, whether that entails storing the same data for less money or more data for the same money.

When AWS added the Archive Instant Access tier in November, 2021, my old employer's perpetual S3 savings would have jumped to approximately $3.5 million per year — with no engineering effort at all.

You'll find many articles about choosing storage classes, but some neglect the enhancements made to S3 Intelligent Tiering over the years, many ignore the interaction between different S3 charges, and almost all leave you scratching your head.

One pet peeve is copying prices in dollars, to 5 decimal places, from the S3 price list. What is $0.00099 worth? If I write that as 0.099¢, I can see that it's approximately 0.1¢ or ⅒ of a penny, which I can easily compare, add, and multiply. When I worked as a math teacher, a colleague I met through the Silicon Valley Mathematics Initiative always expressed decimals this way. Instead of parroting digits, she helped people make sense of quantities.

One of the best available articles is "S3 Intelligent-Tiering: Breaking Even on Cost", which plots object size against retention period. It's useful if you have historical data for an existing S3 bucket or you know exactly what will be stored for how long in a new bucket. Unfortunately, the author only benchmarks against full-price, Standard-class storage, the worst-case alternative. A commonplace mixup between the names of storage "classes" and of "tiers" within the Intelligent Tiering storage class might also confuse readers by sending them to the wrong section of the S3 price list.

In this article, I make choosing a storage class easy by benchmarking against likely alternatives, repeating exact language from the S3 price list, choosing units that make sense, and showing simple math.

This advice helps you set up new S3 buckets. For help with existing buckets, please get in touch. Modeling S3 costs and re-engineering infrastructure-as-code as well as application software to achieve S3 savings is part of what I do for a living.

Prices are for the us-east-1 region and were checked in January, 2026. S3 prices and features can and do change. S3 counts bytes not in powers of 10 (10³ = 1,000) but in powers of 2 (2¹⁰ = 1,024 KiB).

Set the initial storage class and forget lifecycle transition rules

If you can modify the program or script that calls PutObject to create objects, set the x-amz-storage-class header, StorageClass parameter or --storage-class option instead of defining lifecycle transition rules. Set <StorageClass> in the replication configuration for the source bucket, instead of defining lifecycle transition rules for the destination bucket.

Right away you've skipped up to 1 day of full-price, Standard-class storage, followed by an initial transition charge of 1¢ to 5¢ per 1,000 objects.

When object size, retention period, and/or data retrieval volume are unknown, unpredictable, or variable, create objects in the INTELLIGENT_TIERING storage class.

View initial storage class heuristics...

Heuristics: If you are certain that objects representing most of the bucket's total, ongoing storage size...

  1. ...Will be smaller than 128 KiB, create objects in INTELLIGENT_TIERING .
  2. ...Will be deleted within 30 days, create objects in STANDARD .
  3. ...Won't be replicated, won't be retrieved, and will be retained at least 30 days but not longer than 90 days, create objects in STANDARD_IA (rare case).
  4. ...Won't be replicated, won't be retrieved, and will be retained at least 90 days, create objects in GLACIER_IR (rare case).
  5. Otherwise, create objects in INTELLIGENT_TIERING .

Avoid sequential lifecycle transitions

If you can't modify the program, script, or replication configuration that creates objects, you're still stuck with lifecycle transition rules.

If objects are created in the Standard storage class, this one-step transition will usually be the cheapest:

    <Transition>
      <Days>0</Days>
      <StorageClass>INTELLIGENT_TIERING</StorageClass>
    </Transition>

Day 0 means the end of the UTC day on which an object was created. UTC matches the local time in London, England, in winter.

Sequential transitions usually end up costing more. Each step involves another transition charge of 1¢ to 5¢ per 1,000 objects, and a new minimum storage duration. The lower the new storage price, the higher the transition charge and the longer the minimum storage duration!

On the S3 price list, you'll notice that the storage price for every storage class matches the storage price for a similar access tier within the Intelligent Tiering storage class. You choose a "storage class". When you choose the Intelligent Tiering storage class, AWS dynamically chooses an "access tier". Movement between different access tiers is free. AWS handles it for you, according to the date on which an object was last accessed. There is no minimum storage duration. You can delete an object without penalty, even if it has spent only a short time in a low-price access tier within the Intelligent Tiering storage class.

Know the main S3 storage price levels

Storage price Storage class Access tier Storage period
Within the
Intelligent Tiering storage class
Within the
Intelligent Tiering storage class
2.30¢ Standard Frequent Access Month 1
1.25¢ Standard - Infrequent Access Infrequent Access Month 2
Month 3
0.40¢ Glacier Instant Retrieval Archive Instant Access Month 4
and beyond
per GiB per month

Break even: compare cumulative S3 storage costs

In terms of storage cost, the Intelligent Tiering storage class breaks even relative to the Standard - Infrequent Access storage class during Month 5.

Cumulative S3 storage costs through Month 5, by storage class

STANDARD:            2.30 + 2.30 + 2.30 + 2.30 + 2.30 = 11.50
STANDARD_IA:         1.25 + 1.25 + 1.25 + 1.25 + 1.25 =  6.25
INTELLIGENT_TIERING: 2.30 + 1.25 + 1.25 + 0.40 + 0.40 =  5.60
GLACIER_IR:          0.40 + 0.40 + 0.40 + 0.40 + 0.40 =  2.00¢ per GiB

Notice that Intelligent Tiering never breaks even relative to the Glacier Instant Retrieval storage class. The lifetime excess storage cost, incurred through Month 3, is:

2.30 + 1.25 + 1.25 - (0.40 + 0.40 + 0.40) = 4.8 - 1.2 = 3.6¢ per GiB

It's a penalty for uncertainty and variability. Subtract the costs you avoid in the Intelligent Tiering storage class: lifecycle transitions (if you eliminated transition rules), minimum billable object size (if you store some small objects, among large ones), and minimum storage duration (if you delete some objects earlier than others). Don't add the Monitoring and Automation charge, because without Intelligent Tiering, analyzing your S3 usage and periodically updating your lifecycle transition rules would cost you money.

Avoid the Standard - Infrequent Access storage class

AWS introduced the Standard - Infrequent Access storage class in September, 2015. It was an early attempt at price differentiation. I still see STANDARD_IA in old documentation, examples, program code and scripts. After AWS eliminated the minimum storage duration for Intelligent Tiering and exempted small objects from the Monitoring and Automation charge in September, 2021, STANDARD_IA became less attractive for new buckets. Unlike Intelligent Tiering, the Standard - Infrequent Access storage class has a minimum billable object size of 128 KiB, a disadvantage if your application can only accommodate one initial storage class. If your application relies on lifecycle transitions, an unusual 30-day minimum prior storage duration applies. No matter how objects enter the Standard - Infrequent Access storage class, the minimum storage duration will be 30 days.

Intelligent Tiering does have a data retrieval cost!

Data retrieval price Storage class
n/a Standard
"n/a" 🤥 Intelligent Tiering
Standard - Infrequent Access
Glacier Instant Retrieval
per GiB

The S3 price list claims that data retrieval from the Intelligent Tiering storage class is free, but retrieving an object kicks it back to the full-price Frequent Access tier and restarts the countdown to low-price tiers. With Intelligent Tiering, you pay for data retrieval through temporarily elevated future storage prices.

To calculate the data retrieval cost for Intelligent Tiering, compare cumulative storage costs. If an object is not retrieved, it will reach the Archive Instant Access tier at the end of Month 3. This is the cheapest non-opt-in tier within the Intelligent Tiering storage class. If the object is retrieved at that point, a worst-case scenario, it will again reach the Archive Instant Access tier at the end of Month 6. I include Month 7 to show the return to steady state, in the cheapest tier.

Cumulative S3 storage costs through Month 7, Intelligent Tiering storage class

With no retrieval:    2.30 + 1.25 + 1.25 + 0.40 + 0.40 + 0.40 + 0.40 =  6.40
With retrieval:
On Day 30:            2.30 + 2.30 + 1.25 + 1.25 + 0.40 + 0.40 + 0.40 =  8.30
On Day 60:            2.30 + 1.25 + 2.30 + 1.25 + 1.25 + 0.40 + 0.40 =  9.15
On Day 90 and beyond: 2.30 + 1.25 + 1.25 + 2.30 + 1.25 + 1.25 + 0.40 = 10.00¢ per GiB

Data retrieval costs, Intelligent Tiering storage class

On Day 30:             8.30 - 6.40 = 1.90
On Day 60:             9.15 - 6.40 = 2.75
On Day 90 and beyond: 10.00 - 6.40 = 3.60¢ per GiB

The approximate true cost of data retrieval from the Intelligent Tiering storage class at...

  • ...1 month is 2 times the price of data retrieval from the Standard - Infrequent Access storage class, a suitable benchmark for an object of that age. The cost is ⅓ less than the price of data retrieval from the Glacier Instant Retrieval storage class.

  • ...2 months is 3 times the price of data retrieval from the Standard - Infrequent Access storage class, but still slightly less than the price of data retrieval from the Glacier Instant Retrieval storage class, either of which is a suitable benchmark.

  • ...3 months and beyond (maximum retrieval cost) is 4 times the price of data retrieval from the Standard - Infrequent Access storage class, by then an unlikely choice. The cost is only 20% greater than the price of data retrieval from the Glacier Instant Retrieval storage class, the likely long-term benchmark.

Save more by implementing asynchronous retrieval

View S3 asynchronous retrieval options...

What about starting in the Deep Archive storage class?

In the very rare case of long-term archiving without replication and without retrieval, create objects in DEEP_ARCHIVE . AWS introduced the Deep Archive storage class in March, 2019. If objects will be replicated or are likely to be retrieved, creating them in INTELLIGENT_TIERING and opting-in to the DEEP_ARCHIVE_ACCESS tier (this one only) is the better way to get to the same 0.099¢ per GiB per month storage price. That's less than ⅒ of a penny! AWS introduced Intelligent Tiering Archive Access tiers in November, 2020.

You must do the work of supporting asynchronous retrieval: your software must be able to request each object and wait before retrieving it. Creating objects in the Intelligent Tiering storage class lets you implement asynchronous retrieval later, then opt-in.

Don't worry about the storage overhead for each object in the Deep Archive storage class or the Deep Archive Access tier within the Intelligent Tiering storage class. The storage price applied to the object plus 32 KiB of the overhead is so low that you will save money despite paying full-price to store the other 8 KiB of overhead. Creating small objects (somewhat smaller, in fact, than the 128 KiB minimum billable object size) in the Deep Archive storage class is the only exception.

Skip the Glacier Flexible Retrieval storage class

AWS introduced the Glacier Instant Retrieval storage class in November, 2021. The respective storage prices for GLACIER_IR (Instant Retrieval) and GLACIER (Flexible Retrieval) are 0.40¢ (less than ½ of a penny) and 0.36¢ (just over ⅓ of a penny) per GiB per month. The difference, 0.40 - 0.36 = 0.04¢ per GiB per month, is a tiny fraction of a penny. You'd save only $1 by storing 833 GiB for the 90-day minimum storage duration! It is not worth creating objects in the old GLACIER (Flexible Retrieval) storage class. If you go to the trouble of supporting asynchronous retrieval, go all the way and create objects in DEEP_ARCHIVE .

Assess the Intelligent Tiering Monitoring and Automation charge

AWS exempted small objects from the Intelligent Tiering Monitoring and Automation charge in September, 2021, as noted earlier. Small objects never move out of the full-price Frequent Access tier. Standard class and Intelligent Tiering now cost the same for objects smaller than 128 KiB, but when small and large objects are mixed, the large ones benefit automatically from the savings provided by the Intelligent Tiering storage class.

A problem with modeling the Monitoring and Automation charge, 0.25¢ or ¼ of a penny per 1,000 objects per month, is that it is expressed per object rather than per byte. Unless you can predict the object count for a new bucket, why not think proportionally when comparing alternative initial storage classes? Then, you can balance other factors like expected retention period and retention period variability against the Monitoring and Automation charge for the Intelligent Tiering storage class.

Transitioning 1,000 objects to the Glacier Instant Retrieval class via a lifecycle rule would cost 2¢. This is equivalent to 8 months of Monitoring and Automation in Intelligent Tiering. In the Intelligent Tiering storage class, those objects reach the Archive Instant Access tier (same storage price) after 3 months without retrieval.

Transitioning 1,000 objects to the Glacier Deep Archive class via a lifecycle rule would cost 5¢. This is equivalent to 20 months of Monitoring and Automation in Intelligent Tiering. In the Intelligent Tiering storage class, those objects reach the Deep Archive Access tier (same storage price, same asynchronous retrieval requirement) after 6 months without retrieval, if you've opted-in to that tier and specified <Days>180</Days> , the minimum.

Put it all together

If you can't set the storage class to INTELLIGENT_TIERING when creating or replicating objects, and the objects are created in the Standard storage class, define a single lifecycle transition rule, effective on Day 0.

Read the S3 price list carefully, noting: storage price levels; the correspondence between user-selected "storage classes" and AWS-selected "access tiers" within the Intelligent Tiering storage class; lifecycle transition charges (automatic movement between tiers within the Intelligent Tiering storage class is free); minimum billable object size; data retrieval charges; and minimum storage duration (none in the Intelligent Tiering storage class).

The cost of retrieving data from the Intelligent Tiering storage class will be up to 4 times the cost of retrieving data from the Standard - Infrequent Access storage class, but never more than 20% extra, compared to the cost of retrieving data from the Glacier Instant Access storage class.

In special cases it makes sense to create objects in a different storage class. If most storage will be deleted within 30 days, stick with STANDARD . If most storage is neither replicated nor retrieved, and will be deleted between Day 30 and Day 90, use STANDARD_IA , or GLACIER_IR for deletion after Day 90.

S3 has received many feature updates and price reductions over the years. Keep up with S3-related AWS announcements.

Thank you for reading. Don't hesitate to e-mail me! Feedback that improves this article will be acknowledged publicly.