Convert JSON string
to JSON object.
Auto-detect depth.
Paste an escaped JSON string, a double-encoded JSON value or a JSON string wrapped in quotes. The converter unescapes, parses and pretty-prints the result automatically — no setup needed.
"{\"name\":\"Alice\"}",
a double-encoded value, or a raw JSON string without outer quotes.
What is an escaped JSON string?
Understanding the three types of input this tool handles.
// Input — a string with backslash escapes:
"{\"id\":1,\"name\":\"Alice\"}"
// Output — parsed JSON object:
{
"id": 1,
"name": "Alice"
}
// Input — JSON.stringify called twice:
"\"{\\\"id\\\":1,\\\"name\\\":\\\"Alice\\\"}\""
// Output — fully unwrapped object:
{
"id": 1,
"name": "Alice"
}
// Input — a field whose value is a JSON string:
{"data": "{\"id\":1,\"name\":\"Alice\"}"}
// Output with inner strings parsed:
{
"data": {"id": 1, "name": "Alice"}
}
// Input — unicode escape sequences:
{"name":"\u0041\u006C\u0069\u0063\u0065"}
// Output — decoded characters:
{
"name": "Alice"
}
Why does JSON get double-encoded?
The most common causes of escaped or double-encoded JSON.
Double JSON.stringify()
The most common cause. A developer calls JSON.stringify() on a value that is already a JSON string — producing a string representation of a string. Common in Express.js when res.json() is called with an already-serialised string.
JSON stored as TEXT in a database
When JSON is stored in a database column typed as TEXT or VARCHAR (rather than JSON/JSONB), reading it back produces a string. If the application then serialises that string again when building the API response, the JSON ends up double-encoded.
Message queues and event streams
Kafka, AWS SQS and Azure Service Bus messages are strings. When a JSON payload is placed into a queue and then embedded in another JSON envelope for the API response, the inner payload becomes a double-encoded JSON string.
Legacy APIs and webhooks
Some older APIs and webhook payloads return JSON serialised as a string value within a wrapper object — e.g. {"payload": "{...}"}. This was a common pattern before JSON became ubiquitous as a native type.
JSON string to JSON online: fix broken strings from logs, chats and Python
Strings copied from logs, chat exports or Python output are often not valid JSON: single quotes, trailing commas, comments, unquoted keys or Python literals such as None, True and False. Instead of failing, this JSON string to JSON converter repairs them automatically and shows a notice so you know the input was changed. Integers longer than 15 digits (64-bit IDs) are kept exact instead of being rounded.
Once you have the object, explore it in the JSON Viewer, minify it with the JSON Minifier, or turn it back into an escaped string with JSON to JSON String.
Related JSON tools
All utilities & encoding tools
Unescaped in
your browser. No upload.
The entire parsing runs in JavaScript locally using the browser's native JSON.parse() — the fastest and most standards-compliant JSON parser available. Your data is never transmitted to any server.
Auto-detect mode tries up to 5 unwrap passes — stopping as soon as the result is a non-string JSON value. This handles single-encoded, double-encoded and triple-encoded strings without any configuration.
