TL;DR: Paste JSON into the formatter I keep in the lab to prettify or minify it; when it won’t parse, it points to the exact line and column where it broke. It all runs in your browser, so internal payloads stay on your machine. Already at the terminal? python -m json.tool or jq do the format-and-validate part without a web page.

A JSON file that won’t parse is usually broken by one character. A trailing comma after the last item, a single quote where JSON wants a double, a key nobody quoted, and the parser rejects the whole payload. It happens most with the JSON you did not type yourself: a config file after a bad merge, an API response, a webhook body. The data is sitting right there on screen; the actual work is finding the one character that broke it.

The useful part is finding where it breaks

Prettifying JSON is table stakes. Add indentation and line breaks and a minified blob becomes readable; reverse it to pack a payload back down. Every formatter does this, including the one I keep in the lab.

What saves real time is what happens when the JSON is invalid. Paste a broken blob and it reports the line and column where parsing failed, with a hint about what it expected there. That is a lot faster than scanning a 400-line response by eye for one missing bracket. It also prints the nesting depth and key count, which on a big response tells you whether the field you want is even in there before you start hunting.

Everything happens in your browser. Nothing you paste leaves the page, so an internal API response or a config snippet with a token in it stays on your machine. It does stop at diagnosis: it locates and names the break, but it will not rewrite your JSON to fix it.

You don’t always need a browser for this

If you are already at the terminal, a web page is a detour. python -m json.tool formats and validates a file or piped output using the standard library, so there is nothing to install when you have Python. Give it a file with a trailing comma:

{
  "user": "alice",
  "roles": ["admin", "editor"],
}

and it points straight at the problem:

$ python -m json.tool config.json
Illegal trailing comma before end of object: line 3 column 31 (char 51)

jq . does the same and hands you a query language once the file parses. Editors format on demand too: in VS Code, Format Document reindents JSON in place.

Inside a workflow you already have open, the command line is quicker than opening a browser tab. Where the web version earns the click: a blob you pasted out of a log or a chat window, when you want the error located without first piping something sensitive through your shell history.

Reach for json.tool or jq when the file is already in front of you. Open a browser formatter when you have a broken blob pasted from somewhere and you want the exact line it died on.