Paste JSON — it is validated as you type. Beautify, minify, or explore it as a collapsible tree with type highlighting, run a JSONPath query, or diff it against a second document.
{{ d.key }} at {{ d.path }} (line {{ d.line }}, column {{ d.col }}) — only the last value is kept, earlier ones are discarded... recursive descent, index/key unions, slices, and [?(@.a<b)] filters. Not JMESPath — see About.{{ queryResult.error }}
{{ diffState.error }}
Showing the first {{ DIFF_RENDER_LIMIT }} of {{ diffResult.length }} differences.
Validates as you type and points at the exact line and column of syntax errors with gutter line indicators and tooltips. Once valid, switch between a syntax-highlighted formatted view, a minified view, or an expandable tree with type-colored values.
Uses a custom parser instead of the browser's built-in JSON.parse, so numbers keep their exact source text through format and minify — a large integer like 9007199254740993 is never silently rounded — and a duplicate object key is reported with its path and position instead of being dropped without a trace.
Query runs a JSONPath expression (dot/bracket access, wildcards, .. recursive descent, [0,2]/['a','b'] unions, [1:3:2] slices, and [?(@.price<10)] filters with &&/||) directly against the same lossless tree, so a matched value re-serializes with its exact source text too. This is JSONPath, not JMESPath — the two are different grammars with different function libraries, and half-implementing a second query language alongside a real one seemed worse than being explicit about supporting one.
Diff compares the Input above against a second pasted document, key by key and index by index (not a general sequence alignment) — a number is only reported as changed if its numeric value actually differs, so 1 and 1.0 are correctly treated as equal even though their source text isn't identical.
Tree view has Expand all / Collapse all for large documents; individual branches still toggle normally with a click after that.
Parsing happens entirely in your browser. Nothing you paste is uploaded.