Free tool

DynamoDB Reserved Words Checker

Paste your attribute names to see which collide with DynamoDB’s reserved words, and copy an ExpressionAttributeNames map that aliases them safely.

Attribute names

Enter one attribute name per line (commas and spaces also work). Each is checked, case-insensitively, against the full DynamoDB reserved-words list.

4 of 6 names are reserved and must be aliased.
  • name#nameReserved
  • status#statusReserved
  • timestamp#timestampReserved
  • userIdOK
  • count#countReserved
  • emailOK
ExpressionAttributeNames
{
  "#name": "name",
  "#status": "status",
  "#timestamp": "timestamp",
  "#count": "count"
}

Reference each reserved name by its # alias in your expression, and pass this map as ExpressionAttributeNames.

Why reserved words matter

DynamoDB keeps a long list of reserved keywords that it will not accept as a bare attribute name inside an expression. Everyday names — name, status, size, count, timestamp, year — are on it. Reference one directly and the request fails with a ValidationException, usually at runtime rather than in review.

The fix is an expression attribute name: a # placeholder that stands in for the real name, paired with an ExpressionAttributeNames map. This checker matches your names case-insensitively against the full list and builds that map for the reserved ones automatically, so you can paste it straight into a GetItem, Query, Update, or Delete request.

Aliasing is a small habit that avoids a whole class of errors — expression attribute names and values explains the placeholders in depth, and the Expression Builder aliases every name for you as you build.

Frequently asked questions

What are DynamoDB reserved words?

DynamoDB reserves a large list of keywords — around 573 — that cannot be used directly as attribute names inside an expression. Names like name, status, timestamp, size, and count are all reserved. If you reference one directly in a projection, filter, condition, or update expression, DynamoDB returns a ValidationException with an “Attribute name is a reserved keyword” message.

How do I use a reserved word as an attribute name?

Alias it with an expression attribute name — a placeholder that starts with # and maps to the real name. For example, reference #name in your expression and pass ExpressionAttributeNames of { "#name": "name" }. This tool generates that map for every reserved name you enter, ready to paste into your request.

Is the reserved-words list case-sensitive?

No. DynamoDB’s reserved-words list is not case-sensitive, so Name, name, and NAME are all treated as the reserved word NAME. This checker matches case-insensitively, exactly like DynamoDB.

Do I have to alias every attribute name?

Only the reserved ones require an alias, but many teams alias every name as a habit so they never hit the error and the expressions read consistently. Aliasing a non-reserved name is always safe. This tool flags exactly which of your names are reserved so you can decide.

Work with DynamoDB without the Console

DynoTable is a fast desktop client for DynamoDB — browse tables, run SQL-style queries, and edit items locally.