dynobase-icon
Dynobase

DynamoDB Reserved Words: Checker and the Complete List

Rafal Wilinski

Written by Rafal Wilinski

Last updated: September 19th, 2026

Still using AWS console to work with DynamoDB? 🙈

Time to 10x your DynamoDB productivity with Dynobase [learn more]

DynamoDB reserves 573 words that you cannot use as attribute names inside an expression. Write name = :n or timestamp BETWEEN :a AND :b and the request fails with ValidationException: Invalid KeyConditionExpression: Attribute name is a reserved keyword. The fix is a placeholder, and the checker below writes it for you.

Check your attribute names

Paste attribute names, one per line, or paste the whole expression. Placeholders you already use (#name, :value), string literals and function names are ignored, and nested paths such as order.status are checked one segment at a time, which is how DynamoDB reads them. The list is not case-sensitive, so status, Status and STATUS are all reserved. In a plain list, a name with a hyphen, a space or non-ASCII letters is flagged too, because an expression cannot spell it without a placeholder whether or not it is reserved.

Eight reserved words double as keywords of the expression grammar: AND, OR, NOT, BETWEEN, IN, SET, ADD and DELETE. REMOVE is a keyword too, though it is not on the reserved list, and the checker treats it the same way. In a pasted expression these words are read as keywords unless they sit next to a comparison or arithmetic operator, a dot or a comma, inside brackets, in front of IN or BETWEEN, or right after BETWEEN, ADD, DELETE or REMOVE. So SET count = :v flags only count, while set = :v, attribute_exists(set) and REMOVE set flag set. In a plain list of names, one per line or comma-separated, every entry is checked as a name, including these.

Reserved: "name", "data", "timestamp". DynamoDB rejects these as attribute names in an expression. Use the placeholders below instead.
ExpressionAttributeNames
{
  "#name": "name",
  "#data": "data",
  "#timestamp": "timestamp"
}
Expression with placeholders
#name = :n AND #status = :s AND size(#data) > :z AND #timestamp BETWEEN :from AND :to

How the placeholders work

An expression attribute name is an alias that starts with #. You declare it in ExpressionAttributeNames and use the alias in the expression instead of the real name:

The alias can be anything made of letters, digits and underscores. Most codebases use the attribute's own name with a # in front, which is what the checker generates. Using placeholders for every attribute, reserved or not, is a common habit because it also covers names with dots, dashes or spaces, which expressions cannot carry directly either.

If you hit the error in an UpdateExpression or FilterExpression, the same fix applies; the error page for attribute name is a reserved keyword walks through a full before-and-after.

Two of the words are misspelled, and the misspellings are what the list reserves

AWS's published list contains FLATTERN and LOGED, and every SDK and checker that follows the published list, including this one, reserves those spellings. FLATTEN and LOGGED are not on the list. An earlier version of this page "corrected" the two words, which would have flagged the wrong ones. The list below matches AWS character for character. If you use either spelling as an attribute name, alias it anyway; a placeholder costs nothing and removes the question.

The complete list of DynamoDB reserved words

All 573, in the order AWS publishes them.

  • ABORT
  • ABSOLUTE
  • ACTION
  • ADD
  • AFTER
  • AGENT
  • AGGREGATE
  • ALL
  • ALLOCATE
  • ALTER
  • ANALYZE
  • AND
  • ANY
  • ARCHIVE
  • ARE
  • ARRAY
  • AS
  • ASC
  • ASCII
  • ASENSITIVE
  • ASSERTION
  • ASYMMETRIC
  • AT
  • ATOMIC
  • ATTACH
  • ATTRIBUTE
  • AUTH
  • AUTHORIZATION
  • AUTHORIZE
  • AUTO
  • AVG
  • BACK
  • BACKUP
  • BASE
  • BATCH
  • BEFORE
  • BEGIN
  • BETWEEN
  • BIGINT
  • BINARY
  • BIT
  • BLOB
  • BLOCK
  • BOOLEAN
  • BOTH
  • BREADTH
  • BUCKET
  • BULK
  • BY
  • BYTE
  • CALL
  • CALLED
  • CALLING
  • CAPACITY
  • CASCADE
  • CASCADED
  • CASE
  • CAST
  • CATALOG
  • CHAR
  • CHARACTER
  • CHECK
  • CLASS
  • CLOB
  • CLOSE
  • CLUSTER
  • CLUSTERED
  • CLUSTERING
  • CLUSTERS
  • COALESCE
  • COLLATE
  • COLLATION
  • COLLECTION
  • COLUMN
  • COLUMNS
  • COMBINE
  • COMMENT
  • COMMIT
  • COMPACT
  • COMPILE
  • COMPRESS
  • CONDITION
  • CONFLICT
  • CONNECT
  • CONNECTION
  • CONSISTENCY
  • CONSISTENT
  • CONSTRAINT
  • CONSTRAINTS
  • CONSTRUCTOR
  • CONSUMED
  • CONTINUE
  • CONVERT
  • COPY
  • CORRESPONDING
  • COUNT
  • COUNTER
  • CREATE
  • CROSS
  • CUBE
  • CURRENT
  • CURSOR
  • CYCLE
  • DATA
  • DATABASE
  • DATE
  • DATETIME
  • DAY
  • DEALLOCATE
  • DEC
  • DECIMAL
  • DECLARE
  • DEFAULT
  • DEFERRABLE
  • DEFERRED
  • DEFINE
  • DEFINED
  • DEFINITION
  • DELETE
  • DELIMITED
  • DEPTH
  • DEREF
  • DESC
  • DESCRIBE
  • DESCRIPTOR
  • DETACH
  • DETERMINISTIC
  • DIAGNOSTICS
  • DIRECTORIES
  • DISABLE
  • DISCONNECT
  • DISTINCT
  • DISTRIBUTE
  • DO
  • DOMAIN
  • DOUBLE
  • DROP
  • DUMP
  • DURATION
  • DYNAMIC
  • EACH
  • ELEMENT
  • ELSE
  • ELSEIF
  • EMPTY
  • ENABLE
  • END
  • EQUAL
  • EQUALS
  • ERROR
  • ESCAPE
  • ESCAPED
  • EVAL
  • EVALUATE
  • EXCEEDED
  • EXCEPT
  • EXCEPTION
  • EXCEPTIONS
  • EXCLUSIVE
  • EXEC
  • EXECUTE
  • EXISTS
  • EXIT
  • EXPLAIN
  • EXPLODE
  • EXPORT
  • EXPRESSION
  • EXTENDED
  • EXTERNAL
  • EXTRACT
  • FAIL
  • FALSE
  • FAMILY
  • FETCH
  • FIELDS
  • FILE
  • FILTER
  • FILTERING
  • FINAL
  • FINISH
  • FIRST
  • FIXED
  • FLATTERN
  • FLOAT
  • FOR
  • FORCE
  • FOREIGN
  • FORMAT
  • FORWARD
  • FOUND
  • FREE
  • FROM
  • FULL
  • FUNCTION
  • FUNCTIONS
  • GENERAL
  • GENERATE
  • GET
  • GLOB
  • GLOBAL
  • GO
  • GOTO
  • GRANT
  • GREATER
  • GROUP
  • GROUPING
  • HANDLER
  • HASH
  • HAVE
  • HAVING
  • HEAP
  • HIDDEN
  • HOLD
  • HOUR
  • IDENTIFIED
  • IDENTITY
  • IF
  • IGNORE
  • IMMEDIATE
  • IMPORT
  • IN
  • INCLUDING
  • INCLUSIVE
  • INCREMENT
  • INCREMENTAL
  • INDEX
  • INDEXED
  • INDEXES
  • INDICATOR
  • INFINITE
  • INITIALLY
  • INLINE
  • INNER
  • INNTER
  • INOUT
  • INPUT
  • INSENSITIVE
  • INSERT
  • INSTEAD
  • INT
  • INTEGER
  • INTERSECT
  • INTERVAL
  • INTO
  • INVALIDATE
  • IS
  • ISOLATION
  • ITEM
  • ITEMS
  • ITERATE
  • JOIN
  • KEY
  • KEYS
  • LAG
  • LANGUAGE
  • LARGE
  • LAST
  • LATERAL
  • LEAD
  • LEADING
  • LEAVE
  • LEFT
  • LENGTH
  • LESS
  • LEVEL
  • LIKE
  • LIMIT
  • LIMITED
  • LINES
  • LIST
  • LOAD
  • LOCAL
  • LOCALTIME
  • LOCALTIMESTAMP
  • LOCATION
  • LOCATOR
  • LOCK
  • LOCKS
  • LOG
  • LOGED
  • LONG
  • LOOP
  • LOWER
  • MAP
  • MATCH
  • MATERIALIZED
  • MAX
  • MAXLEN
  • MEMBER
  • MERGE
  • METHOD
  • METRICS
  • MIN
  • MINUS
  • MINUTE
  • MISSING
  • MOD
  • MODE
  • MODIFIES
  • MODIFY
  • MODULE
  • MONTH
  • MULTI
  • MULTISET
  • NAME
  • NAMES
  • NATIONAL
  • NATURAL
  • NCHAR
  • NCLOB
  • NEW
  • NEXT
  • NO
  • NONE
  • NOT
  • NULL
  • NULLIF
  • NUMBER
  • NUMERIC
  • OBJECT
  • OF
  • OFFLINE
  • OFFSET
  • OLD
  • ON
  • ONLINE
  • ONLY
  • OPAQUE
  • OPEN
  • OPERATOR
  • OPTION
  • OR
  • ORDER
  • ORDINALITY
  • OTHER
  • OTHERS
  • OUT
  • OUTER
  • OUTPUT
  • OVER
  • OVERLAPS
  • OVERRIDE
  • OWNER
  • PAD
  • PARALLEL
  • PARAMETER
  • PARAMETERS
  • PARTIAL
  • PARTITION
  • PARTITIONED
  • PARTITIONS
  • PATH
  • PERCENT
  • PERCENTILE
  • PERMISSION
  • PERMISSIONS
  • PIPE
  • PIPELINED
  • PLAN
  • POOL
  • POSITION
  • PRECISION
  • PREPARE
  • PRESERVE
  • PRIMARY
  • PRIOR
  • PRIVATE
  • PRIVILEGES
  • PROCEDURE
  • PROCESSED
  • PROJECT
  • PROJECTION
  • PROPERTY
  • PROVISIONING
  • PUBLIC
  • PUT
  • QUERY
  • QUIT
  • QUORUM
  • RAISE
  • RANDOM
  • RANGE
  • RANK
  • RAW
  • READ
  • READS
  • REAL
  • REBUILD
  • RECORD
  • RECURSIVE
  • REDUCE
  • REF
  • REFERENCE
  • REFERENCES
  • REFERENCING
  • REGEXP
  • REGION
  • REINDEX
  • RELATIVE
  • RELEASE
  • REMAINDER
  • RENAME
  • REPEAT
  • REPLACE
  • REQUEST
  • RESET
  • RESIGNAL
  • RESOURCE
  • RESPONSE
  • RESTORE
  • RESTRICT
  • RESULT
  • RETURN
  • RETURNING
  • RETURNS
  • REVERSE
  • REVOKE
  • RIGHT
  • ROLE
  • ROLES
  • ROLLBACK
  • ROLLUP
  • ROUTINE
  • ROW
  • ROWS
  • RULE
  • RULES
  • SAMPLE
  • SATISFIES
  • SAVE
  • SAVEPOINT
  • SCAN
  • SCHEMA
  • SCOPE
  • SCROLL
  • SEARCH
  • SECOND
  • SECTION
  • SEGMENT
  • SEGMENTS
  • SELECT
  • SELF
  • SEMI
  • SENSITIVE
  • SEPARATE
  • SEQUENCE
  • SERIALIZABLE
  • SESSION
  • SET
  • SETS
  • SHARD
  • SHARE
  • SHARED
  • SHORT
  • SHOW
  • SIGNAL
  • SIMILAR
  • SIZE
  • SKEWED
  • SMALLINT
  • SNAPSHOT
  • SOME
  • SOURCE
  • SPACE
  • SPACES
  • SPARSE
  • SPECIFIC
  • SPECIFICTYPE
  • SPLIT
  • SQL
  • SQLCODE
  • SQLERROR
  • SQLEXCEPTION
  • SQLSTATE
  • SQLWARNING
  • START
  • STATE
  • STATIC
  • STATUS
  • STORAGE
  • STORE
  • STORED
  • STREAM
  • STRING
  • STRUCT
  • STYLE
  • SUB
  • SUBMULTISET
  • SUBPARTITION
  • SUBSTRING
  • SUBTYPE
  • SUM
  • SUPER
  • SYMMETRIC
  • SYNONYM
  • SYSTEM
  • TABLE
  • TABLESAMPLE
  • TEMP
  • TEMPORARY
  • TERMINATED
  • TEXT
  • THAN
  • THEN
  • THROUGHPUT
  • TIME
  • TIMESTAMP
  • TIMEZONE
  • TINYINT
  • TO
  • TOKEN
  • TOTAL
  • TOUCH
  • TRAILING
  • TRANSACTION
  • TRANSFORM
  • TRANSLATE
  • TRANSLATION
  • TREAT
  • TRIGGER
  • TRIM
  • TRUE
  • TRUNCATE
  • TTL
  • TUPLE
  • TYPE
  • UNDER
  • UNDO
  • UNION
  • UNIQUE
  • UNIT
  • UNKNOWN
  • UNLOGGED
  • UNNEST
  • UNPROCESSED
  • UNSIGNED
  • UNTIL
  • UPDATE
  • UPPER
  • URL
  • USAGE
  • USE
  • USER
  • USERS
  • USING
  • UUID
  • VACUUM
  • VALUE
  • VALUED
  • VALUES
  • VARCHAR
  • VARIABLE
  • VARIANCE
  • VARINT
  • VARYING
  • VIEW
  • VIEWS
  • VIRTUAL
  • VOID
  • WAIT
  • WHEN
  • WHENEVER
  • WHERE
  • WHILE
  • WINDOW
  • WITH
  • WITHIN
  • WITHOUT
  • WORK
  • WRAPPED
  • WRITE
  • YEAR
  • ZONE

Dynobase is a Professional GUI Client for DynamoDB

Start your 7-day free trial today

Product Features

Download
/
Pricing
/
Member Portal
/
Privacy
/
EULA
/
Twitter
© 2026 Dynobase