DynamoDB Capacity & Item Size Calculator
Last updated: September 19th, 2026
| Attribute | Name plus value | Share of item |
|---|---|---|
| customerShippingAddressLine1 | 41 bytes | 73% |
| pk | 8 bytes | 14% |
| active | 7 bytes | 13% |
customerShippingAddressLine1 is 28 bytes before its value.Check a DynamoDB item's size against the 400 KB limit
A DynamoDB item can be at most 400 KB, which is 409,600 bytes counted as the UTF-8 length of every attribute name plus the size of every value, nested maps and lists included. Paste an item above to get its size, a verdict against the limit, and which attributes take the bytes. No API returns an item's byte count: ReturnConsumedCapacity gives you the write units, which is the size rounded up to the next 1 KB, and for the exact bytes you compute it the way DynamoDB does. One caveat on the arithmetic: a JSON array is sized as a List, with its own few bytes of overhead, while a DynamoDB set has none, so a set-heavy item is a little smaller in practice than the number above.
Go over and PutItem or UpdateItem fails with ValidationException: Item size has exceeded the maximum allowed size. The limit cannot be increased. The usual ways round it are to compress the offending attribute, to move it to S3 and store its key in the item, or to split a wide item into an item collection under the same partition key. Item collections have their own cap, 10 GB, and only when the table has a local secondary index.
Long attribute names are the quiet cost. A name like customerShippingAddressLine1 spends 28 bytes on every item that carries it, and on every read and write of that item. Short names on hot, narrow items are worth the readability trade; the breakdown above shows when a name outweighs its value.
How capacity is calculated from item size
DynamoDB bills reads and writes in capacity units, and the number you consume is driven by item size rounded up to a fixed boundary. Provisioned tables call them read and write capacity units, measured per second; on-demand tables call them read and write request units, billed per request. The arithmetic is identical either way.
Reads round up to the next 4 KB. A strongly consistent read of an item up to 4 KB costs one read unit, an eventually consistent read costs half a unit, and a transactional read costs two. So an 8 KB item costs 2 units strongly consistent, 1 eventually consistent, or 4 transactional.
Writes round up to the next 1 KB. A write of an item up to 1 KB costs one write unit, and a transactional write costs two.
Two things catch people out. Batch operations round each item individually before summing, so a BatchGetItem of a 1.5 KB and a 6.5 KB item costs 12 KB of reads, not 8 KB. And UpdateItem is billed on the larger of the item before and after the update, even when you only touch one attribute.
Once you know the units, the DynamoDB pricing calculator turns them into a monthly cost.
Frequently Asked Questions
What is the maximum size of an item in DynamoDB?
Can DynamoDB store BLOB data?
How does DynamoDB calculate item size?
- Zero is 1 byte. Any other number is 1 byte per two significant digits, plus 1, plus another byte if it is negative, so 2 to 21 bytes.
- Binary and BinarySets are using 1 byte per 1 byte, obviously.
- Boolean is also 1 byte.
- Null is 1 byte too.
- Lists and maps cost 3 bytes, plus the size of each element, plus 1 byte per element.
How much data can DynamoDB store?
The 10 GB figure you may have seen is narrower than it is often quoted. It is the item collection size limit, meaning the total size of all items sharing one partition key value, and it applies only to tables that have a local secondary index. AWS is explicit that it does not apply to tables without an LSI, nor to global secondary indexes. If you do have an LSI and a collection passes 10 GB, AWS says writes to that partition key might then fail with ItemCollectionSizeLimitExceededException.
Does the type of read change how much capacity it costs?
- An eventually consistent read costs half as much as a strongly consistent one.
- A transactional read costs twice as much.