Unstringify JSON

Turn an escaped JSON string back into JSON.

0 chars
0 words
0 lines
0 chars
0 words
0 lines

Unstringify JSON – Turn Escaped JSON Strings Back into JSON

Log files, databases, and message brokers are full of JSON that was turned into a string: one long line wrapped in quotes and littered with " escapes. Unstringify JSON reverses that. Paste the string and get clean, formatted JSON — even when it was stringified several times or contains more JSON strings inside.

What gets fixed

  • Outer double or single quotes are removed.
  • Escape sequences are decoded: " → ", \` → `, \n → line break, \u00e9 → é.
  • Multiply-encoded strings are unwrapped until real JSON appears.
  • Optionally, string fields that contain JSON are parsed in place, turning "ctx": "{"id":1}" into "ctx": {"id": 1}.
  • The result is pretty-printed with the indentation you choose, or minified.

Where escaped JSON comes from

  • Structured logging – many loggers serialize an object and then store it as a message string.
  • Queues and event buses – SQS, Kafka, and Pub/Sub payloads are often JSON strings wrapping other JSON.
  • Databases – JSON saved in text columns, sometimes encoded again by an ORM.
  • APIs – fields like metadata or body that carry a JSON document as a string.

Doing it in code

In JavaScript, JSON.parse(JSON.parse(text)) handles a double-encoded string; in Python, json.loads(json.loads(text)). This tool figures out how many layers there are for you.

Private by default

Log lines and queue messages often include customer data, IDs, or tokens. The unwrapping runs locally in your browser, so the content never leaves your machine.

To create a JSON string, use JSON Stringify. To explore the unwrapped data, paste it into the JSON Parser or JSON Viewer.

Frequently Asked Questions

It reverses JSON.stringify on a string: the surrounding quotes are removed, escapes like \" and \n are turned back into real characters, and the JSON inside is parsed and formatted.

Yes. The tool keeps unwrapping as long as the result is still a string that contains JSON (up to 10 levels), so double- and triple-encoded log entries come out as clean JSON.

Some payloads contain JSON strings inside otherwise normal JSON, for example a "ctx" field holding "{\"orderId\":42}". With this option on, such fields are parsed too, so the whole document becomes one readable tree.

Yes. Input like {\"a\":1} without outer quotes, or a JavaScript single-quoted literal, is detected and handled as well.