Blob Storage Cost Optimisation in Azure

Azure Blob Storage can range from under a dollar per terabyte per month to over $23 per terabyte depending on your access tier, redundancy level, and usage patterns. Most teams overpay by keeping all data in the hot tier and paying for geo-redundant storage when locally redundant would suffice.

Storage Tier Pricing Comparison

Azure Blob Storage offers four access tiers with different trade-offs between storage cost and access cost:

TierStorage Cost (LRS, East US)Read CostWrite CostRetrieval LatencyBest for
Hot$0.018/GB/month$0.004/10k ops$0.05/10k opsMillisecondsFrequently accessed data
Cool$0.01/GB/month$0.01/10k ops$0.10/10k opsMillisecondsInfrequent access (30+ days)
Cold$0.0036/GB/month$0.025/10k ops$0.18/10k opsMillisecondsRarely accessed (90+ days)
Archive$0.00099/GB/month$5.50/10k ops$0.11/10k ops1–15 hoursLong-term retention (180+ days)

Real-World Tier Savings

For 10 TB of data that is accessed rarely — for example, application logs from 12 months ago — the tier choice has a dramatic impact on monthly cost:

  • Hot tier: 10,240 GB × $0.018 = $184/month
  • Cool tier: 10,240 GB × $0.01 = $102/month (44% saving)
  • Cold tier: 10,240 GB × $0.0036 = $37/month (80% saving)
  • Archive tier: 10,240 GB × $0.00099 = $10/month (95% saving)

If the data is log files that might be queried once a year for compliance purposes, archive tier is the obvious choice.

Note

Cool, Cold, and Archive tiers have minimum storage duration periods (30, 90, and 180 days respectively). Deleting or transitioning objects before the minimum period incurs an early deletion fee. Factor this into your lifecycle policy design.

Lifecycle Management Policies

Lifecycle management policies automatically transition or delete blobs based on age and last-access time. This is the most impactful single change you can make to a Blob Storage cost profile — set it once and cost optimisation happens automatically.

Example policy: log data lifecycle

A common pattern for application log data:

  • 0–30 days: Hot tier (being actively queried by operations team)
  • 30–90 days: Cool tier (occasionally queried for investigation)
  • 90–365 days: Cold tier (compliance access only)
  • 365+ days: Archive or delete
{
  "rules": [
    {
      "name": "log-lifecycle",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": ["blockBlob"],
          "prefixMatch": ["logs/"]
        },
        "actions": {
          "baseBlob": {
            "tierToCool": {
              "daysAfterModificationGreaterThan": 30
            },
            "tierToCold": {
              "daysAfterModificationGreaterThan": 90
            },
            "tierToArchive": {
              "daysAfterModificationGreaterThan": 365
            },
            "delete": {
              "daysAfterModificationGreaterThan": 2555
            }
          }
        }
      }
    }
  ]
}
# Apply a lifecycle policy to a storage account
az storage account management-policy create \
  --account-name mystorageaccount \
  --resource-group my-rg \
  --policy @lifecycle-policy.json

# View existing lifecycle policies
az storage account management-policy show \
  --account-name mystorageaccount \
  --resource-group my-rg

Choosing the Right Redundancy Level

Azure Blob Storage offers four redundancy options, each with different costs and durability guarantees. Many teams default to GRS (geo-redundant storage) for everything, when LRS or ZRS would suffice for much of their data at significantly lower cost.

RedundancyCost (Hot, East US)CopiesDisaster RecoveryDurability (nines)
LRS (Locally Redundant)$0.018/GB/month3 (same DC)Datacenter failure only11 nines
ZRS (Zone Redundant)$0.023/GB/month3 (separate AZs)AZ failure12 nines
GRS (Geo Redundant)$0.035/GB/month6 (2 regions)Regional disaster16 nines
GZRS (Geo-Zone Redundant)$0.045/GB/month6 (AZ + geo)AZ failure + regional disaster16 nines

Guidance by data type:

  • Temporary or regenerable data (build artifacts, thumbnails, cached files): LRS is sufficient
  • Static website assets (images, CSS, JS): ZRS for availability, LRS if CDN provides redundancy
  • Application backups: GRS or GZRS depending on RTO/RPO requirements
  • Primary database data: use managed database service replication rather than raw Blob Storage for this type of data
# Change redundancy level on an existing storage account
az storage account update \
  --name mystorageaccount \
  --resource-group my-rg \
  --sku Standard_LRS   # Change to LRS, ZRS, GRS, or GZRS as needed

Reducing Operations Costs

Beyond storage and redundancy, Blob Storage charges per operation. These are small individually but add up at scale:

  • Hot tier reads: $0.004 per 10,000 operations
  • Hot tier writes: $0.05 per 10,000 operations
  • List operations: $0.05 per 10,000 operations

At 1 billion operations/month, write costs alone amount to $5,000. Batching strategies to reduce operation count include:

  • Append multiple small writes to the same blob using append blobs or by accumulating data before writing
  • Use Azure Data Factory or Synapse pipelines to batch many small files into fewer large files (the “small file problem” in data lakes)
  • Avoid listing container contents in tight loops — cache directory listings on the application side
  • Use blob tags for filtering instead of listing and filtering client-side

Soft Delete and Version Cleanup

Blob soft delete and versioning are useful data protection features, but both retain historical versions of blobs that accumulate storage costs. A storage account with 1 year of blob versions enabled on frequently-modified data can have 10–20x the storage costs of the current data alone.

# Check soft delete and versioning settings
az storage account blob-service-properties show \
  --account-name mystorageaccount \
  --resource-group my-rg \
  --query "{softDelete:deleteRetentionPolicy, versioning:isVersioningEnabled}"

# Reduce soft delete retention from 30 days to 7 days
az storage account blob-service-properties update \
  --account-name mystorageaccount \
  --resource-group my-rg \
  --delete-retention 7 \
  --enable-delete-retention true

Common Mistakes

  1. Putting everything in hot tier by default. Hot tier is appropriate for frequently accessed data. Application logs older than 30 days, old database backups, and archived assets rarely justify hot-tier pricing. A lifecycle policy that moves data to cool after 30 days typically reduces storage costs by 40–50% with no operational impact.
  2. Using GRS for all storage accounts regardless of data criticality. GRS doubles the storage cost compared to LRS. Review each storage account’s data criticality and apply the minimum appropriate redundancy level.
  3. Enabling versioning and soft delete without lifecycle rules for versions. These features retain old versions indefinitely by default. Add lifecycle rules that delete old versions after your retention requirement is met (typically 30–90 days).
  4. Ignoring the small file problem in data lakes. Millions of tiny files (under 1 MB each) increase metadata operation costs and reduce query performance. Compact small files into large Parquet or ORC files as part of regular maintenance.

Frequently asked questions

What is the cheapest way to store large amounts of data in Azure?

Archive tier Blob Storage is the cheapest option at approximately $0.00099/GB/month in East US — that is under $1 per terabyte per month. The trade-off is that data retrieval from archive takes 1–15 hours and incurs a rehydration fee.

Do lifecycle management policies cost anything to set up?

No. Lifecycle management policy rules themselves have no cost. You pay only for the storage tier the data occupies and the transition operations when objects move between tiers. Tier transition operations cost approximately $0.01 per 10,000 objects.

Is locally redundant storage (LRS) safe for production data?

LRS replicates data 3 times within a single datacenter and provides 11 nines of durability. It is safe for data that can be regenerated or is backed up elsewhere. For truly critical production data with no other backup, GRS (geo-redundant storage) is recommended. LRS costs approximately 60% less than GRS.

Last verified: 19 March 2026 Cloud services change frequently. Verify details against official documentation before making infrastructure decisions.