Posted on Sep 4, 2026 · Updated Sep 4, 2026 · 12 min read

DynamoDB Pricing Explained: On-Demand vs Provisioned (2026)

DynamoDB prices the exact same read and write throughput two completely different ways, and picking the wrong one for your traffic pattern routinely costs 3–5x more than it should. On-Demand bills per request (Write Request Units and Read Request Units); Provisioned bills per hour of reserved capacity (WCU/RCU), whether you use it or not — but Provisioned can be discounted further with Reserved Capacity, and Auto Scaling removes most of the manual tuning (AWS DynamoDB pricing, 2026).

This guide covers every DynamoDB cost line item — both capacity modes, storage, backups and point-in-time recovery, Global Tables replication, DAX caching, S3 import/export, and Reserved Capacity — with worked examples showing exactly where each mode wins. For how DynamoDB traffic fits into your broader AWS bill, see our NAT Gateway pricing guide (free VPC Gateway Endpoints eliminate NAT charges for DynamoDB traffic entirely), and for choosing between DynamoDB and a relational database on cost, see RDS vs Aurora cost.

TL;DR — DynamoDB pricing (2026)

  • On-Demand: $0.625 per million Write Request Units, $0.125 per million Read Request Units — no capacity planning, pay only for what you use
  • Provisioned: $0.00065 per WCU-hour (~$0.47/WCU-month), $0.00013 per RCU-hour (~$0.09/RCU-month) — cheaper at steady, predictable volume, pair with Auto Scaling
  • Worked example below: a table needing a steady 100 WCU / 300 RCU costs ~$88/month Provisioned vs ~$275/month On-Demand for the identical throughput — roughly 3x more for the wrong mode
  • Storage: $0.25/GB-month (Standard), $0.10/GB-month (Standard-Infrequent Access) — separate from PITR ($0.20/GB-month), on-demand backups ($0.10/GB), and restores ($0.15/GB)
  • Reserved Capacity discounts Provisioned rates up to 54% (1-year) or 77% (3-year), but only in 100-unit increments, locked to one Region, non-refundable
  • Global Tables bill every write again at the full WRU rate in each additional replica Region, plus cross-Region data transfer ($0.09/GB) — a second replica roughly doubles the write bill
  • DAX (in-memory caching) bills per node-hour ($0.04–$12.91+/hr by instance size) regardless of traffic — no free tier, no serverless option, runs 24/7 once provisioned
Server racks representing a distributed database backend

Two capacity modes: On-Demand vs Provisioned

Every DynamoDB table runs in one of two capacity modes, chosen per table (and switchable up to once per 24 hours). On-Demand bills per request with no capacity planning required — DynamoDB scales instantly to whatever throughput you send it and charges for exactly that. Provisioned requires you to set a WCU (write capacity unit) and RCU (read capacity unit) ceiling ahead of time, billed hourly whether you use the capacity or not, but at a per-unit rate that's dramatically cheaper than the On-Demand equivalent once utilization is reasonably steady.

Neither mode is universally cheaper — it depends entirely on how predictable and how steady your traffic is. Spiky, unpredictable, or low-volume tables are almost always cheaper On-Demand once you account for the capacity headroom Provisioned mode needs to avoid throttling. Steady, high-volume tables are almost always cheaper Provisioned, especially combined with Auto Scaling or Reserved Capacity. The worked examples further down quantify exactly how large that gap gets.

On-Demand pricing: requests, storage, backup

On-Demand bills in Write Request Units (WRU) and Read Request Units (RRU) — the same underlying unit of throughput as Provisioned's WCU/RCU, just billed per request instead of per hour reserved (AWS DynamoDB on-demand pricing, 2026):

ItemPrice
Write Request Units (WRU)$0.625 per million — 1 WRU per write of an item up to 1 KB; transactional writes cost 2 WRU
Read Request Units (RRU)$0.125 per million — 0.5 RRU for an eventually consistent read of an item up to 4 KB, 1 RRU for strongly consistent, 2 RRU for transactional
Storage — Standard$0.25 per GB-month
Storage — Standard-Infrequent Access$0.10 per GB-month
On-demand backup$0.10 per GB
Point-in-time recovery (PITR)$0.20 per GB-month, continuous
Table restore (from backup or PITR)$0.15 per GB
DynamoDB Streams reads$0.02 per 100,000 read request units; first 2.5M/month free

Source: AWS DynamoDB on-demand pricing, 2026 (US East, N. Virginia). Storage and backup rates apply identically under Provisioned mode. Items larger than the per-request threshold (1 KB write, 4 KB read) consume proportionally more request units, rounded up.

DynamoDB also has an always-on free tier, not a 12-month promotion: 25 GB of storage, 25 WCU/25 RCU of provisioned throughput (or the On-Demand equivalent), and 2.5 million Streams reads per account per Region, every month, with no expiration.

Provisioned pricing: WCU/RCU and Auto Scaling

Provisioned capacity is billed hourly per unit reserved, at a per-unit rate far below the equivalent On-Demand cost — the tradeoff is that you set (or Auto Scale) a ceiling ahead of time, and requests beyond it throttle unless Auto Scaling reacts in time (AWS DynamoDB provisioned pricing, 2026):

UnitPer hourPer month (730 hrs, 1 unit)
Write Capacity Unit (WCU)$0.00065~$0.47
Read Capacity Unit (RCU)$0.00013~$0.09

Source: AWS DynamoDB provisioned pricing, 2026 (US East, N. Virginia); rates vary by Region. 1 WCU = one write/sec of an item up to 1 KB. 1 RCU = one strongly consistent read/sec (or two eventually consistent reads/sec) of an item up to 4 KB.

Auto Scaling adjusts provisioned WCU/RCU within a min/max range you set, targeting a utilization percentage (commonly 70%), at no extra charge beyond the capacity actually provisioned at any given hour. It reacts to sustained changes in traffic, not instantaneous spikes — a workload with genuinely unpredictable, second-to-second bursts is still better served by On-Demand than by Auto Scaling trying to chase it.

Reserved Capacity discounts

For tables with genuinely steady, forecastable throughput, Reserved Capacity discounts the Provisioned hourly rate further in exchange for an upfront commitment (AWS DynamoDB reserved capacity pricing, 2026):

  • 1-year term: up to 54% savings versus standard Provisioned rates
  • 3-year term: up to 77% savings versus standard Provisioned rates
  • Purchased in increments of 100 RCU or 100 WCU, per Region
  • Requires an upfront fee plus a discounted hourly rate for the remaining commitment
  • Non-refundable and non-transferable — cannot move to another Region or account once purchased

Reserved Capacity only pays off if the reserved units stay genuinely utilized for the full term — unlike Savings Plans for EC2, there's no automatic application across differently-sized workloads, so over-committing on a table whose traffic later drops locks in a cost you can't shed. Model the break-even against Auto Scaling on Provisioned (no commitment, still far cheaper than On-Demand for steady traffic) before committing to a 1- or 3-year term.

Global Tables: the replication cost

Global Tables replicate a table across multiple Regions for low-latency local reads and multi-Region resilience — but every write is billed again, in full, in each additional replica Region:

  • Each write replicated to another Region consumes a full-price replicated Write Request Unit (rWRU) in the receiving Region — same $0.625/million (On-Demand) or $0.00065/WCU-hour (Provisioned) rate as a native write there, not a discounted “replication” rate
  • Cross-Region data transfer for the replicated write payload: $0.09/GB
  • Storage is billed per replica — a 2-Region table pays storage twice, a 3-Region table three times
  • Adding a new replica to an existing table triggers a one-time backfill, billed at the table-restore rate of $0.15/GB for the data copied into the new replica

Reads are cheap in Global Tables — each Region only bills for the reads it actually serves locally, with no replication surcharge. The cost driver is write volume: a table with heavy write traffic gets meaningfully more expensive with every additional Region, while a read-heavy, write-light table (the workload Global Tables is usually built for — low-latency reads close to users) scales far more gently.

DAX: in-memory caching cost

DynamoDB Accelerator (DAX) is an in-memory read cache that sits in front of a table to cut read latency from milliseconds to microseconds — but unlike DynamoDB itself, DAX is not serverless. It runs as a cluster of provisioned nodes, billed per node-hour regardless of whether it's actually caching anything:

Node typePrice per hour (us-east-1)
dax.t3.small~$0.04
dax.r5.large~$0.269
dax.r5.24xlarge~$12.912

Source: AWS DynamoDB Accelerator (DAX) pricing, 2026. Partial hours bill as full hours. No free tier, no serverless/on-demand billing option, and no Reserved Node discount — the only lever for cost control is node size and cluster count.

A minimally viable production DAX cluster for high availability uses 3 nodes across availability zones. Three dax.r5.large nodes run ~$589/month (3 × $0.269/hr × 730 hrs) whether the cache hit rate is 95% or 5% — a fixed cost that only makes sense once the read volume and latency requirement genuinely justify it. For spiky or low-read-volume tables, that fixed monthly floor is usually larger than what caching would ever save on RRU spend.

S3 import and export pricing

DynamoDB can bulk-export a table to S3 for analytics (Parquet or DynamoDB JSON) or bulk-import from S3 into a new table, both billed per GB rather than per request:

  • Export to S3: $0.10 per GB of table data exported — billed on the size of the table data (items plus local secondary indexes) at the export point in time, not the size of the output files in S3. Applies to both full and incremental exports.
  • Import from S3: $0.15 per GB of uncompressed source data, including any failed records — no consumed WCU on the destination table during the bulk load.

Both are meaningfully cheaper than reading or writing the equivalent volume through normal RRU/WRU billing at any real scale, which is why export-to-S3 (rather than scanning the table) is the standard pattern for feeding DynamoDB data into Athena, Redshift, or a data lake.

Worked examples: which mode wins

Low, spiky traffic (5M eventually consistent reads + 1M writes/month, 5 GB storage): On-Demand: 2.5M RRU (5M reads × 0.5) at $0.125/million = $0.31, plus 1M WRU at $0.625/million = $0.63, plus $1.25 storage — ~$2.19/month total. Provisioning enough WCU/RCU to safely absorb unpredictable spikes at this volume would cost more in reserved-but-unused capacity than the entire On-Demand bill. On-Demand wins decisively at low or unpredictable volume.

Steady, predictable high volume (sustained 100 WCU + 300 RCU, 24/7, 50 GB storage): Provisioned: 100 WCU × $0.00065 × 730 hrs = $47.45, plus 300 RCU × $0.00013 × 730 hrs = $28.47, plus $12.50 storage — ~$88.42/month. The On-Demand equivalent of that same sustained throughput (100 writes/sec and 300 strongly-consistent reads/sec, continuously, all month) works out to 262.8M WRU ($164.25) plus 788.4M RRU ($98.55) plus $12.50 storage — ~$275.30/month. Provisioned is roughly 3.1x cheaper for identical, steady throughput. Add a 1-year Reserved Capacity commitment (up to 54% off the WCU/RCU portion) and the Provisioned total drops to roughly ~$47/month before amortizing the upfront fee — about 5.8x cheaper than On-Demand for this specific workload.

Multi-Region Global Table (10M writes + 40M eventually consistent reads/month, 20 GB storage, adding one replica Region): Single-Region On-Demand baseline: $6.25 (WRU) + $2.50 (RRU) + $5.00 (storage) = $13.75/month. Adding a second replica Region that serves an equivalent local read volume: +$6.25 in replicated WRU, +$2.50 in local reads, +$5.00 in duplicated storage, plus roughly $0.90 in cross-Region transfer for the replicated write payload (10 GB × $0.09/GB) — ~$28.40/month total, roughly doubling the bill for two Regions. A third replica would add a comparable increment again.

Common DynamoDB cost mistakes

  • Leaving a steady, high-volume table on On-Demand. The worked example above shows roughly 3x higher cost versus Provisioned + Auto Scaling for identical, predictable throughput — On-Demand's convenience has a real, quantifiable price at steady volume.
  • Over-provisioning WCU/RCU “to be safe” instead of using Auto Scaling. Reserved-but-unused capacity bills the same as used capacity every hour; a wide Auto Scaling min/max range with a reasonable target utilization captures most of the same safety margin without paying for permanent headroom.
  • Adding Global Table replicas without pricing the write multiplication. Every additional Region roughly re-bills the full write volume again, plus cross-Region transfer — fine for read-heavy tables, expensive for write-heavy ones.
  • Running a DAX cluster sized for peak load 24/7 for a table with spiky or low read traffic. DAX has no serverless tier — a 3-node HA cluster runs a fixed ~$589–plus monthly floor (at dax.r5.large) regardless of cache hit rate.
  • Letting DynamoDB traffic route through a NAT Gateway in a private subnet. A free VPC Gateway Endpoint eliminates NAT processing charges for DynamoDB traffic entirely — see our NAT Gateway pricing guide.
  • Forgetting PITR and on-demand backups are billed separately from table storage. Continuous PITR runs $0.20/GB-month on top of the $0.25/GB-month Standard storage rate — easy to omit from a cost estimate built only around WCU/RCU or WRU/RRU.
Rows of illuminated server hardware representing a managed database cluster

Frequently asked questions

Is DynamoDB On-Demand or Provisioned cheaper?

It depends on how steady your traffic is. On-Demand ($0.625/million writes, $0.125/million reads) wins for low, spiky, or unpredictable volume because there's no reserved-but-unused capacity to pay for. Provisioned ($0.00065/WCU-hour, $0.00013/RCU-hour) wins for steady, predictable, high-volume tables — often by 3x or more for identical throughput, and further with Reserved Capacity.

How much does DynamoDB storage cost?

$0.25 per GB-month for DynamoDB Standard, or $0.10 per GB-month for Standard-Infrequent Access on tables where most items are rarely read. This applies identically under both On-Demand and Provisioned capacity modes, and is separate from backup, PITR, and restore charges.

Does DynamoDB have a free tier?

Yes, an always-on free tier with no expiration: 25 GB of storage, 25 WCU and 25 RCU of provisioned throughput (or the On-Demand equivalent), and 2.5 million DynamoDB Streams reads per account per Region, every month.

How much do DynamoDB Global Tables cost?

Reads are billed normally per Region with no replication surcharge, but every write is billed again at the full WRU/WCU rate in each additional replica Region, plus $0.09/GB in cross-Region data transfer. A second replica Region roughly doubles the write portion of the bill; a third adds a comparable increment again.

Is DAX worth the cost?

Only if read latency or read volume genuinely justifies a fixed node-hour cost that runs regardless of traffic — a 3-node HA cluster of dax.r5.large runs roughly $589/month whether the cache hit rate is high or low. DAX has no serverless tier, no free tier, and no Reserved Node discount, so it's a poor fit for spiky or low-read-volume tables.

Estimate your cloud costs — for free

Compare AWS, Azure, and GCP pricing side by side with our free calculator, and dig into the guides to learn how to cut cloud waste. No sign-up required.