Original

Changed

  • 100% Free
  • No Sign-Up
  • No Credit Card
  • No Free Trial
  • No Pro Tier
  • No Watermarks

Nothing is uploaded. Just open it and start.

See what actually changed between two JSON documents

Free, no sign-up. Paste two versions of a config file, an API response or a data export, and get a clear list of what was added, removed and changed — ignoring key order and formatting, with arrays of records matched by id. Export the difference as a JSON Patch. Everything runs in your browser.

Structural, not line-based

Every added, removed and changed value, listed by its path.

Order doesn't matter

Key order and formatting are ignored; arrays can be matched by id.

Side by side

Both documents with keys sorted, differences highlighted.

JSON Patch export

Copy or download the change as RFC 6902 operations.

Exact numbers

64-bit ids and huge numbers are compared digit for digit.

Private

Runs in your browser. Nothing you paste is uploaded.

Frequently asked questions

How is this different from a normal text diff?
A text diff compares lines, so reordered keys, different indentation or a reformatted file show up as changes even when the data is identical. JSON Diff parses both documents and compares the data itself: it reports each key or value that was added, removed or changed, with its path (like users[2].email), and ignores key order, whitespace and how numbers are written (1 and 1.0 are the same).
How are arrays compared?
By default, items that are objects with an id (id, _id, uuid, key, slug, code or name — or a key you choose in Options) are matched by that id wherever they sit, so a reordered list of records only reports real edits, shown as paths like owners[id=17].role. Arrays without such a key are compared by position. You can switch to strictly by position, or to Ignore order, which only reports items found in one list but not the other.
Can I ignore fields like timestamps?
Yes. In Options, list keys to ignore, separated by commas — for example updatedAt, etag, requestId. They are skipped wherever they appear in either document.
What is the JSON Patch tab?
It's the difference written as a JSON Patch (RFC 6902): a list of add, remove and replace operations that turns the original document into the changed one. Many APIs accept it (as application/json-patch+json), and patch libraries in every language can apply it. The patch always reproduces the changed document exactly, so it compares arrays by position and ignores nothing, whatever the options say.
Does it handle big numbers correctly?
Yes. Standard JavaScript rounds integers above 2^53, so a 64-bit id such as 9007199254740993 would silently become 9007199254740992 and two different ids could look the same. JSON Diff keeps every number exactly as written and compares big integers digit for digit.
Is my JSON uploaded?
No. Parsing and comparing happen entirely in your browser; nothing is sent anywhere. Both documents and your options are remembered in this browser only, so they're still there when you come back — press Clear to remove them.

Spotted a bug or have a suggestion?

Found something broken, have an idea, or just want to say thanks about any of our tools? Every message reaches a real person.