JSON String Unescape / Escape

Paste a JSON string literal — the escaped, quoted form you get when JSON has been serialized twice — and get the real, formatted JSON back out (converting a JSON string to a JSON object). This is different from the JSON Formatter, which expects a bare document rather than an escaped string; feeding this tool a bare object gets rejected on purpose, so the two stay unambiguous about which one to use.

Frequently asked questions

Is this the same as "converting a JSON string to a JSON object"?
Yes — that's exactly what Unescape mode does. "JSON string to JSON" and "unescape JSON string" describe the same operation: taking the quoted, escaped form and parsing it back into the real object.
How is this different from the JSON Formatter?
The JSON Formatter expects a bare JSON document, like {"a":1}. This tool expects a JSON string literal — a quoted, escaped string like "{\"a\":1}", the shape you get when JSON has been serialized twice (e.g. a log line or an API field that itself contains a JSON blob as text). Pasting a bare object here gets rejected with a message pointing you to the JSON Formatter instead.
Why does Unescape sometimes show plain text instead of formatted JSON?
After unwrapping the outer string, this tool checks whether the result is itself JSON. If it is, you get real, pretty-printed JSON back. If it isn't — the string was just escaped plain text, not JSON wrapped in a string — you get the plain unescaped text, with a note above the output telling you which case you hit.
What does Escape mode actually do?
It wraps your input in quotes and escapes the characters that aren't valid inside a JSON string — quotes, backslashes, newlines, and control characters — producing a string you could paste as a value inside another JSON payload.
Is my data uploaded anywhere?
No. Escaping and unescaping happen locally in your browser tab — nothing is sent to a server.