What does the JSON Diff and Structural Comparison do?
Use this tool when you need a browser utility that compares parsed JSON values by object key and array index instead of comparing indentation. It accepts two valid JSON documents and returns path-based additions, removals, and changed values. Results are deterministic for the same input except where cryptographic randomness, current time, or a live provider response is part of the task.
Choose structural JSON diff or text diff?
Use JSON Diff when value types, keys, and array positions matter but formatting does not. Use Text Diff when whitespace, comments in a non-JSON format, or exact source lines are part of the change.
How do you use it?
- Paste valid JSON into Original JSON and Changed JSON, or load the sample pair.
- Choose Compare values and select Convert. Whitespace and property order do not create changes because both inputs are parsed first.
- Review each +, −, or ~ path, then copy or download the comparison.
Worked example
A changed scalar and an appended array item
Input
Original: {"version":1,"tags":["local"]}
Changed: {"version":2,"tags":["local","fast"]}Output
~ $.version: 1 → 2
+ $.tags[1] = "fast"The comparison follows parsed object keys and array indexes, so indentation changes alone produce no result.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| The output is empty and the page reports a JSON parse error. | One input contains invalid JSON such as a trailing comma or an unquoted key. | Validate both documents first and correct the reported syntax before comparing them. |
| A reordered array produces several changes. | Array positions are significant; the tool does not match moved objects by an ID field. | Sort arrays by a stable key before comparing when order should not matter. |
Important behavior of JSON Diff
Array order remains significant, so moved items appear as changes.
Standards and implementation references
- RFC 8259 — The JavaScript Object Notation (JSON) Data Interchange Format (opens in a new tab)Defines the JSON grammar accepted before values are compared.
Frequently asked questions about JSON Diff
Does the JSON Diff upload my input?
No. Processing runs in the current browser tab, and the page does not send tool input to a KitLumi processing endpoint.
What input does the JSON Diff accept?
It accepts two valid JSON documents. The workspace checks the input and reports malformed or unsupported values before it produces a result.
What does the JSON Diff produce?
It produces path-based additions, removals, and changed values. Copy and download controls appear when the output format supports them.
What limitation should I know?
Array order remains significant, so moved items appear as changes.
What changed?
Added Structural JSON comparison, JSON path output, Array index comparison, Local parsing, responsive controls, explicit runtime disclosure, and tested browser output.