Storage tiers explained: hot, warm, cold, archive — and what they cost
S3 Standard at $0.023/GB-month down to Glacier Deep Archive at $0.00099/GB-month. When intelligent tiering pays and when retrieval costs eat the savings.
Every hyperscaler offers 4-6 object storage tiers. The pricing pages list them in order of decreasing cost-per-GB-month and increasing retrieval latency. That order is correct but misleading: storage cost is rarely the bottleneck. Retrieval cost is.
Here's how to actually think about which tier to put data in, with the numbers.
S3 (us-east-1) tiers, 2026
| Tier | $/GB-mo | Retrieval | Min storage | Min retrieval |
|---|---|---|---|---|
| S3 Standard | $0.023 | Free | None | None |
| S3 Intelligent-Tiering | $0.023 (active) / $0.0125 (infrequent) / $0.004 (archive instant) | Free (active/infrequent), Free (archive instant) | None | None |
| S3 Standard-IA | $0.0125 | $0.01/GB retrieved | 30 days | 128 KB |
| S3 One Zone-IA | $0.01 | $0.01/GB | 30 days | 128 KB |
| S3 Glacier Instant Retrieval | $0.004 | $0.03/GB | 90 days | 128 KB |
| S3 Glacier Flexible Retrieval | $0.0036 | $0.01-0.03/GB + per-request | 90 days | 40 KB |
| S3 Glacier Deep Archive | $0.00099 | $0.02-0.05/GB + per-request | 180 days | 40 KB |
The cheapest tier is 23x cheaper than the most expensive. But the retrieval cost is the variable nobody plans for.
When tiering pays — the math
1 TB stored, never retrieved:
- S3 Standard: $23.50/month
- Glacier Deep Archive: $1.01/month
- Savings: $22.50/month, or $270/year per TB
At 100 TB this is $27,000/year of savings. Real money.
1 TB stored, retrieved once per month:
- S3 Standard: $23.50/month total
- Glacier Deep Archive: $1.01 storage + $20-50 retrieval + per-request fees = $25-55/month
Tiering costs MORE if you retrieve. Surprising.
The retrieval gotchas nobody documents
The 128 KB minimum object size
S3 Standard-IA, One Zone-IA, and Glacier Instant Retrieval bill each object as if it were at least 128 KB. If you have a billion 4 KB log files, you're paying as if you stored 128 GB of data even though your actual data is 4 GB. This is a brutal trap for log-shipping pipelines.
Early deletion fees
Move a 1 TB object to Standard-IA on day 1, delete on day 15. You pay for 30 days regardless. Glacier? 90 or 180 days. If your data churns faster than the minimum retention, the cheaper tier is more expensive overall.
Per-request fees in Glacier
Glacier Flexible Retrieval is $0.05 per 1,000 retrieve requests. Doesn't sound like much. Until you retrieve 10 million small objects. Then it's $500 of pure request overhead.
Intelligent-Tiering is the right default
For most workloads, S3 Intelligent-Tiering is the right answer because it automatically moves objects between tiers based on access patterns, without retrieval fees or minimum durations. The monitoring fee is $0.0025 per 1,000 objects per month, so it's a bad fit for billions of tiny objects but excellent for hundreds of thousands of medium-sized ones.
The "archive instant" tier within Intelligent-Tiering is the sleeper hit: $0.004/GB-month with no retrieval delay. Better than Standard-IA in almost every case where access is genuinely cold.
GCS and Azure equivalents
GCS Standard, Nearline (30-day), Coldline (90-day), Archive (365-day). Pricing follows the same shape as S3, generally 5-10% more expensive at the cold end. Egress between tiers is free.
Azure Blob Hot, Cool (30-day), Cold (90-day, new in 2024), Archive (180-day). Pricing roughly in line with S3.
The cross-provider option: Backblaze B2 + Cloudflare R2
If your workload allows it, Backblaze B2 at $0.006/GB-month with $0.01/GB egress (plus free egress to Cloudflare, Vercel, etc.) crushes S3 Standard economics. Cloudflare R2 is $0.015/GB-month with zero egress, period. For static asset hosting or build artifacts, R2 is dramatically cheaper than S3.
This doesn't show up in the cloudprice VM catalogue because we focus on compute, but worth knowing.
Lifecycle policy template
The lifecycle policy I use on most production buckets:
- Day 0-30: Standard (active data)
- Day 30: Move to Intelligent-Tiering
- Day 365: Move to Glacier Flexible Retrieval
- Day 1095 (3 years): Move to Glacier Deep Archive
- Day 2555 (7 years): Delete (data retention policy permitting)
This pattern saves 60-80% versus straight S3 Standard for typical log/backup workloads, without any access-pattern surprises.
The honest summary
S3 Intelligent-Tiering is the right default for everything except (a) billions of tiny objects (use a packed format like parquet or tar), and (b) data you genuinely never access (go straight to Deep Archive).
Compute pricing for your storage workers (S3 sync targets, restore jobs) is in the cloudprice catalogue — the cheapest is usually a small t3.nano on AWS or a CPX11 on Hetzner for offsite replication targets.
External reading: S3 Storage Classes, GCS Storage Classes, and the FinOps Foundation on storage cost optimisation.