JSON Diff Checker

Compare two JSON objects and see exactly what changed, path by path

Paste JSON into both boxes to see a structural diff

About this tool

The JSON Diff Checker compares two JSON objects structurally and shows exactly what was added, removed, or changed — path by path, using JSONPath-style notation like $.user.email or $.items[2].price. Unlike a line-by-line text diff, it understands JSON structure: keys in a different order are treated as identical, and only real content differences are reported. Use it to compare API responses before and after a change, verify a config file migration didn't silently alter values, or review what a deploy actually changed in a serialized data blob. Each difference is color-coded — green for additions, red for removals, yellow for changes — with the exact old and new values shown inline. Everything runs 100% in your browser. Your JSON never leaves your machine — no server calls, no logging.

When to use it

  • Comparing an API response before and after a backend change to catch unintended field changes
  • Verifying a config file or feature flag migration didn't alter values it shouldn't have
  • Reviewing what changed between two versions of a serialized state object during debugging
  • Checking that a refactor produces byte-for-byte equivalent JSON output regardless of key order

Tips

  • Key order never affects the result — only real value differences are reported, unlike a plain text diff.
  • Arrays are compared index by index, so inserting an item in the middle of an array will show every later item as 'changed' — this is a known limitation of positional array diffing.
  • The path shown for each difference (e.g. $.user.roles[1]) can be pasted directly into a JSONPath-aware tool to locate the value.

Frequently asked questions

How is this different from a regular text diff tool?

A text diff (like ToolNinja's Diff Checker) compares JSON as plain text line by line — so reformatting, reordering keys, or changing whitespace shows up as a difference even when the data is identical. The JSON Diff Checker parses both inputs and compares the actual data structure, so key order and formatting never produce false positives — only genuine content differences are reported.

Why does reordering array items show as many changes instead of one?

Arrays are compared by position (index 0 vs index 0, index 1 vs index 1, and so on), not by content matching. If you insert or remove an item in the middle of an array, every item after that position will appear as 'changed' even though most of them didn't really change — they just shifted position. This is standard behavior for positional diffing; a content-aware array diff would need to identify moved items, which this tool doesn't attempt.

What does the path notation like $.user.address[0].city mean?

It's JSONPath-style notation describing where in the JSON structure the difference occurs. $ is the root object, .user.address means the address property of the user object, and [0] means the first item in that array, followed by .city for the city property within it. It's the same notation used by JSONPath query tools.

Is my data uploaded anywhere when I use this tool?

No. Both JSON inputs are parsed and compared entirely in your browser using JavaScript. Nothing is sent to a server — this is safe to use with real API responses, even ones containing sensitive data.

Related tools

🥷 ToolNinja