Why I stopped using online JSON formatters (and built my own)

Published: (December 28, 2025 at 06:40 AM EST)
2 min read
Source: Dev.to

Source: Dev.to

The “Oh No” Moment 😱

You are debugging a production issue at 2 AM. You grab a massive blob of minified JSON from the logs, look for a “JSON Prettifier” on Google, and paste the data into the first result that pops up.
It formats perfectly. You find the bug. Great.

But then, 5 seconds later, the realization hits you:

“Wait… did I just send a customer’s PII (Personally Identifiable Information) or a production API key to some random server in the middle of nowhere?”

Most free online tools are black boxes. You don’t know if they are logging your input, storing it in a database, or training an AI model on it.

The Solution: Go Local (or Client‑Side) 🛡️

  • Works 100 % offline (so data never leaves your machine).
  • Includes a Diff Checker (comparing 2,000 lines of JSON by eye is impossible).
  • Decodes JWTs safely (without sending Auth Tokens to the cloud).

Introducing JSON AIO (All‑In‑One) 🚀

Try it here:
(It’s hosted on AWS CloudFront, but once the page loads you can disconnect your internet and it still works perfectly.)

Under the Hood 🛠️

  • Engine: @monaco-editor/react for a familiar VS Code feel (minimap, syntax highlighting, error detection).
  • Architecture: Zero backend. Everything uses standard Web APIs (JSON.parse, navigator.clipboard, localStorage).
  • Styling: Tailwind CSS with a fully functional Dark/Light mode toggle.
  • PWA: Service Worker added so you can install it to your dock and use it like a native app.

Key Features

“Privacy Shield” JWT Decoder

Most JWT tools require a backend to decode tokens. This tool uses the jwt-decode library directly in the browser. Paste your production tokens safely—they never touch a network request.

Diff Checker

Integrated Monaco Diff Editor shows side‑by‑side comparisons of JSON files, highlighting changes in green/red just like Git.

“Smart” Converter

Got a log file where the JSON is stringified inside a string? ("{\"id\": 1...}") The Converter tab handles un‑escaping and re‑formatting automatically.

Open Source & Free

Give it a spin and let me know what you think!

Live Tool:

Back to Blog

Related posts

Read more »