JSON Structural Diff

A tool that compares two JSON documents, such as API responses or config files, by structure. Key order, whitespace, and indentation are ignored, and additions, removals, and value changes are listed with their paths and before/after values — all processed in your browser.

Your JSON is never sent to a server — the comparison runs entirely in your browser.
Differences

Enter JSON on both sides to see the structural differences here.

How to use

  1. Paste the original JSON on the left and the changed JSON on the right, or load files.
  2. Differences are calculated automatically and listed as Added, Removed, or Changed with their paths and values.
  3. If either side has a syntax error, the side and line number are shown.
  4. Use "Copy" to copy the list of differences as tab-separated text.

About this tool

A plain text diff reports many changes even when only key order or formatting differs. The JSON Structural Diff parses both documents and compares their values, so you see only meaningful changes.

Objects are compared by key and arrays by index. A missing key and null, or the number 1 and the string "1", are treated as different. Paths look like $.user.name, and keys containing dots or symbols are written as $["a.b"], so every location is unambiguous.

Matching array items by ID or detecting reordering is not supported yet. Your JSON is never sent to a server.

Compare {"count":1,"active":true} with {"active":true,"count":"1"}. The only finding is $.count changing from the number 1 to the string "1". Moving active to a different position produces no finding.

An empty object also differs from an absent key. When comparing API responses, changing timestamps and identifiers appear as ordinary differences, so focus first on paths relevant to the behavior under review. Viewing differences does not rewrite either input.

Frequently asked questions

What happens if only the key order differs?

It's reported as identical. Differences in whitespace, indentation, and line breaks are ignored too.

What if array items are reordered?

Arrays are compared by index, so a reorder shows up as value changes at each index. Matching items by ID may be added in the future.

Is my JSON sent to a server?

No. Parsing and comparison happen entirely in your browser.