DevToolsForYou
Private by defaultRuns in your browser

JSON diff checker

Paste two JSON objects and instantly see every semantic difference: added keys, removed keys, and changed values at any depth with full paths.

Quick samplesUseful for testing
JSON Diff

About this tool

Comparing two JSON objects by eye is tedious and error-prone, especially when they are deeply nested or have dozens of keys. Pasting both into a generic text diff tool produces misleading results because key ordering, whitespace, and indentation affect line-by-line comparisons even when the data is logically identical. This tool takes a different approach: it parses both inputs as JSON and compares them structurally, key by key and element by element at every depth level. The result is a flat list of semantic changes — added keys, removed keys, and changed values — each annotated with a dot-notation path (for example user.address.city or items[2].price) so you can locate the change instantly in the original document. Type changes (such as a string becoming a number) are shown as value changes. Array comparisons are index-based. The summary line at the top shows total added, removed, and changed counts at a glance, and a copy button exports the full change list as plain text. Both inputs are validated before comparison — any JSON syntax error is reported immediately with a clear message so you can fix it before diffing.

No signup requiredRuns in your browserInstant results
How to use
  1. 1

    Paste your original JSON into the left panel.

  2. 2

    Paste the modified JSON into the right panel.

  3. 3

    Click Compare — the change list appears instantly.

  4. 4

    Each row shows the path, change type (added / removed / changed), and the old and new values.

  5. 5

    Use the Copy button to export the change list as plain text.

Why use this tool?
  • Compare API responses before and after a code change to verify the payload shape.

  • Diff two config files to find exactly what changed between environments.

  • Check that a migration preserved all expected fields in a transformed document.

  • Audit changes to a feature flag or settings object between deploys.

ExamplesInput → output

Key added

Input{"name":"Alice"} vs {"name":"Alice","role":"admin"}
Output1 added — role: "admin"

Nested value changed

Input{"user":{"age":30}} vs {"user":{"age":31}}
Output1 changed — user.age: 30 → 31
Common errorsAnd how to fix them

SyntaxError on the left / right side

Cause: One of the inputs is not valid JSON. Common culprits: trailing commas, single-quoted strings, unquoted keys, or comments.

Fix: Use the JSON Formatter tool on this site to validate and fix each input before comparing.

All keys show as added and removed instead of changed

Cause: The root values are of different types — for example one input is an array and the other is an object.

Fix: Make sure both inputs share the same root type (both objects or both arrays).

Frequently asked questionsCommon questions answered

These answers explain common json diff tasks, expected input formats, and edge cases so both visitors and search engines can understand what this tool does.

How is this different from a text diff tool?

A text diff compares line by line. JSON key ordering and indentation affect text diffs even when the data is identical. This tool parses both inputs and compares the data structure semantically, so reordered keys and reformatted whitespace don't produce false positives.

How are arrays compared?

Arrays are compared by index. Element 0 in the original is compared to element 0 in the modified version, and so on. If the arrays have different lengths, extra elements are shown as added or removed.

Are type changes detected?

Yes. If a value changes from one type to another — for example a string "30" becoming a number 30 — it is reported as a changed value with both the old and new values shown.

What path notation is used?

Object keys use dot notation (user.address.city). Array indices use bracket notation (items[2].price). Paths are absolute from the root of the document.