STRUCTURED DATA · LOCAL PROCESSING
JSON Compare
Find what changed between two JSON documents. Review exact values and paths, then keep the complete comparison report.
Whitespace and object-key order are ignored. Arrays compare by index. Large numbers keep their exact decimal value. Your JSON stays on this device.
Before
0 UTF-16 text units.
No file selected. JSON or text files up to 8,000,000 bytes.
The worker reads the selected file locally. Its contents are not inserted into the editor.
After
0 UTF-16 text units.
No file selected. JSON or text files up to 8,000,000 bytes.
The worker reads the selected file locally. Its contents are not inserted into the editor.
Compare when both sides are ready, or press Ctrl/Cmd+Enter. Up to 2,000,000 text units and 200,000 values per source. Nothing is uploaded or saved automatically.
Add Before and After JSON to begin.
Comparison result
The JSON report includes every change. Before and After values are stored as exact JSON source strings to preserve numeric spelling. This is a comparison report, not an executable patch.
Changes preview
| Change | JSON Pointer | Before | After | Details |
|---|
No semantic differences. Formatting, object-key order and equivalent decimal spellings do not count as changes.
Change details
A blank JSON Pointer in the report identifies the document root. ~1 means / and ~0 means ~ inside a key.
This detail view uses the bounded preview. Download the full report for complete paths and values.
Copy the full comparison
Clipboard access was unavailable. The complete report is selected below; use your device copy action.
Comparison rules, limits and privacy
Objects compare by decoded key names, independently of property order. Arrays compare matching indices; insertions can appear as several changed values. Added or removed containers are one change containing the complete subtree. Duplicate decoded property names are rejected, with the original line and column, because choosing one silently could hide data.
Numbers compare as exact decimal values, including values beyond JavaScript's safe-integer range. Equivalent spellings such as 1 and 1.0 compare equally, as do zero and negative zero. Strings compare decoded UTF-16 units; Unicode normalization is not applied. The full report retains original subtree text as strings.
Each source supports 4,096 nesting levels and 200,000 values. A comparison supports up to 100,000 changes and 8,000,000 report text units. If a limit is exceeded there is no partial report. At most 100 rows, 500 path units and 200 value units per side are shown in the preview.
Processing runs in a worker: loading allows 15 seconds, and an operation allows 10 seconds. Cancel, edit, clear or swap to stop pending work. Copy fallback selects the complete report only up to 1,000,000 text units; larger reports remain available through Download. Source text and files are not stored or sent to a server.
See the JSON standard and JSON Pointer standard for the underlying formats.