Uttir

JSON Diff

Compare two JSON values semantically. Ignores key order, highlights added/removed/changed paths, and works with nested objects and arrays.

JSON Diff — A line-based diff treats JSON as text. It shows every line that changed, but it cannot tell you that a single key was renamed, that key order shifted, or that one array element was added.

Both JSON values are parsed and compared in your browser. Nothing is uploaded — the diff never leaves your device.

Was JSON Diff useful?

What is json diff?

A line-based diff treats JSON as text. It shows every line that changed, but it cannot tell you that a single key was renamed, that key order shifted, or that one array element was added.

A semantic JSON diff compares the parsed structure. It walks both values, finds the added / removed / changed paths, and shows them in a table. Key order in objects is ignored by default (toggle off if order matters in your case).

How to use it

  1. Paste the two JSON values

    Drop the "before" JSON in the left panel, the "after" in the right. Both can be objects, arrays, or any JSON value — they do not have to be the same type.

  2. Read the table

    Each row is a path (e.g. users[3].email). Green rows are added, red rows removed, amber rows changed. Toggle "Show unchanged" to see what stayed the same.

  3. Copy the patch

    The "Copy patch" button puts a one-line-per-op summary in your clipboard — useful for sharing in chat or in a commit message.

Examples

Detecting a renamed key indirectly

Two objects that differ in one nested value.

Before: {"user":{"name":"Ada","age":30}}
After:  {"user":{"name":"Ada","age":31}}

Result: 1 changed: user.age 30 → 31

Array element added

An element was added to the end of a tags array.

Before: ["eng","lead"]
After:  ["eng","lead","reviewer"]

Result: 1 added: [2] "reviewer"

Frequently asked questions

Related tools

Last reviewed: 2026-08-21