How DynamoDB pricing works
A DynamoDB table costs its requests and its storage. Requests are measured in capacity units, which depend on the item size:
| Request | Units per request |
|---|---|
| Eventually consistent read | 0.5 per 4 KB, rounded up to the next 4 KB |
| Strongly consistent read | 1 per 4 KB |
| Transactional read | 2 per 4 KB |
| Standard write | 1 per 1 KB, rounded up to the next 1 KB |
| Transactional write | 2 per 1 KB |
A 2 KB item therefore takes 0.5 read units for an eventually consistent read and 2 write units for a write. Storage is billed per GB-month, counting 100 bytes of overhead per item. Prices differ by region and table class; the calculator takes them from AWS's own price list for the chosen region when you open the page.
On-demand vs provisioned capacity
On-demand bills every request, per million request units, and needs no planning: a table that gets no traffic costs only its storage. Provisioned bills read and write capacity units per hour, whether they are used or not, and throttles requests above them unless auto scaling raises them in time.
Per unit of work, fully used provisioned capacity costs about 29% of on-demand in most regions. Nobody uses it fully: capacity is set for the peaks, and auto scaling keeps a margin (a 70% target by default). The calculator shows the utilization at which the two cost the same - provisioned pays off only for steady traffic above it.
Global secondary indexes
A global secondary index is a table of its own for billing: every write to the table that touches the index is a write to the index too, and the projected attributes are stored again. The calculator assumes indexes projecting all attributes, the most expensive case. With a keys-only projection, both the index writes and its storage shrink to the size of the keys. An update that changes an index key costs two index writes - a delete and a put.
Standard vs Standard-IA table class
Standard-IA (Infrequent Access) cuts the storage price by 60% and raises the request prices by about 25%. It pays off for tables whose storage costs more than their requests - logs, history, old orders. The result shows what the same table would cost in the other class.
What the estimate leaves out
- The free tier: 25 GB of storage and 25 provisioned RCU and WCU per account and region, shared by all tables.
- Reserved capacity - a one- or three-year commitment that lowers provisioned prices.
- Backups, point-in-time recovery, DynamoDB Streams reads, global table replication, exports and imports, DAX, and data transfer out of the region.
- Reads from indexes: add them as reads if the application queries an index.
Frequently asked questions
How much does DynamoDB cost per month?
As little as nothing for a small table within the free tier, and a few dollars for a table with steady light traffic. The cost grows with the item size as much as with the traffic: a 5 KB item costs five write units per write. Enter your table above to see.
Is on-demand more expensive than provisioned?
Per request, yes - about 3.5 times fully used provisioned capacity. For real traffic it depends on the utilization: below the break-even the calculator shows, on-demand costs less.
Are the prices up to date?
Yes. They come from the official AWS Price List API: the page is built with the prices current at that time, and in your browser it fetches the chosen region's prices from AWS again before showing the result. The date under the result is when AWS published the price list.
Are the numbers I enter sent anywhere?
No. The calculation runs in your browser: nothing you enter is uploaded, processed on a server or stored. The page only counts that the calculator was used, which region and table class were chosen and which capacity mode came out cheaper, never the numbers.
References
Amazon DynamoDB pricing
DynamoDB throughput capacity
Table classes