What is a stringified JSON value?
A stringified JSON value contains a JSON document encoded inside a JSON string. Its surrounding quotes and backslashes are string syntax rather than part of the decoded object or array.
Stringified JSON often appears in API responses, Webhook bodies, logs, database text fields, fixtures, and payloads that contain JSON inside another field. This converter removes those encoding layers and returns readable strict JSON.
How to convert a string to JSON
- Paste an escaped JSON string into the input editor, open a local
.jsonor.txtfile, or select Example. - Open Settings when you need 4-space, Tab, or minified output, want to stop after one layer, or need word wrapping.
- Select Convert to JSON, or press Cmd + Enter on macOS and Ctrl + Enter on Windows or Linux.
- Review the decoded-layer status, then copy the result or download
decoded.json.
Repeated decoding is enabled by default and stops after three layers. The result status states how many stringification layers were removed.
String to JSON example
Input:
"{\"event\":\"order.created\",\"order\":{\"id\":1024,\"total\":49.99}}"
Output:
{
"event": "order.created",
"order": {
"id": 1024,
"total": 49.99
}
}
The converter parses the outer JSON string, validates the decoded text as strict JSON, and formats it with two spaces by default.
Single and repeated stringification
A normal JSON document:
{"name":"Ada"}
After one stringification layer:
"{\"name\":\"Ada\"}"
After another layer:
"\"{\\\"name\\\":\\\"Ada\\\"}\""
Repeated encoding is sometimes called double-encoded or double-stringified JSON. This tool can remove up to three layers automatically. The limit prevents an open-ended sequence of parses and keeps the performed operation visible.
String to JSON vs text to JSON
String to JSON expects text that already contains JSON syntax but has been encoded as a JSON string. It does not infer keys or structure from prose, lists, or text such as Name: Ada.
If the input is ordinary valid JSON rather than a stringified value, the converter formats it and reports Already valid JSON. This covers pasted API data without pretending that arbitrary text can be converted into structured data.
Escaped JSON vs invalid JSON
This is a valid escaped JSON string:
"{\"name\":\"Ada\"}"
This is neither strict JSON nor a valid escaped JSON string:
{'name':'Ada'}
The converter distinguishes an invalid outer value from a string that decodes successfully but contains invalid JSON. It preserves the original input and does not create output after either failure. Use JSON Repair when the source contains single quotes, trailing commas, unquoted keys, or other non-standard syntax.
String to JSON and related tools
Use JSON to String to create an escaped JSON string. Use JSON Formatter when the input is already normal JSON and you only need indentation controls. Use JSON Parser when you need node paths, types, and source positions rather than decoded text.
String to JSON FAQ
Why do I need to parse JSON twice?
The first parse removes the outer string encoding. The decoded text must then be parsed as JSON to confirm that it contains a valid document. Repeatedly stringified input can require another bounded decoding step.
Can the decoded result be an array or primitive?
Yes. The decoded JSON may be an object, array, string, number, boolean, or null. An outer string such as "hello" does not contain an encoded JSON document and is reported instead of being guessed into a structure.
What happens after three encoded layers?
The converter stops, preserves the remaining valid JSON string, and reports that the limit was reached. It does not continue parsing indefinitely.
Does decoding change large numbers or duplicate properties?
The final JSON document is formatted from its original tokens rather than rebuilt as JavaScript values. This preserves large integers, number spelling, duplicate properties, property order, and string escapes.
Can this tool remove backslashes without outer quotes?
Only when the complete input is valid JSON. Blindly removing backslashes can corrupt strings, paths, and control characters, so the converter validates each layer instead.