The S3 retrieval tax: when cheaper storage classes cost you more
S3 Standard-IA stores the same bytes as S3 Standard for 46% less. Read each byte about once a month and you keep 2% of that discount. Glacier Instant Retrieval is 83% cheaper per GB. Read it monthly and you spend 48% more than you would have in Standard.
Every class below Standard charges you to take data out. That fee sits on top of lower request throughput tiers, minimum billable object sizes, and minimum storage durations, and together they flip the sticker ranking in ways the pricing page never shows. The right class depends on how often each byte gets read. Age is only a proxy. Here’s the breakeven math for all of them, priced in us-east-1 from our dataset.
The fee structure
| Class | Storage /GB-mo | Retrieval /GB | GET /1k | Min duration | Min billable object |
|---|---|---|---|---|---|
| Standard | $0.023 | — | $0.0004 | none | none |
| Standard-IA | $0.0125 | $0.01 | $0.001 | 30 days | 128 KB |
| One Zone-IA | $0.0100 | $0.01 | $0.001 | 30 days | 128 KB |
| Intelligent-Tiering | $0.023 (tiers down) | none (hot tiers) | $0.0004 | 30/90/180 days | 128 KB |
| Glacier Instant Retrieval | $0.0040 | $0.03 | $0.01 | 90 days | 128 KB |
| Glacier Flexible Retrieval | $0.0036 | $0.01 | none (restore first) | 90 days | 32 KB |
| Deep Archive | $0.00099 | $0.0025 bulk / $0.02 std | none (restore first) | 180 days | 128 KB |
(Storage, retrieval, and request rates are from our data. Minimum durations, billable sizes, and Deep Archive rates are from AWS’s documentation and price list; our CSV tracks Deep Archive storage through Intelligent-Tiering’s Deep Archive tier. Flexible Retrieval has no GET at all: you restore objects, then read the restored copy.)
The retrieval fee is the one that reshapes everything, so start there.
One number decides it
A byte moved out of Standard into a cheaper class saves the storage difference every month and pays the retrieval fee every time it’s read. The breakeven is:
breakeven interval = retrieval fee ÷ (Standard rate − class rate)
Read a byte less often than the interval and the cheaper class wins. Read it more often and Standard was the cheap option all along:
| Class | Saves vs Standard | Retrieval fee | Breakeven interval |
|---|---|---|---|
| Deep Archive (bulk) | $0.02201/GB-mo | $0.0025 | every ~3 days |
| Glacier Flexible (standard restore) | $0.0194/GB-mo | $0.01 | every ~16 days |
| One Zone-IA | $0.0130/GB-mo | $0.01 | every ~23 days |
| Standard-IA | $0.0105/GB-mo | $0.01 | every ~29 days |
| Glacier Instant Retrieval | $0.0190/GB-mo | $0.03 | every ~48 days |
Two things in that table break the intuition that cheaper storage demands rarer access.
Glacier Instant Retrieval has the coldest sticker price of any instantly-readable class and the most demanding breakeven: it only wins if a byte goes about 48 days between reads, nearly seven weeks, versus 29 for Standard-IA. Its $0.03 retrieval fee is triple Standard-IA’s, and no other rate compensates. Classifying quarterly-access data as “instant retrieval” material is safe. Monthly-access data belongs in Standard-IA or Standard, whichever the interval says.
Glacier Flexible’s fee math is better than Standard-IA’s even though Flexible is the cheaper class: it breaks even at 16 days. Its real price is the restore. Standard retrievals take 3 to 5 hours, expedited costs $0.03/GB, and each restore request bills separately. Nobody reads Flexible data hot enough for the fee math to matter, which is why the class exists for restore-shaped workloads, not read-shaped ones.
The monthly-read trap
Per TB, reading the whole thing once a month for a year:
| Class | Annual cost | vs Standard |
|---|---|---|
| Standard | $276.00 | baseline |
| Standard-IA | $270.00 | 2% less |
| One Zone-IA | $240.00 | 13% less |
| Glacier Instant Retrieval | $408.00 | 48% more |
| Glacier Flexible (standard) | $163.20 | 41% less |
| Deep Archive (bulk) | $41.88 | 85% less |
Monthly access on Standard-IA is a wash. Monthly access on Glacier Instant Retrieval is the most expensive row in the table. The 83% storage discount becomes a 48% markup the moment access crosses the breakeven, and nothing on the class’s pricing card hints at it. The lower rows only work because a full read takes half a day or more; at those speeds the workload is a restore job.
Now the other end, one full read per year:
| Class | Annual cost | vs Standard |
|---|---|---|
| Standard | $276.00 | baseline |
| Standard-IA | $160.00 | 42% less |
| One Zone-IA | $130.00 | 53% less |
| Glacier Instant Retrieval | $78.00 | 72% less |
| Glacier Flexible (standard) | $53.20 | 81% less |
| Deep Archive (bulk) | $14.38 | 95% less |
Same classes, same fees, opposite verdict. The storage ladder pays off exactly once access drops below the breakeven line, and the classes are correctly ordered by price for genuinely cold data.
The fees that stack
Retrieval fees are the main event, but three more charges punish the wrong workloads.
Minimum durations. Delete or overwrite an object before its class minimum and AWS bills the full minimum anyway, at the class’s own rate. Our data carries these as pro-rated early-delete fees: $0.0125/GB-mo for the 30-day IA classes, $0.004 and $0.0036 for the 90-day Glacier classes, $0.00099 for Deep Archive’s 180 days. Delete a 100 GB object from Glacier Instant Retrieval after ten days and you pay for three months: $1.20 instead of the $0.13 it actually stored. Lifecycle transitions count as overwrites, so a policy that shuttles objects between classes faster than the minimums generates the same fees.
Minimum billable objects. Standard-IA, One Zone-IA, Glacier IR, and Deep Archive bill every object as at least 128 KB; Glacier Flexible bills 32 KB. A 13 KB object in Standard-IA pays the 128 KB rate, about 10x its sticker price per real GB. At one billion small objects that’s 128 TB billed for 13 TB stored: $1,600/month against a $162.50 sticker. Small-object workloads should stay in Standard or Intelligent-Tiering regardless of what the access pattern looks like.
Request prices. GETs from Glacier Instant Retrieval cost $0.01 per thousand, 25x Standard’s $0.0004. Ten million GETs a month runs $100 there against $4 in Standard. That’s usually secondary to the retrieval fee, but for metadata-heavy access against a mostly-cold bucket the request line can dominate on its own.
Intelligent-Tiering: paying AWS to do this math
Everything above assumes you can estimate a read interval for a byte. When you can’t, Intelligent-Tiering is AWS selling you the estimate: it watches access and moves objects between the Frequent and Infrequent tiers with no retrieval fees on either. The monitoring costs $0.0025 per 1,000 objects per month (AWS’s published rate; our CSV doesn’t track it), and only objects over 128 KB are monitored, so tiny objects get the fee without the benefit.
For scale: monitoring a million objects costs $2.50 a month, and one misclassified TB moved from Glacier Instant Retrieval back to Standard-IA saves that several times over. For unpredictable access patterns on reasonably sized objects, it’s the right default. For known patterns you’ve now computed breakevens for, it’s a tax on skipping the arithmetic above. Its archive tiers (Archive Access at $0.0036, Deep Archive Access at $0.00099 in our data) do charge retrieval fees like their standalone counterparts, so the “no retrieval fees” property only covers the hot tiers.
The decision ladder
Rate your data by the longest gap you expect between reads of a given byte:
- More often than every ~23 days: Standard
- Every ~23 to ~29 days: One Zone-IA, if losing one AZ is acceptable for this data
- Every ~29 to ~48 days: Standard-IA
- Longer than ~48 days: Glacier Instant Retrieval, or below it if hours of retrieval latency are acceptable
- Unknown or mixed: Intelligent-Tiering, with objects over 128 KB
Every rate above is us-east-1. Retrieval fees and storage rates both move with region, and the breakevens move with them, so check the class pages in the S3 explorer before committing a large bucket in eu-west-1 or ap-southeast-2 to a class the table blessed.
Bottom line: the S3 classes are priced for access frequency, not for age. The storage discount is real for every class down the ladder, and so is the exit fee, and the interval where they cross over ranges from 3 days (Deep Archive, bulk) to 48 (Glacier IR) in a pattern the pricing page doesn’t make obvious. Compute the interval once per workload, or pay AWS $0.0025 per thousand objects a month to compute it for you.