Azure storage account tiers cost: Hot vs Cool vs Cold vs Archive
Azure Blob tiers trade storage price for access price, and each cold tier adds a retention penalty. Here's the full picture — storage rates, access costs, minimum retention, and redundancy — and how to pick the right tier.
Quick answer
Azure Blob tiers trade storage price for access price. Storage drops from ~$0.018/GB (Hot) to ~$0.002/GB (Archive), but read and transaction costs rise the colder you go, and Cool/Cold/Archive add 30/90/180-day minimum-retention penalties. Choose the tier by how often you read the data, not how old it is — and watch redundancy (GRS roughly doubles the rate).
Azure storage looks cheap until the access charges show up. The per-GB storage rate is only one of three meters — storage, transactions, and data retrieval — and the tiers are designed so that lowering one raises the others. Picking the "cheapest" tier by storage rate alone is how teams end up paying retrieval fees that dwarf what they saved.
The four tiers
| Tier | Storage (~/GB-mo) | Access cost | Min retention |
|---|---|---|---|
| Hot | ~$0.018 | Lowest | None |
| Cool | ~$0.010 | Higher reads/txns | 30 days |
| Cold | ~$0.0045 | Higher still | 90 days |
| Archive | ~$0.002 | Rehydration fee + hours | 180 days |
Rates vary by region and redundancy; the relationship is what matters. Archive is 9× cheaper to store than Hot, but Archive data is offline — reading it costs a per-GB rehydration charge and takes up to hours.
Match the tier to access frequency, not age
- Hot: actively served — app assets, current data, anything read daily.
- Cool: read roughly monthly — recent backups, logs you still query occasionally.
- Cold: read roughly quarterly — older backups, infrequently-needed archives.
- Archive: essentially never read — compliance retention, legal holds. Restoring is slow and costs a retrieval fee, so only put data here you're confident stays cold.
The minimum-retention trap
Each cold tier charges an early-deletion penalty if you delete or move data before its minimum: 30 days (Cool), 90 (Cold), 180 (Archive). An over-eager lifecycle policy that tiers a blob to Archive and then moves or deletes it a month later pays the full 180-day penalty — costing more than leaving it in Hot. Set lifecycle thresholds beyond the minimum windows.
Redundancy multiplies everything
The redundancy setting applies on top of the tier:
- LRS — three copies in one datacenter. Cheapest.
- ZRS — across availability zones. Moderately more.
- GRS / RA-GRS — replicated to a second region. Roughly double LRS.
Paying for GRS on data you could regenerate (cached renders, derived datasets, re-importable logs) is common waste. Reserve geo-redundancy for data whose loss would actually hurt.
FAQ
What are the Azure Blob storage access tiers?
Hot, Cool, Cold, and Archive. Storage gets cheaper as you go down — Hot ~$0.018/GB, Cool ~$0.01/GB, Cold ~$0.0045/GB, Archive ~$0.002/GB per month in many regions — but access (read/write transactions and data retrieval) gets more expensive, and each colder tier adds a minimum-retention penalty.
Which Azure storage tier is cheapest?
For storage alone, Archive is cheapest at ~$0.002/GB-month. But Archive data is offline: reading it costs a per-GB rehydration fee and takes hours, and there's a 180-day minimum. The cheapest tier overall depends entirely on how often you read the data — frequent access makes Hot cheapest despite the higher per-GB rate.
What are the minimum retention penalties?
Deleting or moving data before the minimum incurs an early-deletion charge for the remaining days: Cool has a 30-day minimum, Cold 90 days, Archive 180 days. Lifecycle policies that tier data down too aggressively can trigger these penalties and cost more than they save.
Does redundancy affect storage cost?
Significantly. LRS (local) is the baseline; ZRS (zone) is moderately more; GRS/RA-GRS (geo) roughly doubles the storage rate because the data is replicated to a second region. Pick redundancy by durability requirement — paying for GRS on easily-regenerated data is common waste.
How do I choose the right tier?
Match the tier to access frequency, not to data age. Hot for actively-served data, Cool for monthly access, Cold for quarterly, Archive for compliance data you essentially never read. Use a lifecycle management policy to move blobs automatically, but set the thresholds beyond the minimum-retention windows.
How does C3X estimate storage account cost?
C3X prices an azurerm_storage_account from its tier and redundancy, and treats stored volume and transactions as usage-driven — add expected GB and operations in c3x-usage.yml to model the full bill including access charges.
What to do next
Pick tier and redundancy deliberately, then let a lifecycle policy enforce it — with thresholds past the retention minimums. C3X prices an azurerm_storage_account from its tier and redundancy so the choice shows up as a number before you commit. For the AWS equivalent of this trade-off, see the S3 storage class comparison. The quickstart runs it on your Terraform in minutes.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.