Azure Blob Storage pricing charges for GB stored per month by access tier and redundancy, for operations per 10,000, for GB retrieved from the cooler tiers, for early deletion before a tier's minimum retention, and for traffic that leaves the region. In most accounts the GB stored in the hot tier dominate; in pipelines with many small objects the operations do, and in archives that someone decides to read, the retrieval does.

Pricing dimensions

DimensionUnitWhat drives itOptional
Data storedGB per month, as the month's daily average, billed in binary GiBvolume per access tier (hot, cool, cold, archive) and redundancy (LRS, ZRS, GRS, RA-GRS, GZRS, RA-GZRS); hot is banded by volumenone
Operationsper 10,000, by type: write, read, list and create container, all otherevery REST request; the cooler the tier, the dearer the operation; deletes are freenone
Data retrievalGB readcool, cold and archive only; archive also as priority retrieval for fast rehydrationnone in hot
Early deletionGB times the remaining days of the minimum, at the tier's storage pricedeleting, overwriting or changing tier before 30 days (cool), 90 days (cold) or 180 days (archive) in general-purpose v2 accountsnone in hot
IndexGB per monthaccounts with a hierarchical namespace (Data Lake Storage) only, always at the hot pricehierarchical namespace only
Geo-replicationGB transferred to the paired regionwrite volume on GRS, RA-GRS, GZRS, RA-GZRSgeo-redundant accounts only
BandwidthGB leaving the regiondownloads to clients outside Azure, copies to other regions; on the Bandwidth metersnone
Feature metersper tag and month (index tags), per change (change feed), per hour (SFTP endpoint), per million objects (inventory), per month (encryption scopes), per GB scanned (query acceleration), per MB (point-in-time restore)only once enabled; versioning and soft delete cost through the extra versions and snapshots they storeall optional
Purchase optionreserved capacity for one or three yearsa steady volume of block blobs and Data Lake Storage in standard accountssee reserved capacity for managed services

The tiers differ in availability (99.9% hot, 99% cool, cold and archive) and in latency: hot, cool and cold return the first byte in milliseconds, archive is offline and rehydrates in up to 15 hours at standard priority or under an hour at high priority for objects below 10 GB, with at most 10 GiB per hour and storage account in priority mode. Archive exists only with LRS, GRS or RA-GRS, not with ZRS, GZRS or RA-GZRS. The smart tier moves data between hot, cool and cold on its own, charges a monitoring fee for it and, according to Microsoft, drops the charges for tier changes, early deletion and rehydration. What the three providers' tier models share is covered under storage tiers and lifecycle; the comparison with block and file storage under block, object and file storage.

How it appears in your billing data

In the cost export every blob line carries MeterCategory Storage and the storage account as its ResourceId; one account produces one line per day for each combination of tier, redundancy and meter type. MeterSubCategory names the product, General Block Blob v2 for block blobs in general-purpose v2 accounts, and MeterName combines tier, redundancy and meter type: Hot LRS Data Stored, Cool GRS Data Stored, Cold ZRS Data Stored and Archive LRS Data Stored for capacity; Hot LRS Write Operations, Hot Read Operations, LRS List and Create Container Operations, All Other Operations, Cool LRS Write Operations, Cool Read Operations, Cold LRS Read Operations, Archive Read Operations and Archive Priority Read Operations for operations; Cool Data Retrieval, Cold LRS Data Retrieval, Archive Data Retrieval and Archive Priority Data Retrieval for retrieval; Cool LRS Early Delete, Cold LRS Early Delete and Archive LRS Early Delete for early deletion; and Index Tags for blob index tags. UnitOfMeasure tells the meter type apart: 1 GB/Month for capacity, 10K for operations, 1 GB for retrieval, early deletion and replication.

A day's operations appear as fractions of 10,000, not as counts; to count requests, multiply Quantity by 10,000. Accounts with a hierarchical namespace, legacy Blob Storage accounts and premium block blob accounts each carry a product of their own in MeterSubCategory, the hierarchical namespace also the Index meter. Outbound traffic to the internet is not under Storage but under Bandwidth (Azure bandwidth and networking pricing); geo-replication stays under Storage as the account's data transfer meter. An export that writes into a storage account generates write operations and capacity in that account in turn.

A storage account, theresource of every lineUnder Storage: one line per dayfor each tier, redundancy andmeter type, such as Hot LRSData StoredOperations as fractions often thousand: the quantitytimes ten thousand is the countOutbound traffic to theinternet under Bandwidth,not StorageReserved capacity: a Purchaseline, its consumption hours witha commitment discount ID
A storage account produces one line per day for each tier, redundancy and meter type, operations in blocks of ten thousand, and its egress under Bandwidth

In the FOCUS export the same values sit in x_SkuMeterCategory (Storage), x_SkuMeterSubcategory (General Block Blob v2) and SkuMeter (the meter name); ServiceName names the service, ChargeCategory is Usage for consumption and Purchase for buying reserved capacity, whose consumption hours carry a CommitmentDiscountId. On operation meters x_PricingBlockSize carries the block size from the unit, 10,000 for 10K, so PricingQuantity counts billed blocks and ConsumedQuantity counts requests. Which account carries the cost shows in cost analysis with the Service name filter set to Storage and grouping by resource; Microsoft names the export as the recommended path for any further analysis.

Levers

Configuration. The access tier per blob is the biggest lever: the capacity price falls from hot through cool and cold to archive while operations and retrieval rise. The arithmetic only works when the minimum retention is kept, because a change before 30, 90 or 180 days charges the remaining days at the tier price. The account's default tier decides where new blobs without an explicit tier land; changing it bills write operations, or read operations plus retrieval, for every blob whose tier is inferred. Redundancy costs capacity: GRS roughly doubles the LRS price and adds replication transfer, ZRS sits between; whether data needs a second region is a decision per account, because the redundancy applies to every service in the account. The levers across providers are covered under storage optimisation.

oftenrarelyalmost neveryesnoHow often isthe blob read?Hot: the highest capacityprice, the cheapest operationsCool or cold: cheapercapacity, dearer operationsand retrieval, aminimum retentionArchive: the lowestcapacity price, rehydrationbefore a read, 180days minimumChanged before theminimum retention?The remaining days chargedat the tier priceThe saving holds
The access tier trades capacity price against operations and retrieval, and only pays when the minimum retention is kept

Purchase option. Reserved capacity for one or three years lowers the capacity price for block blobs and Data Lake Storage in standard accounts, but covers neither operations nor retrieval nor bandwidth; it pays off on a stable volume that lifecycle rules are not about to shrink (reserved capacity for managed services).

Architecture. Lifecycle rules move blobs by creation, modification or last access date and delete expired versions and snapshots; the policy is free, the Set Blob Tier operations are billed, and last access tracking bills at most one operation per object in 24 hours. Large objects instead of many small ones cut operations and speed up rehydration. Versioning and soft delete are protection that costs capacity: every overwrite creates a version or snapshot that stays stored. Downloads through a CDN or processing in the same region keep traffic off the bandwidth meters (data transfer optimisation); forgotten accounts, containers and diagnostic logs without a retention period belong to the idle and orphaned resources. What Azure Files costs instead of blobs is under Azure Files and NetApp Files pricing, what backups put into blobs under Azure Backup and Site Recovery pricing.

Where it goes wrong

  • Early delete lines after a clean-up. A lifecycle rule or a script deleted or moved blobs out of cool, cold or archive before 30, 90 or 180 days had passed; an overwrite through Put Blob or Copy Blob counts too. Check MeterName for Early Delete and align the rule thresholds with the minimum retention.
  • One archive retrieval costs more than a year of storage. A restore ran at high priority, or many small blobs were rehydrated so that the read operations per 10,000 outweighed the retrieval per GB. Read Archive Priority Read Operations and Archive Read Operations separately; use standard priority, and Copy Blob instead of Set Blob Tier while the 180 days are not over.
  • The account's tier change produced a one-day spike. The default tier was switched from hot to cool or back, and every blob with an inferred tier was billed as a write, or as a read plus retrieval. Set tiers per blob or per lifecycle rule in future.
  • Operations exceed capacity. An application writes streams in small blocks, lists containers in loops or queries metadata per file; in cold or archive each operation weighs a multiple of hot. Compare the operation meters per account with the access pattern and consolidate objects before moving them.
  • Versions and snapshots grow faster than the data. Versioning or soft delete is on and a workload keeps overwriting the same blobs; every overwrite stores another version. Shorten retention or put frequently overwritten data into an account without versioning.
  • The archived blob goes back to archive. After rehydration through Set Blob Tier the last modified time stayed old and the lifecycle rule archived the blob again. Add the daysAfterLastTierChangeGreaterThan condition to the rule, or rehydrate with Copy Blob.
  • A log container fills the account. Classic storage analytics logs or diagnostic exports keep running without a retention period. Set retention and add the container to a lifecycle rule.

Example

List prices from the Azure Retail Prices API in EUR for Germany West Central, product General Block Blob v2 (flat namespace), read on 2026-10-21: data stored costs per GB and month with LRS EUR 0.0172 in hot for the first 51,200 GB (EUR 0.0165 up to 512,000 GB, EUR 0.0158 beyond), EUR 0.0088 in cool, EUR 0.004 in cold and EUR 0.0016 in archive; with ZRS EUR 0.0198 in hot, EUR 0.0115 in cool and EUR 0.0044 in cold; with GRS EUR 0.0345 in hot, EUR 0.0176 in cool, EUR 0.0071 in cold and EUR 0.0025 in archive; with RA-GRS EUR 0.0431 in hot and EUR 0.022 in cool (the hot prices each for the first 51,200 GB). Per 10,000 operations with LRS, writes cost EUR 0.0475 in hot, EUR 0.088 in cool, EUR 0.1584 in cold and EUR 0.1056 in archive; reads EUR 0.0038 in hot, EUR 0.0088 in cool, EUR 0.088 in cold and EUR 4.7298 in archive, or EUR 57.1982 as priority retrieval; list and create container EUR 0.0475 and all other operations EUR 0.0038 in hot. Data retrieval costs per GB EUR 0.0088 from cool, EUR 0.0264 from cold, EUR 0.0211 from archive and EUR 0.1144 as priority retrieval; early deletion per GB and remaining month EUR 0.0088 in cool, EUR 0.004 in cold and EUR 0.0016 in archive. One GB sits in archive for a year at EUR 0.0192, a single standard retrieval of that GB costs EUR 0.0211 and a priority retrieval EUR 0.1144: archive pays off for data that is almost never read, and the read operations per 10,000 make many small objects dearer there than a few large ones.

Sources

Read on 2026-10-21. Microsoft Learn: Access tiers for blob data, Blob rehydration from the archive tier, Lifecycle management overview, Azure Storage redundancy, Plan and manage costs for Azure Blob Storage, Cost details fields, FOCUS cost and usage details schema. Prices: Azure Retail Prices API in EUR, General Block Blob v2 in Germany West Central.