Loading...


Updated 27 Oct 2026 • 7 mins read

DynamoDB pricing has two modes, on-demand per request and provisioned per capacity-hour, a break-even near 30 percent utilization, and a set of multipliers that surprise estimates: global secondary indexes, item sizes, consistency, global tables, and backups. This 2026 breakdown gives every rate in US East after the 2024 price cut, worked examples, and the levers.
DynamoDB pricing has one decision that matters more than every rate on the page: on-demand or provisioned. On-demand bills each request, nothing to plan, and costs about three and a half times more per request than provisioned capacity used in full; provisioned bills reserved capacity by the hour whether or not requests arrive, and costs more than on-demand once utilization drops below about 30 percent. Get the mode right and DynamoDB is one of the cheapest databases on AWS. Get it wrong, or add three global secondary indexes without noticing that each one re-bills every write, and a table estimated at $50 a month bills $400.
This guide gives every DynamoDB rate for US East as of October 2026, after the late-2024 cut that halved on-demand prices (and that many older guides still miss), explains the two modes and where the break-even sits, covers reserved capacity, the Standard-IA table class, indexes, backups, global tables, and streams, works through three examples, and lists the levers that reduce the bill. Rates are from the official DynamoDB pricing page; for the broader AWS database picture, see our RDS cost optimization guide.
The short answer: DynamoDB in US East bills in one of two modes. On-demand: $0.625 per million write request units (one unit per write up to 1 KB) and $0.125 per million read request units (one unit per strongly consistent read up to 4 KB, half for eventually consistent), with no capacity to plan. Provisioned: $0.00065 per write capacity unit-hour and $0.00013 per read capacity unit-hour for capacity reserved whether used or not, about $0.47 and $0.09 per unit per month, with auto scaling and reserved capacity at roughly 50 to 75 percent off on one- and three-year terms. Storage is $0.25 per GB-month on Standard tables and $0.10 on Standard-IA, which charges 25 percent more for throughput. Provisioned at full utilization is about 3.5 times cheaper per request than on-demand; on-demand wins below roughly 30 percent utilization. Global secondary indexes re-bill every write they cover, global tables bill a full write in every region, point-in-time recovery is $0.20 per GB-month, and the free tier of 25 GB and 25 WCU and RCU is permanent.
US East (N. Virginia), Standard table class, October 2026.
| Line | On-demand | Provisioned | Notes |
|---|---|---|---|
| Writes | $0.625 per million WRU | $0.00065 per WCU-hour (about $0.47 per WCU-month) | 1 unit per write up to 1 KB; transactional writes 2 units |
| Reads | $0.125 per million RRU | $0.00013 per RCU-hour (about $0.09 per RCU-month) | 1 unit per strongly consistent read up to 4 KB; 0.5 for eventually consistent; 2 for transactional |
| Reserved capacity | n/a | Roughly $0.0003 per WCU-hour (1 year) and $0.00011 to $0.00016 (3 years); RCU proportionally | Upfront payment; provisioned mode only |
| Storage | $0.25 per GB-month | $0.25 per GB-month | First 25 GB free; includes indexes |
| Standard-IA table class | $0.78 per million WRU; $0.155 per million RRU; $0.10 per GB-month storage | $0.00081 per WCU-hour; $0.00016 per RCU-hour; $0.10 per GB-month | 25 percent more throughput, 60 percent less storage |
| Global secondary indexes | Billed as writes and reads at the same rates, plus storage | Provisioned separately per index | Every covered write re-bills |
| Global tables | Replicated writes at the full write rate in each region | Replicated WCU-hours in each region | Plus storage per region |
| DynamoDB Streams | $0.02 per 100,000 read request units; first 2.5 million a month free | Same | Change data capture |
| Point-in-time recovery | About $0.20 per GB-month | Same | Continuous backups, 35-day window |
| On-demand backups and restores | $0.10 per GB-month; restore $0.15 per GB | Same | Snapshots |
| Export to S3 | $0.10 per GB | Same | Plus S3 storage |
| DAX (in-memory cache) | Per node-hour by node type | Same | Reduces reads at the cost of a cluster |
| Free tier | 25 GB storage; 2.5 million stream reads | 25 WCU and 25 RCU | Permanent, per account |
A provisioned write capacity unit handles one 1 KB write per second, about 2.6 million writes a month, and costs $0.47 for the month. The same 2.6 million writes on-demand cost $1.62. At full utilization provisioned is 3.5 times cheaper per write, and reserved capacity roughly halves it again. But provisioned bills the unit for all 730 hours whether or not writes arrive, so its effective cost per request rises as utilization falls: at 50 percent utilization it is $0.93 per 2.6 million writes, at 30 percent about $1.56, and below that on-demand is cheaper.
| Average utilization of provisioned capacity | Provisioned cost per 2.6M writes | On-demand cost per 2.6M writes | Cheaper |
|---|---|---|---|
| 100% | $0.47 | $1.62 | Provisioned, 3.5x |
| 70% | $0.67 | $1.62 | Provisioned, 2.4x |
| 50% | $0.93 | $1.62 | Provisioned, 1.7x |
| 30% | $1.56 | $1.62 | Roughly even |
| 15% | $3.13 | $1.62 | On-demand, 1.9x |
Auto scaling moves provisioned utilization up by tracking demand, but it lags spikes by minutes and keeps a buffer, so real provisioned tables typically run at 40 to 70 percent. The rule: steady, forecastable traffic belongs on provisioned with auto scaling and a reservation on the floor; new, spiky, or low-traffic tables belong on-demand, and a table can switch modes once every 24 hours as its pattern becomes clear.
US East, monthly, Standard table class, 1 KB items, eventually consistent reads.
| Workload | On-demand | Provisioned (auto scaling, about 60% utilization) | Provisioned with 1-year reservation | Best |
|---|---|---|---|---|
| Session store: 50M writes, 200M reads, 20 GB | $31 + $12.50 + $0 = about $44 | About 32 WCU and 64 RCU average: $25 + $10 + $0 = about $35 | About $20 | Provisioned, but on-demand close for the simplicity |
| Order history: 20M writes, 100M reads, 800 GB, 2 GSIs | Writes $12.50 + index writes $25 + reads $6.25 + storage $194 = about $238 | Capacity about $30 + storage $194 = about $224 | About $210 | Storage dominates; consider Standard-IA |
| Same order history on Standard-IA | Writes $15.60 + index writes $31 + reads $7.75 + storage $78 = about $132 | Capacity about $38 + storage $78 = about $116 | About $105 | Standard-IA saves 45 percent |
| Event stream: 2B writes a month, 500 GB, global in 2 regions | Writes $1,250 x 2 regions + reads + storage $250 = about $2,900 | About 1,300 WCU x 2 regions: $1,230 + storage $250 = about $1,600 | About $900 | Reserved provisioned, by far |
The second and third rows show the class decision: when storage is most of the bill, Standard-IA's 60 percent storage saving outweighs its 25 percent throughput premium. The last row shows the mode decision at scale: a steady two-billion-write workload on on-demand pays three times what reserved provisioned capacity would.
New and spiky tables start on-demand; once a table shows steady traffic, switch to provisioned with auto scaling and reserve the floor. Tables can switch modes daily.
Keep items under the 1 KB and 4 KB unit boundaries where possible, compress large attributes, and use eventually consistent reads wherever the application tolerates them.
Remove global secondary indexes nothing queries, project only the attributes each index needs (KEYS_ONLY where possible), and avoid indexing attributes that change on every write.
Logs, history, and archives where storage exceeds about half the bill save around 45 percent on the class change alone.
Time-to-live deletes expired items at no cost, which cuts storage, backup, and index size on tables that accumulate.
Point-in-time recovery only where a 35-day continuous window is needed; global tables only in regions that serve traffic.
DynamoDB appears on the invoice as one service line; the index nobody queries and the table left on-demand at steady load are found only when each table has a team and a cost beside it, the pattern our guide to where cloud waste hides describes.
DynamoDB's bill is a single service line with a dozen tables and their indexes, modes, classes, and backups behind it, none of them named on the invoice. Opslyft shows DynamoDB cost by table, team, and service beside the compute and storage around it and flags the table whose write units doubled after an index was added; the rest of the AWS estate's levers are in our AWS cost optimization guide.
DynamoDB pricing is two modes, a break-even near 30 percent utilization, and a set of multipliers that the rate card lists and estimates ignore. Put steady tables on provisioned capacity with auto scaling and a reservation, keep spiky and new tables on-demand, size items to the unit boundaries, read eventually consistently where you can, audit every index, move cold tables to Standard-IA, expire what is stale, and back up and replicate only what needs it. Done well, DynamoDB is among the cheapest databases on AWS for the workloads it suits. For the relational alternative, see our RDS cost optimization guide; for the document-store comparison, our DocumentDB versus MongoDB guide.
In US East, on-demand mode costs $0.625 per million write request units and $0.125 per million read request units, after AWS halved on-demand throughput prices in late 2024; provisioned mode costs $0.00065 per write capacity unit-hour and $0.00013 per read capacity unit-hour, with reserved capacity cutting those by roughly half to three-quarters on one- and three-year terms. Storage is $0.25 per GB-month on Standard tables and $0.10 on Standard-IA, which charges 25 percent more for throughput. The free tier is 25 GB and 25 WCU and 25 RCU of provisioned capacity, permanently.
On-demand bills per request with no capacity to plan: every write up to 1 KB is one write request unit and every strongly consistent read up to 4 KB is one read request unit. Provisioned bills per hour for the capacity you reserve, one WCU being one 1 KB write per second and one RCU one 4 KB strongly consistent read per second, whether you use it or not, with auto scaling to adjust it. Provisioned is cheaper per request at steady, well-utilized traffic; on-demand is cheaper for spiky, low, or unpredictable traffic.
When utilization is high. A provisioned WCU running flat out handles about 2.6 million writes a month for $0.47, against $1.62 for the same writes on-demand, so provisioned is about three and a half times cheaper per request at full use. At 30 percent average utilization the two are roughly even, and below that on-demand wins because provisioned bills the idle hours. Reserved capacity widens provisioned's lead further for steady baselines.
Because every write to the table that affects an index is also written to the index, consuming its own write units, and each index has its own storage. A table with three GSIs can pay four times the write cost of the table alone, which is the commonest reason DynamoDB bills exceed estimates. Reads from an index bill at the index's rate too. Project only the attributes an index needs and remove indexes nothing queries.
Point-in-time recovery bills about $0.20 per GB-month of table size, on-demand backups $0.10 per GB-month, and restores $0.15 per GB. Global tables replicate every write to each additional region at a full-price replicated write request unit in that region, the same rate as a native write, plus storage in each region, so a table in three regions pays roughly three times its write and storage cost.
A table class for data that is stored for a long time and accessed rarely: storage costs $0.10 per GB-month instead of $0.25, and throughput costs 25 percent more ($0.78 per million writes, $0.155 per million reads on-demand). It saves money when storage is more than about 50 percent of a table's bill, which is typical for logs, history, and archives, and costs more for hot tables.
Right-size item size, since units bill in 1 KB and 4 KB steps; use eventually consistent reads where possible, which cost half; move steady, high-utilization tables to provisioned with auto scaling and reserved capacity; move cold tables to Standard-IA; prune global secondary indexes and project only needed attributes; use TTL to expire stale items; batch and compress writes; and attribute each table's cost to the service that owns it so the index nobody queries has someone to delete it.