azurerm_storage_table cost estimation
A storage table is free to declare. The cost is capacity for the entities it holds and transactions against them, billed on the parent storage account by volume.
An azurerm_storage_table creates a NoSQL key-value table inside a storage account for structured, non-relational data. Declaring the table is free. Azure bills the parent azurerm_storage_account for the data and operations, not for the table resource itself.
Two meters drive the cost. First, capacity: you pay per GB-month for the entities stored, at the standard table storage rate multiplied by the account's redundancy level. Table Storage is inexpensive per GB, which is a large part of its appeal for high-volume, simple data. Second, transactions: every insert, query, update, and delete is a table operation billed per 10,000 operations on the account. A query that scans many entities or an application that reads hot rows constantly drives the transaction meter, so access pattern matters more than raw row count. Egress applies when entities are read from outside the region.
The optimization is query design: use partition and row keys so lookups hit a single entity rather than scanning, and avoid table scans that generate many operations for one logical read. If you need global distribution, richer indexing, or higher throughput guarantees, the Table API on azurerm_cosmosdb_account is the priced upgrade. c3x prices the storage account capacity and transactions the table drives and treats the table declaration as free.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "azurerm_resource_group" "main" {
name = "storage-rg"
location = "eastus"
}
resource "azurerm_storage_account" "main" {
name = "appstore2026"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_storage_table" "sessions" {
name = "sessions"
storage_account_name = azurerm_storage_account.main.name
}Pricing dimensions
What you actually pay for when you provision azurerm_storage_table.
| Dimension | Unit | What's being charged |
|---|---|---|
| Table declaration | free | Creating the table has no charge; its entities and operations drive cost on the account. $0 |
| Capacity | per GB-month | Entities stored in the table, priced at the table storage rate and the account's redundancy level. |
| Transactions | per 10,000 operations | Insert, query, update, and delete are billed as table operations on the parent account. ~$0.00036 per 10,000 operations (Standard) |
Optimization tips
Common ways to reduce azurerm_storage_table cost without changing the workload.
Design keys to avoid table scans
Queries that filter on partition and row key hit a single entity, while scans read many entities and rack up operations. Model access patterns into the keys to keep transaction counts low.
Cache hot reads
An application reading the same entities repeatedly generates a transaction each time. Caching frequently read rows cuts the operation count against the account.
Move to Cosmos DB only when you need its features
Table Storage is far cheaper than the Cosmos DB Table API. Upgrade only when you genuinely need global distribution, guaranteed throughput, or secondary indexes.
FAQ
Does an Azure storage table cost money?
The table is free to declare. You pay on the parent storage account for the entities stored (per GB-month) and the operations against them (per 10,000), plus egress if read cross-region.
Why is Table Storage cheaper than Cosmos DB?
Table Storage bills simple capacity and transactions with no provisioned throughput. Cosmos DB's Table API adds global distribution, indexing, and throughput guarantees, which carry a higher price.
What makes table storage transaction cost spike?
Table scans and repeated hot reads. A query that filters on non-key properties scans many entities, each a billed operation, so poor key design turns one logical read into many operations.
Related resources
azurerm_storage_accountThe billed parent whose capacity and transaction meters the table drives.
azurerm_cosmosdb_accountThe priced Table API upgrade for global distribution and throughput guarantees.
azurerm_storage_queueAnother storage service in the same account billed by transactions and capacity.
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including azurerm_storage_table.