How much data can DynamoDB store?

Effectively unlimited. A DynamoDB table has no maximum size and scales horizontally to any number of items and bytes. The real limits are per-item (400 KB) and, only on tables that have a local secondary index, 10 GB per item collection (one partition-key value). Tables without an LSI have no partition-size cap.

Table size: no ceiling

DynamoDB spreads data across many physical partitions automatically as it grows. There is no configured maximum table size — capacity and storage scale as you write.

The limits that do exist

  • 400 KB — maximum size of a single item, measured in binary units and counting attribute names as well as values (where that boundary falls exactly).
  • 10 GB — maximum size of one item collection (all items sharing a partition-key value) only when the table has a local secondary index (LSI). Without an LSI, this cap does not apply.

The size you can measure is not the size you pay for

The obvious way to answer "how much am I storing?" is DescribeTable, which returns TableSizeBytes. That number is smaller than your bill, by design. From AWS's billing guidance: "DynamoDB measures the size of your billable data by adding the raw byte size of your data plus a per-item storage overhead that depends on the features you have enabled", and "Storage usage values in the CUR will be higher compared with the storage values when using DescribeTable, because DescribeTable does not include the per-item storage overhead."

That matches what the engine reports. A table holding 40 items of about 3 KB each came back as TableSizeBytes: 120700, which is the raw content and nothing else. The overhead is invisible from the API and shows up only in the Cost and Usage Report.

So the gap between the two grows with item count, not item size. Ten million tiny items pay that overhead ten million times; the same bytes packed into a hundred thousand larger items pay it a hundred thousand times. If your bill runs ahead of what TableSizeBytes suggests, a wide table of small rows is the usual reason.

What "no ceiling" costs

Storage is the forgiving part. A 1 TB table in us-east-1 is 1,024 GB at $0.25 per GB-month: $256 a month, or $249.75 once the 25 GB free allowance applies.

Item size is the unforgiving part, because writes round up per 1 KB. The same one million items cost wildly different amounts to write, at $0.625 per million on-demand write request units:

Item sizeWrite units each1M writes (us-east-1, on-demand)
1 KB1$0.63
100 KB100$62.50
400 KB400$250.00

So the quantity you design around is not the table's size but the item's. Push large blobs to S3 and keep the pointer in DynamoDB, and avoid unbounded item collections under a hot key. Check your own figures in the pricing calculator.

Go deeper

Read DynamoDB item collections and how DynamoDB partition keys work. Download DynoTable to explore large tables efficiently.

References

Last verified 2026-07-13 against the official AWS documentation linked above; quotas and prices re-checked 2026-07-28.

The TableSizeBytes figure was measured 2026-07-28 against DynamoDB Local 3.3.0 (amazon/dynamodb-local:latest) via @aws-sdk/client-dynamodb 3.1095.0. DynamoDB Local is not the service, and no per-item overhead constant is inferred from it.

Work with DynamoDB without the Console

A fast DynamoDB desktop client that runs the real SQL DynamoDB can’t — JOINs, GROUP BY, aggregates — with visual editing and an AI agent on your own Bedrock keys.

Free 30-day trial, no credit card — then the Free plan with no time limit.