Free tool

DynamoDB JSON Converter

Convert plain JSON to DynamoDB’s attribute-value format and back — instantly, in your browser. Nothing is sent to a server.

Plain JSON
{
  "pk": "USER#1234",
  "sk": "PROFILE",
  "name": "Ada Lovelace",
  "age": 36,
  "scores": [10, 20, 30],
  "active": true
}

String Sets, Number Sets, Binary Sets, and Binary values can’t be expressed in plain JSON: a JSON array always converts to a List (L). Those types only appear when converting DynamoDB JSON back to plain JSON.

DynamoDB JSON
Loading converter…

Plain JSON vs. DynamoDB JSON

DynamoDB’s low-level wire format tags every value with its type. Where your application sees { "age": 36 }, the API sees { "age": { "N": "36" } }. That attribute-value shape is what the AWS CLI prints, what appears in CloudWatch logs and DynamoDB Streams records, and what you paste into a low-level PutItem call. The SDK’s document client hides it, so the two formats constantly cross paths during debugging.

This converter uses the same marshalling library the AWS SDK uses, so the output matches exactly what the SDK would produce. It runs entirely in your browser — the library is loaded on demand and your data never leaves the page — which makes it safe to paste real items from a production table.

Two edge cases are handled explicitly. Numbers above JavaScript’s safe integer range are preserved as strings rather than silently rounded, and malformed attribute values — a number type carrying non-numeric text, for example — raise a clear error instead of being quietly coerced. The goal is a faithful conversion you can trust, not a lossy approximation.

New to the type tags? DynamoDB data types walks through every attribute-value type with examples.

Frequently asked questions

What is DynamoDB JSON?

DynamoDB JSON (the attribute-value format) wraps every value in a one-key object that names its type: a string is { "S": "abc" }, a number is { "N": "5" }, a list is { "L": [...] }, a map is { "M": {...} }. The low-level DynamoDB API and tools like the AWS CLI use this shape, while the SDK document client and most application code use plain JSON. This converter translates between the two.

Why does my large number become a string?

DynamoDB stores numbers as a 38-digit decimal type with no precision limit, but JavaScript loses precision above 2^53. To stay lossless, a number larger than that safe range is carried as a string when converting DynamoDB JSON to plain JSON. Pasting such a number as a bare plain-JSON number instead raises an error, because it would already have lost precision before this tool ever saw it.

Can I convert Sets and Binary values?

Going from DynamoDB JSON to plain JSON, yes — a String/Number/Binary Set becomes an array and a Binary value becomes a base64 string. The reverse direction can’t infer them: plain JSON has no Set type, so an array always converts to a List (L). Author Sets and Binary directly in the DynamoDB JSON side.

Does my data leave the browser?

No. The conversion runs entirely client-side using the official AWS marshalling library, loaded on demand in your browser. Nothing you paste is sent to a server.

Work with DynamoDB without the Console

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