Unescape · parse · format — instantly

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.

Your data never leaves your browser
Auto-detects encoding depth
Handles escaped & double-encoded JSON
Exact parse error location
Always free
JSON String to JSON Converter   100% client-side
Paste any of these: an escaped JSON string "{\"name\":\"Alice\"}", a double-encoded value, or a raw JSON string without outer quotes.
Try an example:
Input — paste your JSON string here
  JSON ready

      
What is an escaped JSON string?

Understanding the three types of input this tool handles.

Escaped JSON string
// Input — a string with backslash escapes:
"{\"id\":1,\"name\":\"Alice\"}"
 
// Output — parsed JSON object:
{
  "id": 1,
  "name": "Alice"
}
Double-encoded JSON
// Input — JSON.stringify called twice:
"\"{\\\"id\\\":1,\\\"name\\\":\\\"Alice\\\"}\""
 
// Output — fully unwrapped object:
{
  "id": 1,
  "name": "Alice"
}
String value in JSON
// Input — a field whose value is a JSON string:
{"data": "{\"id\":1,\"name\":\"Alice\"}"}
 
// Output with inner strings parsed:
{
  "data": {"id": 1, "name": "Alice"}
}
Unicode-escaped JSON
// 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.

Related JSON tools
Popular searches
json string to json json string to json object convert json string to json unescape json string online json string to object online parse json string online double encoded json json stringify to json parse escaped json to json json string decoder online json string to json converter unescape json online free

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.

Native JSON.parse()
Uses the browser's built-in parser — no external library, no dependencies. The fastest and most compliant option.
Auto-detect encoding depth
Iteratively unwraps string layers until a non-string JSON value is reached — handles 1, 2 or 3 layers of encoding transparently.
Exact error location
Parse errors include the character position from the browser's native parser — easier to debug than a generic "invalid JSON" message.
47 tools, always free
No file size limits, no watermarks, no account. Funded by non-intrusive display advertising only.
Frequently asked questions
Common questions about parsing and unescaping JSON strings.
How do I convert a JSON string to a JSON object?
Paste your escaped JSON string into the converter above and click Parse. The tool automatically detects whether the input is a single-layer escaped string, a double-encoded string or a raw JSON string, unescapes it and outputs formatted JSON.
What is the difference between a JSON string and a JSON object?
A JSON object is a data structure like {"name": "Alice"}. A JSON string is a JavaScript string that contains serialised JSON — like "{\"name\":\"Alice\"}" — the result of calling JSON.stringify() on the object. This tool converts the string back to the object.
Why does my JSON have backslashes before every quote?
Backslashes before quotes (\") are escape characters that appear when JSON is serialised as a string value — typically by calling JSON.stringify() on an already-serialised JSON object. This tool removes the backslashes and parses the result back to a proper JSON object.
How do I fix double-encoded JSON from an API?
Paste the double-encoded value here and click Parse — auto-detect mode will unwrap it automatically. In your code, call JSON.parse() twice: const parsed = JSON.parse(JSON.parse(responseString)). The root cause is usually a server calling JSON.stringify() on a value that is already a JSON string.
Is my JSON data safe when using this tool?
Yes. The conversion runs entirely in your browser. Your JSON is never uploaded to any server. Open the Network inspector during conversion and you will see zero outbound data requests.
Go up