About
Every tool here is a view over one JSON parser, written from scratch rather than wrapped around JSON.parse. That decision is the reason the site exists.
Why write a parser
Wrapping the built-in parser is the obvious thing to do, and almost every online JSON tool does it. It gives you validation for free. It also gives you three problems that cannot be fixed from the outside.
The errors are useless. A built-in parser reports one problem and stops. It gives you a message written for a compiler, no suggestion of what to do, and in several runtimes no line number. A developer with a broken payload needs the exact character, what was expected there, and the fix. Getting that means owning the scan.
It rewrites your data. Parse 12345678901234567890 and stringify it back and you get 12345678901234567000. Nothing warns you. A formatter built that way has changed your payload before it printed anything, and for an ID or a monetary value that is a serious bug that looks like nothing at all. Our formatter re-emits the source text of every number, so it cannot happen. The full explanation is here.
It cannot help with input that is nearly JSON. Trailing commas, single quotes, Python literals, comments, a no-break space pasted out of a chat client. To fix those and explain what changed, you have to detect them precisely, which again means owning the scan.
What that bought
- Errors with a line, a column, a highlighted range, what was expected, and a fix.
- Every error in a document reported at once, rather than one per attempt.
- Numbers that survive formatting exactly as you pasted them.
- Duplicate keys reported with the position of both.
- Invisible characters named precisely. A no-break space is reported as a no-break space at line 4, column 12, rather than as an unexpected token.
- A repair mode that fixes near-JSON and lists every change it made, with the judgement calls separated from the safe ones.
- An iterative parser, so nesting depth is limited by memory rather than by the call stack.
Privacy is a technical decision here, not a marketing one
In November 2025, two of the largest online JSON formatters leaked more than 80,000 saved pastes, roughly 5 GB accumulated over five years. The exposed data included Active Directory credentials, cloud access keys, personal access tokens and banking records belonging to government, healthcare and aerospace organisations.
The instructive detail is not the breach. It is that one of those sites tells you, on its homepage, that your data is validated in the browser, while its file-upload button posts your file to a server. Both statements were true about different features, and nobody reading the page could tell which was which.
So this site does not ask you to trust a sentence. Every page is served with a connect-src allowlist naming one destination, the analytics endpoint that counts page views. There is no upload endpoint, no load-from-URL feature, no saved links, no accounts and no advertising, because each of those would need an exception wide enough to carry your payload. Here is how to verify all of it yourself.
How it is built
- Static pages, built with Astro. No server-side rendering and no API.
- The parser, formatter, repair engine, CSV writer, XML parser, diff and JSONPath engine are all written for this site, and covered by a test suite that runs on every build.
- CodeMirror 6 for the editor, lazy-loaded behind a plain textarea that works on its own. Monaco would have been roughly 5 MB.
- js-yaml is the one third-party runtime dependency, loaded only on the two YAML pages. YAML 1.2 is large enough that a partial implementation would accept documents and quietly produce wrong values, which is the failure mode this site exists to avoid.
- All parsing and formatting runs in a Web Worker, so a 10 MB document does not freeze the tab.
- Fonts are self-hosted and subset. Nothing is fetched from a CDN.
Corrections
The site's argument is that it is careful about correctness, which means errors here matter more than they would elsewhere. Every error message quoted on this site was produced by running the parser rather than recalled: V8 strings from Node v24.15.0 and Python strings from CPython 3.14.3. Firefox and Safari strings are deliberately absent because we could not execute and verify them.
If you find something wrong, tell us and it will be fixed and recorded on the changelog.
Who maintains it
This section is deliberately blank rather than filled with a plausible-sounding name. Research for this site found a competitor whose article markup credits an author called "Roronoa Zoro", job title "Infrastructure Engineer", who is a fictional character from a manga series. Inventing a person to satisfy a trust signal is worse than having no signal at all, so there is nothing here until there is something true to put in it.