AWS DynamoDB Pricing: A Complete Guide to Understanding and Optimizing Costs
DynamoDB pricing can be unpredictable. Learn how capacity modes, storage, and request patterns affect your bill—plus 8 strategies to cut costs.

Nishant Thorat
Founder
If you've ever been surprised by your DynamoDB bill, you're not alone. Amazon DynamoDB is a powerful, fully managed NoSQL database that can scale to handle millions of requests per second—AWS reported peaks as high as 151 million requests per second during Prime Day. But that scalability comes with complexity in pricing that catches many teams off guard.
The good news? Once you understand how DynamoDB pricing works, you can take control of your costs. Let's break it down.
What is Amazon DynamoDB?
DynamoDB is AWS's flagship NoSQL database service. It's serverless, meaning you don't manage infrastructure—AWS handles provisioning, patching, and scaling automatically. It's designed for applications requiring single-digit millisecond latency at any scale.
[Image: DynamoDB Table Structure]
Common use cases include:
- Session management and user profiles
- Real-time bidding and gaming leaderboards
- IoT data ingestion
- E-commerce shopping carts
- Mobile app backends
But here's what matters for your budget: DynamoDB's pricing model is fundamentally different from traditional databases. You're not paying for a fixed server size—you're paying for what you use.
DynamoDB Free Tier
Before diving into costs, here's what AWS gives you for free every month:
| Resource | Free Tier Allowance |
|---|---|
| Storage | 25 GB across all tables and indexes |
| Read Capacity | 25 RCUs (provisioned) OR 2.5M read request units (on-demand) |
| Write Capacity | 25 WCUs (provisioned) OR 2.5M write request units (on-demand) |
This free tier is generous enough for development, testing, and small production workloads. But once you exceed these limits, understanding the pricing model becomes critical.
DynamoDB Pricing at a Glance (US East - N. Virginia)
Here's the current pricing breakdown to help you estimate costs:
On-Demand Capacity Pricing
| Operation | Standard Table Class | Standard-IA Table Class |
|---|---|---|
| Write Request Units (WRUs) | $1.25 per million | $1.56 per million |
| Read Request Units (RRUs) | $0.25 per million | $0.31 per million |
Provisioned Capacity Pricing
| Resource | Hourly Rate |
|---|---|
| Write Capacity Unit (WCU) | $0.00065 per WCU-hour |
| Read Capacity Unit (RCU) | $0.00013 per RCU-hour |
Storage Pricing
| Table Class | Price per GB-month |
|---|---|
| Standard | $0.25 |
| Standard-IA | $0.10 |
Note: Prices vary by region. AWS regions outside the US typically cost 10-25% more. Always check the AWS pricing page for your specific region.
Capacity Modes: The First Big Decision
DynamoDB offers two capacity modes, and this choice fundamentally shapes your costs.
On-Demand Mode
How it works: You pay per request. No capacity planning required. DynamoDB automatically scales to handle your traffic.
[Image: On-Demand Workload Pattern]
Best for:
- Unpredictable or variable workloads
- New applications where traffic patterns are unknown
- Spiky traffic with long idle periods
- Teams that prioritize simplicity over optimization
Trade-off: On-demand is typically more expensive per request than provisioned capacity, but you never pay for unused capacity.
Provisioned Mode
How it works: You specify the number of read and write capacity units (RCUs/WCUs) per second. You pay for what you provision, whether you use it or not.
[Image: Provisioned Capacity Workload Pattern]
Best for:
- Predictable, steady-state workloads
- Cost-conscious teams willing to manage capacity
- Applications where you can forecast traffic accurately
Trade-off: Lower per-request cost, but you need to monitor and adjust capacity. Over-provisioning wastes money; under-provisioning causes throttling.
Pro tip: Provisioned mode supports auto-scaling, which adjusts capacity based on utilization. This gives you some of the flexibility of on-demand with better economics.
[Image: Auto Scaling Configuration]
Database Savings Plans: The Discount Layer
AWS introduced Database Savings Plans as a commitment-based discount option. Here's what you need to know:
| Capacity Mode | Potential Savings |
|---|---|
| On-Demand | Up to ~18% |
| Provisioned | Up to ~12% |
How it works: You commit to a consistent amount of usage (measured in dollars per hour) for a 1-year term. In return, you get discounted rates on your DynamoDB usage.
Key consideration: Savings Plans offer flexibility across services, making them attractive for organizations with variable usage patterns. For extremely stable workloads, Reserved Capacity may offer deeper discounts—but with less flexibility.
What Actually Drives Your DynamoDB Bill
Here's where most teams get tripped up. DynamoDB pricing has multiple components, and understanding each one helps you optimize effectively.
1. Request Volume (Primary Cost Driver)
This is almost always your biggest cost. Reads and writes are charged per request, with pricing varying by:
- Capacity mode (on-demand vs. provisioned)
- Consistency model (eventually consistent reads cost half as much as strongly consistent)
- Transaction usage (transactional operations consume more capacity)
2. Data Storage
You pay for the total storage used by your tables and indexes. This includes:
- Base table data
- Global Secondary Index (GSI) data
- Local Secondary Index (LSI) data
Storage is charged per GB-month. While often smaller than request costs, storage adds up with large datasets.
3. Item Size and Structure
This is subtle but important:
- Reads: Charged in 4 KB increments. A 5 KB item costs the same as an 8 KB item.
- Writes: Charged in 1 KB increments. Keeping items small directly reduces costs.
4. Secondary Indexes
Global Secondary Indexes (GSIs) are powerful but expensive:
- Every write to the base table replicates to GSIs
- GSI storage is billed separately
- More indexes = multiplied write costs
[Image: GSI Base Table Structure]
[Image: GSI Index Structure]
5. Consistency Model
- Eventually consistent reads: Default, costs 50% of strongly consistent
- Strongly consistent reads: Guaranteed latest data, costs 2x eventually consistent
6. Transactions
DynamoDB transactions (TransactWriteItems, TransactGetItems) provide atomicity but consume more capacity than standard operations. Use them only when you truly need ACID guarantees.
7. Optional Features
These add costs but may be worth it:
- DynamoDB Streams: Pay per read request
- Point-in-time Recovery (PITR): Continuous backups
- On-demand Backups: Manual snapshots
- Global Tables: Multi-region replication
- DAX (DynamoDB Accelerator): In-memory caching layer
[Image: DynamoDB Streams and Lambda]
8 Strategies to Reduce Your DynamoDB Costs
Here's how to optimize without sacrificing performance.
1. Right-size Your Items
Keep items under size thresholds:
- For writes: Stay under 1 KB when possible
- For reads: Consider whether 4 KB boundaries affect your access patterns
Small items = lower costs. It's that simple.
2. Be Strategic with GSIs
Create Global Secondary Indexes only for critical access patterns. Each GSI:
- Multiplies your write costs
- Adds to storage costs
- Increases operational complexity
Ask yourself: Can this query be handled differently? Sometimes a scan with a filter is cheaper than maintaining another index.
[Image: Sparse Index Behavior]
3. Use Queries, Not Scans
Scans read every item in a table. Queries target specific partitions. The cost difference can be massive:
- Scan: Consumes RCUs for every item in the table
- Query: Consumes RCUs only for items matching your partition key
Design your data model to support queries over scans.
4. Embrace Eventual Consistency
If your application can tolerate slightly stale data (and most can), use eventually consistent reads. You'll cut read costs in half.
Use cases where eventual consistency works fine:
- Dashboard displays
- Product catalogs
- User profiles
- Session data
5. Reserve Transactions for True ACID Needs
Transactions cost more than standard operations. Use them only when you need atomicity across multiple items—like financial transfers or inventory updates.
6. Use Standard-IA for Cold Data
DynamoDB offers a Standard-Infrequent Access (Standard-IA) table class. It's cheaper for storage but slightly more expensive for requests. Ideal for:
- Archival data
- Compliance logs
- Infrequently accessed records
7. Clean Up Unused Resources
This sounds obvious, but we've seen it save thousands:
- Delete unused tables
- Remove orphaned indexes
- Disable PITR and backups on development tables
- Review and prune old GSIs
8. Implement Cost Allocation Tags
Tagging won't reduce costs directly, but it enables accountability. When teams see their DynamoDB costs attributed to their services, behavior changes.
How CloudYali Helps You Optimize DynamoDB Costs
At CloudYali, we believe cost visibility is the foundation of cost optimization. Our platform helps you:
- Identify idle and underutilized DynamoDB tables before they drain your budget
- Track cost trends across all your DynamoDB resources with clear visualizations
- Set up intelligent alerts when DynamoDB spending spikes unexpectedly
- Allocate costs accurately to teams, projects, and environments with tagging governance
- Discover savings opportunities through automated recommendations
The reality is that most DynamoDB cost variance comes from request volume, data shape, and index design—not from choosing the wrong region or missing a minor feature. CloudYali gives you the visibility to understand where your money goes and the insights to reduce waste.
Example Cost Calculation
Let's walk through a real-world example to see how costs add up.
Scenario: E-commerce product catalog
- 50 GB of data
- 10 million reads per month (eventually consistent)
- 1 million writes per month
- 2 Global Secondary Indexes
- Standard table class, On-Demand mode
Monthly Cost Breakdown:
| Component | Calculation | Cost |
|---|---|---|
| Storage | 50 GB x $0.25 | $12.50 |
| Reads | 10M x $0.25/million x 0.5 (eventually consistent) | $1.25 |
| Writes | 1M x $1.25/million | $1.25 |
| GSI Writes | 1M x 2 indexes x $1.25/million | $2.50 |
| GSI Storage | ~30 GB x $0.25 (estimated) | $7.50 |
| **Total** | **~$25/month** |
Now compare that to provisioned capacity with similar usage:
- 1 WCU handles ~2.6M writes/month (1 write/second x 86,400 seconds x 30 days)
- 1 RCU handles ~2.6M eventually consistent reads/month
Provisioned Alternative:
| Component | Calculation | Cost |
|---|---|---|
| Storage | 50 GB x $0.25 | $12.50 |
| Write Capacity | 1 WCU x $0.00065 x 730 hours | $0.47 |
| Read Capacity | 4 RCUs x $0.00013 x 730 hours | $0.38 |
| GSI Capacity | Similar overhead | ~$1.00 |
| **Total** | **~$14.35/month** |
The provisioned approach saves ~43% in this steady-state scenario. But if traffic is variable, on-demand protects you from throttling without over-provisioning.
DynamoDB vs. Other Storage Options
A quick comparison to help you choose the right tool:
| Use Case | Best Option |
|---|---|
| Key-value lookups, low latency | DynamoDB |
| Large file storage | S3 |
| Complex relational queries | RDS or Aurora |
| Time-series data | Timestream |
| Graph relationships | Neptune |
DynamoDB excels at fast, predictable key-based access. If you're forcing it into relational query patterns, you might be paying more than necessary.
Frequently Asked Questions
How do I estimate my DynamoDB costs?
Start with these inputs:
- Expected read and write request volumes
- Average item size
- Number of secondary indexes
- Consistency requirements
- Storage needs
AWS offers a pricing calculator, but real-world usage often differs. We recommend starting with on-demand mode to measure actual patterns, then optimizing from there.
Should I use on-demand or provisioned capacity?
- Choose on-demand if: Traffic is unpredictable, you're just starting, or you prioritize simplicity
- Choose provisioned if: Traffic is steady and predictable, you want lower per-request costs, you're willing to manage capacity
How much can Database Savings Plans save?
Up to ~18% for on-demand usage and ~12% for provisioned capacity. The actual savings depend on your commitment amount and usage patterns.
What's the biggest DynamoDB cost mistake teams make?
Over-indexing. We consistently see teams create GSIs "just in case" and forget about them. Each unused index costs money on every write operation.
How do I know if my DynamoDB tables are over-provisioned?
Look at your consumed capacity vs. provisioned capacity in CloudWatch. If utilization is consistently below 20-30%, you're likely over-provisioned. CloudYali can surface these insights automatically.
Ready to Take Control of Your DynamoDB Costs?
DynamoDB pricing doesn't have to be a mystery. With the right visibility and optimization strategies, you can run high-performance applications without budget surprises.
[See how CloudYali can help you optimize your AWS costs](https://cloudyali.io)
Have questions about DynamoDB pricing or cloud cost optimization? We'd love to hear from you.
Related Articles
AWS European Sovereign Cloud: What You Need to Know About Costs Before You Migrate
If you're considering AWS's new European Sovereign Cloud, the marketing materials aren't telling you the whole story about costs.
AWS Database Savings Plans: The Complete 2026 Guide
Save up to 35% on AWS database costs with Database Savings Plans. This guide covers eligible services, discount rates, limitations, and when to use them over Reserved Instances.
The Engineer's Guide to AWS Cost Optimization: 30+ Strategies to Cut Your Cloud Bill by 15-60%
You know that feeling when you open the AWS billing console and think, "Wait, we're spending how much?" You're not alone. I've seen it countless times—teams building incredible products while their...