DynamoDB Pricing Explained, With a Cost Calculator
Work out what a table will actually cost. On-demand versus provisioned compared, an interactive calculator, and where the bill usually leaks.
This comprehensive guide breaks down DynamoDB’s pricing structure, provides practical examples, and offers proven strategies to optimize your costs. Start with the calculator below to estimate the cost of your table.
DynamoDB Cost Calculator
Use this calculator to compare on-demand and provisioned costs for one table in any AWS Region. It includes transactional requests, global table replicas, and reserved capacity. The provisioned cost depends on utilization: your average traffic as a percentage of the provisioned capacity. The calculator starts at 70%. Set it to 100% to get the worked example below.
Assumptions
Average traffic as a percentage of provisioned capacity. Auto scaling targets 70% by default.
Monthly estimate
On-demand
Pay for each request.
- Reads259.2M RRU × $0.125/M
- $32.40
- Writes64.8M WRU × $0.625/M
- $40.50
- Storage20 GB × $0.25
- $5.00
Provisioned
143 RCUs and 36 WCUs at 70% utilization
- Reads143 RCU × 720 h × $0.00013
- $13.38
- Writes36 WCU × 720 h × $0.00065
- $16.85
- Storage20 GB × $0.25
- $5.00
At 70% utilization, on-demand costs 2.2 times more than provisioned ($42.67 more each month).
Provisioned costs less when average utilization is 30% or more.
Show the numbers
| Utilization | Provisioned | On-demand |
|---|---|---|
| 10% | $215.60 | $77.90 |
| 20% | $110.30 | $77.90 |
| 30% (break-even) | $75.57 | $77.90 |
| 50% | $47.12 | $77.90 |
| 70% (your setting) | $35.23 | $77.90 |
| 100% | $26.06 | $77.90 |
AWS recommends on-demand mode for most workloads. Use provisioned mode when your traffic is steady and you can forecast it.
Reserved capacity
If your traffic is steady for a year or more, reserved capacity decreases the provisioned cost.
| Term | Reserved | Upfront | Per month |
|---|---|---|---|
| 1-year | 100 RCUs | $30.00 | $30.17 |
| 3-year | 100 RCUs | $36.00 | $28.02 |
AWS sells reserved capacity in allocations of 100 RCUs or 100 WCUs. The other 43 RCUs and 36 WCUs are at the standard rate.
The monthly cost includes the upfront fee divided by the months in the term. It assumes that you use all of the reserved capacity.
How DynamoDB Pricing Works
DynamoDB offers two capacity modes, each with distinct pricing models:
1. On-Demand Capacity Mode
On-demand capacity automatically scales up and down based on your application’s traffic, with no capacity planning required. You pay only for the reads and writes you perform, with no minimum fee.
The rates in this guide are for DynamoDB Standard in US East (N. Virginia) (us-east-1), in USD. They come from the AWS Price List of 2026-09-11. Prices vary by Region and table class. For the current prices, see AWS’s DynamoDB pricing page.
Pricing Components for On-Demand Mode:
| Resource | Pricing Unit | Rate |
|---|---|---|
| Read Request Units | Per million RRUs | $0.125 |
| Write Request Units | Per million WRUs | $0.625 |
| Storage | Per GB-month | $0.25 |
With on-demand, a read request unit (RRU) represents one strongly consistent read request (or two eventually consistent reads) for an item up to 4KB. A write request unit (WRU) represents one write request for an item up to 1KB.
2. Provisioned Capacity Mode
Provisioned capacity allows you to specify the number of reads and writes per second your application requires. You pay for the capacity you provision, whether or not you use it.
Pricing Components for Provisioned Mode:
| Resource | Pricing Unit | Rate |
|---|---|---|
| Read Capacity Units (RCUs) | Per RCU-hour | $0.00013 |
| Write Capacity Units (WCUs) | Per WCU-hour | $0.00065 |
| Storage | Per GB-month | $0.25 |
One RCU provides one strongly consistent read per second (or two eventually consistent reads) for items up to 4KB. One WCU provides one write per second for items up to 1KB.
Calculating Read and Write Capacity Units
For Read Operations:
- Item Size Calculation: Divide the item size by 4KB, rounding up to the nearest whole number
- Consistency Type: Multiply by 1 for strongly consistent reads, or by 0.5 for eventually consistent reads
For example, reading a 10KB item with strong consistency requires 3 RCUs (10KB ÷ 4KB = 2.5, rounded up to 3).
For Write Operations:
- Item Size Calculation: Divide the item size by 1KB, rounding up to the nearest whole number
For example, writing a 2.5KB item requires 3 WCUs (2.5KB ÷ 1KB = 2.5, rounded up to 3).
Additional Cost Factors
Beyond read/write operations and storage, several other factors contribute to your DynamoDB costs:
| Feature | Pricing Structure |
|---|---|
| Global Tables | Replicated writes (at the single-Region write rate), storage, and GSI writes in each replica Region. A new replica costs the same as a table restore. |
| Backups | Pay for backup storage (separate from table storage) |
| Point-in-Time Recovery | $0.20 per GB-month of table data and local secondary indexes. A shorter recovery period does not decrease the cost. |
| DynamoDB Streams | Stream read requests after the free tier. Reads by Lambda triggers and global tables replication are free. |
| Data Transfer | Outbound transfer costs (inbound is free) |
| DynamoDB Accelerator (DAX) | Hourly cost for each node in your DAX cluster |
On-Demand vs. Provisioned: Cost Comparison
The choice between on-demand and provisioned capacity significantly impacts your costs:
On-Demand Advantages:
- Pay-per-use: Only pay for actual usage
- No capacity planning: Automatic scaling
- No over-provisioning: Never waste capacity
- Good for unpredictable traffic: Handles sudden spikes
Provisioned Advantages:
- Lower unit cost: Can be substantially cheaper than on-demand for stable, well-utilized workloads
- Cost predictability: Predictable hourly capacity charges when provisioned throughput is stable
- Free tier eligible: 25 WCU and 25 RCU free allocation applies
- Auto-scaling option: Can configure to scale up/down within limits
Cost Comparison Example
Let’s compare both pricing models for a simple scenario:
Application needs:
- 100 reads per second (4KB items, strongly consistent)
- 25 writes per second (1KB items)
- 20GB of storage
- Steady traffic for 30 days
On-Demand Cost:
- Reads: 100 RRUs/sec × 86,400 sec/day × 30 days = 259.2 million RRUs/month 259.2 million × $0.125/million = $32.40/month
- Writes: 25 WRUs/sec × 86,400 sec/day × 30 days = 64.8 million WRUs/month 64.8 million × $0.625/million = $40.50/month
- Storage: 20GB × $0.25/GB-month = $5.00/month
- Total: $77.90/month
Provisioned Cost:
- Reads: 100 RCUs × $0.00013/RCU-hour × 720 hours/month = $9.36/month
- Writes: 25 WCUs × $0.00065/WCU-hour × 720 hours/month = $11.70/month
- Storage: 20GB × $0.25/GB-month = $5.00/month
- Total: $26.06/month
In this example, on-demand costs approximately 3 times more than provisioned. The costs are list prices, with no free tier and 100% utilization. Provisioned throughput costs less only when average utilization is more than approximately 29%. This does not include storage, the free tier, or reserved capacity. AWS recommends on-demand mode for most workloads.
Cost Optimization Strategies
Regardless of your capacity mode, these strategies can significantly reduce your DynamoDB costs:
1. Choose the Right Capacity Mode
- Use on-demand for unpredictable workloads, development environments, or new applications without historical usage data
- Use provisioned for predictable workloads with consistent usage patterns
- Implement auto-scaling with provisioned capacity to automatically adjust capacity based on usage patterns
- Use separate tables to mix capacity modes: A table uses one mode at a time.
2. Optimize Data Storage
- Compress large attribute values before storing them
- Store large objects in S3 instead of DynamoDB, keeping only metadata in DynamoDB
- Use sparse attributes to avoid storing null or empty values
- Enable TTL (Time to Live) to automatically remove expired items. TTL deletes use no write capacity, except replicated deletes on global tables.
- Prefer smaller attribute names (they contribute to item size)
- Consolidate related items into one item only when you read or write them together. Each update uses write units for the full item size, so small updates to a large item cost more.
3. Optimize Read and Write Operations
- Use eventually consistent reads when possible (half the cost of strongly consistent reads)
- Implement client-side caching for frequently accessed items
- Use Query, not BatchGetItem, for items with the same partition key. Query rounds up the total size once. Batch operations round up each item and decrease only network round trips.
- Use projections to return only needed attributes (smaller responses, but reads are still charged on full item size)
- Design efficient access patterns to minimize use of Scan operations
- Implement query pagination to avoid retrieving more items than needed
4. Index Optimization
- Use sparse indexes (only items with the indexed attribute appear in the index)
- Project only necessary attributes to indexes, minimizing storage and write costs
- Evaluate secondary indexes regularly and remove unused ones
- Consider overloading Global Secondary Indexes to serve multiple query patterns
5. Reserved Capacity
For large-scale, predictable workloads, AWS offers Reserved Capacity for DynamoDB:
- Purchase reserved capacity for 1-year or 3-year terms. You pay an upfront fee and a lower hourly rate.
- Save up to 54% (1-year term) or up to 77% (3-year term) on provisioned capacity costs
- Check the eligibility: Only single-Region RCUs and WCUs on DynamoDB Standard tables are eligible. This includes GSI writes on a global table, but not replicated writes.
- Calculate break-even points to determine if reserved capacity is cost-effective
6. Monitoring and Alerting
- Set up CloudWatch alarms for capacity thresholds to prevent throttling and unexpected costs
- Use Cost Explorer to analyze DynamoDB spending trends
- Enable AWS Budgets to get notified when costs exceed thresholds
- Monitor consumed capacity vs. provisioned capacity to identify optimization opportunities
Real-World Cost Optimization Examples
The costs use the list prices above, for 30 days, and do not include other AWS services.
Example 1: E-commerce Product Catalog
Initial Setup:
- 5 million products with full product details in each item (20KB items, 100GB)
- 4,000 eventually consistent reads per second (10,000 RCUs)
- 325 price and stock updates per second. Each update rewrites the full 20KB item (6,500 WCUs).
- Monthly cost: $936.00 reads + $3,042.00 writes + $25.00 storage = $4,003.00
Optimized Setup:
- Moved product images, descriptions, and details to S3
- Kept only essential metadata in DynamoDB (product ID, name, price, category): 2KB items, 10GB, 650 WCUs
- Added client-side caching for popular items: 1,500 reads per second (750 RCUs)
- Monthly cost: $70.20 reads + $304.20 writes + $2.50 storage = $376.90 (91% savings)
Example 2: IoT Sensor Dashboard
Initial Setup:
- On-demand capacity for 200 sensor readings (1KB) per second
- All historical data stored in DynamoDB (14 months, 7.2TB)
- A nightly full-table Scan for analytics (900 million RRUs each)
- Monthly cost: $324.00 writes + $1,800.00 storage + $3,375.00 Scans = $5,499.00
Optimized Setup:
- Switched to provisioned capacity with auto-scaling (286 WCUs at 70% utilization)
- Kept 30 days of data (520GB). TTL deletes older items, and a Lambda function on the stream copies them to S3 for Athena.
- Replaced Scan operations with targeted Queries on a keys-only GSI (29 RCUs). The GSI adds 286 WCUs and 80GB.
- Monthly cost: $267.70 writes + $150.00 storage + $2.71 reads = $420.41 (92% savings)
Most of the saving comes from TTL and the removal of the Scan, not from the change of capacity mode. The S3 archive adds approximately $154 per month.
Example 3: User Session Management
Initial Setup:
- Provisioned capacity for session storage: 1,500 strongly consistent reads and 300 writes per second (2KB items)
- No TTL: 2 years of expired sessions (1.1TB)
- Monthly cost: $140.40 reads + $280.80 writes + $275.00 storage = $696.20
Optimized Setup:
- Enabled TTL: sessions expire after 7 days (11GB)
- Used eventually consistent reads (750 RCUs), except immediately after login
- Monthly cost: $70.20 reads + $280.80 writes + $2.75 storage = $353.75 (49% savings)
Understanding Your DynamoDB Bill
The AWS Cost Explorer and Billing Dashboard provide insights into your DynamoDB costs. Here’s how to interpret your DynamoDB charges:
-
Look for line items: DynamoDB costs appear under “Amazon DynamoDB”, by usage type. A Region prefix, for example
USW2-, shows the Region. No prefix means US East (N. Virginia). Examples:ReadCapacityUnit-HrsandWriteCapacityUnit-Hrs: provisioned capacityReadRequestUnitsandWriteRequestUnits: on-demand requestsReplWriteCapacityUnit-HrsandReplWriteRequestUnits: global table replicated writesTimedStorage-ByteHrs: table and index storageTimedPITRStorage-ByteHrs: point-in-time recovery
-
Analyze cost drivers: Use Cost Explorer’s “Group by” feature to identify which aspects of DynamoDB are driving costs
-
Check for unused resources: Look for tables or indexes consuming capacity but not actively used
-
Monitor reserved capacity: If you’ve purchased reserved capacity, ensure you’re utilizing it fully
When to Consider DynamoDB Alternatives
While cost optimization is important, sometimes you might need to evaluate whether DynamoDB is the right choice:
- Consider Amazon RDS if your data is highly relational with many complex joins
- Consider Amazon S3 + Athena for analytical workloads with infrequent queries on large datasets
- Consider Amazon ElastiCache alongside DynamoDB for high-read workloads requiring microsecond response times
- Consider Amazon Keyspaces if you need a Cassandra-compatible interface with managed scaling
Conclusion
DynamoDB offers flexible pricing models to accommodate various workloads, from unpredictable applications to steady-state systems. By understanding how pricing works and implementing the optimization strategies outlined in this guide, you can significantly reduce your DynamoDB costs while maintaining performance.
Key takeaways:
- Choose the right capacity mode: On-demand for variable workloads, provisioned for consistent usage
- Optimize your data model: Efficient design reduces storage and capacity requirements
- Monitor and adjust: Regularly review your usage patterns to identify optimization opportunities
- Implement best practices: Use caching, TTL, efficient queries, and correct indexes to decrease costs
- Consider reservation discounts: For predictable, long-term usage, reserved capacity offers substantial savings
By taking a strategic approach to DynamoDB pricing, you can leverage this powerful NoSQL database while keeping your AWS bill predictable and cost-effective.
To effectively manage and monitor your DynamoDB tables, consider using Dynomate, which provides robust tools for capacity monitoring, query optimization, and data management—helping you maintain control over your DynamoDB costs.