What is the difference between JSON.parse and unescape-then-parse?
JSON.parse expects a JSON document — an object, array, number, boolean, null, or string literal. If the document is a JSON string whose value is itself a serialised JSON object (a "double-stringified" payload), JSON.parse returns the inner string and you have to call JSON.parse again. This tool detects that case automatically: if the first parse yields a string, it parses a second time.
How do I handle escaped Unicode like \u00e9 or \u2728?
JSON.parse handles \u escapes natively — once your text is valid JSON, \u00e9 becomes é and \u2728 becomes the sparkles emoji. The tool relies on the browser's native parser, so any code point that JSON.parse accepts is decoded correctly, including surrogate pairs for emoji outside the Basic Multilingual Plane.
Why does my API return a JSON-wrapped JSON string?
A common pattern: the response is application/json, but a field like "payload" contains a stringified JSON object instead of a nested object. This usually happens when a backend stores the field as TEXT in a database and re-serialises it on the way out, or when a message bus carries opaque payloads. Paste the field value here to see the real shape.
Can the tool handle escaped newlines and tabs?
Yes. \n in the source becomes a real line break, \t becomes a tab, \r becomes a carriage return, and \\ becomes a single backslash. Once the string is unescaped, the JSON parser pretty-prints with consistent 2-space indentation regardless of how the source was formatted.
What if the string has mixed escapes — some \" and some \\\"?
That happens with triple-stringified payloads (rare but real, common in some logging pipelines). Run the converter once to peel off the outer layer; then paste the result back in and run again. Each pass removes one level of escaping until you reach the original JSON.
Is this the same thing as JSON validation?
No — but it is a related step. JSON validation checks whether a document is well-formed JSON. This tool first un-stringifies a wrapped string, then parses the inner content. If you only need to check well-formedness of plain JSON, the JSON Validator is faster.
Will my data be uploaded to a server?
No. Everything runs in JavaScript inside your browser — JSON.parse is a built-in, no library needed. Tokens, IDs, and user data in your payload never leave your machine. Open DevTools → Network and confirm zero requests are made on Convert.
How is this different from a JSON formatter?
A JSON formatter pretty-prints already-valid JSON. This tool first removes a layer of string escaping (handling backslash-quoted JSON, double-serialised payloads, and \u escapes) and then formats the result. Use it when JSON.parse on the raw input gives you a string instead of an object.