Blob Storage Tiering: Hot, Cool, Cold, Archive — and the Lifecycle Policy That Pays for Itself
50% of enterprise blob storage spend is data that nobody reads. A correct lifecycle policy collapses that line item.
Azure Blob Storage has four access tiers. They differ on read price, storage price, and minimum retention. Picking the right one (and moving between them automatically) is the highest-ROI FinOps move on most subscriptions.
The four tiers
| Tier | Storage | Read | Min retention | When |
|---|---|---|---|---|
| Hot | Highest | Lowest | None | Active data, last 30 days |
| Cool | ~50% lower | Higher | 30 days | Backups, monthly reports |
| Cold | ~75% lower | Higher | 90 days | Long-term archive, occasional read |
| Archive | ~95% lower | Rehydration required (hours) | 180 days | Compliance retention |
The classic mistake
Teams set their account default to Hot and never tier anything. Years later, 80% of objects haven't been touched in 6 months and they're paying Hot prices for all of it.
The lifecycle policy that pays for itself
{
"rules": [{
"name": "tier-and-archive",
"enabled": true,
"type": "Lifecycle",
"definition": {
"filters": { "blobTypes": ["blockBlob"] },
"actions": {
"baseBlob": {
"tierToCool": { "daysAfterModificationGreaterThan": 30 },
"tierToCold": { "daysAfterModificationGreaterThan": 90 },
"tierToArchive": { "daysAfterLastAccessTimeGreaterThan": 365 },
"delete": { "daysAfterModificationGreaterThan": 2555 }
},
"snapshot": {
"delete": { "daysAfterCreationGreaterThan": 30 }
}
}
}
}]
}
Watch-outs
- Early-deletion penalty. Move out of Cool before 30 days and you pay the rest.
- Rehydration is slow. Archive → Hot takes hours. Don't archive things you might suddenly need.
- Last-access tracking needs to be enabled on the account before
daysAfterLastAccessTimeworks. - Append blobs can't be archived. Keep your log streams in Hot or Cool.
Run the policy. Wait a billing cycle. Compare the storage line. Your CFO will ask what changed.