“Invalid JSON” is useless when the input is five megabytes long. JsonHippo's tokenizer and parser are written by hand, character by character, so when a document fails it says where: Line 123982, col 9: expected ',' or '}' but found string "zip" (in $.people[4321].address) — and one click puts the caret on the bad character. It also recognises the JSON that APIs and logs hand back as an escaped string and unescapes it on paste, filters its tree by key, value, regex or path, and compares two documents by content rather than by line. Launch it right here in the browser, or install it: the desktop app is the same page in its own window, and it makes no network request at all. Inspired by jsonviewer.stack.hu, which its author has used for years.
macOS · Windows · Linux · Web · Electron · Vanilla JS · jQuery · GPL-3.0
What it does
Pinpoint errors for JSON that will not parse — line, column, what was expected and the path to it — plus smart paste of escaped JSON, a tree you can filter, and a diff that ignores order. In your browser or on your desktop; nothing is uploaded.
A hand-written parser gives the line, column, expected and found, and the JSON path — for every one of seventeen error codes. A file missing its last } points at the brace that never closed, not at the end of the file.
Escaped JSON — "{\"id\":7}" — is unescaped on paste, as many times as it was escaped, with an Undo. Ordinary JSON with escaped quotes inside its strings is never touched.
Narrow the tree to the keys or values that match — plain text, regex, or a path like $.items[*].name — with each match's ancestors kept so you can see where it sits.
Members match by key and array elements by content, so key order and array order are never differences — a record that moved and changed one field shows as one changed field. Both panes are editable, and Reorder lays one side out in the other's order.
The Schema tab infers a JSON Schema from a representative document: properties in the order they appear, required where a key is always present, ready to copy and validate against elsewhere.
Duplicate keys, empty keys, and numbers that change when read as a 64-bit float — 12345678901234567890 becomes 12345678901234567000 — are legal JSON and almost always mistakes, so each is flagged with where it is.
A 5 MB document parses in under a tenth of a second; the tree draws only what is open; the filter searches every node, drawn or not.
Format and minify are written from the parse tree, so 12345678901234567890 keeps its digits and keys keep their order, duplicates included and flagged.
No server, no account, no tracking — in the browser or the desktop app, which runs offline and opens links in your own browser. Files are read locally and never uploaded.
Downloads
On the desktop, JsonHippo comes inside ViewHippo, the herd's desktop app: one download that opens JSON, YAML and Markdown files, each in the viewer made for it. ViewHippo — · free to download and use. No account required.
Every ViewHippo build is published on GitHub Releases, where you will also find the release notes and every previous version. Prefer to build it yourself? The source is right there.
Where to go next
The herd page is the introduction. These are the places the project actually lives.