Skip to main content

JSON Compare

Compare two JSON values online for free and see exactly what changed — added, removed, and changed fields, with key order and formatting ignored.

Your files are processed locally in your browser and are not uploaded to our servers.

How to use JSON Compare

  1. 1

    Paste the original JSON on the left and the changed version on the right.

  2. 2

    Click "Compare."

  3. 3

    Review the side-by-side result — removed lines are highlighted on the left, added lines on the right.

Common uses

  • Checking what actually changed between two versions of an API response
  • Comparing a config file before and after an edit, without false positives from reformatting
  • Verifying two JSON payloads represent the same data even if they were generated differently

Supported formats and limitations

Accepts JSON, up to one file at a time.

  • This compares JSON *values*, not the original text — two documents that differ only in key order, indentation, or whitespace are correctly reported as identical, unlike a plain text diff.
  • Arrays are compared by index (position), not by matching similar items — inserting an item at the start of an array shifts every later index and shows up as changes at each shifted position, not as a single "item inserted" entry.
  • A value that changed type (a number became an object, for instance) is reported as one changed field rather than a breakdown of the new object's contents, since comparing the internals of two unrelated shapes isn't meaningful.

Frequently asked questions

No — {"a":1,"b":2} and {"b":2,"a":1} are reported as identical, since they represent the same data. A plain text diff would incorrectly flag these as different.

Text Diff Checker compares line by line, so reformatted (but semantically identical) JSON shows as changed. JSON Compare parses both sides and compares the actual data, so only real differences show up.

By position — item 0 is compared to item 0, item 1 to item 1, and so on. Inserting an item partway through an array will show as changes at every position after the insertion, not as a single clean "inserted" entry.

You'll see a clear error naming which side (original or changed) failed to parse, rather than a confusing or silent failure.

No. Both parsing and comparison happen entirely in your browser.

Related tools