JSON Diff

Compare two documents field by field. Key order is ignored, so reordered responses stay clean.

Runs in your browser — nothing is uploaded

3 differences
PathOriginalChanged
order.customer.viptruefalse
order.items.0.qty23
order.total5171

About the JSON Diff

Paste the original on the left and the changed version on the right. Both are flattened to dotted paths and compared value by value, so the result tells you which field changed rather than which line changed.

This is deliberately not a text diff. JSON does not define key order and most servers do not guarantee it, so a payload whose keys came back in a different sequence would light up a line-based diff from top to bottom while being semantically identical. Here it produces no differences at all.

Array elements are compared by index, which means inserting one item near the front reports every later position as changed. If you are comparing lists that get reordered, sort both sides by a stable key first.

FAQ

JSON Diff — frequently asked

How is this different from a text diff?

A text diff compares lines. This compares structure: both documents are parsed and flattened to dotted paths, then values are matched by path. Different key ordering, different indentation and different whitespace produce no differences, because none of them change the data. That is what you want when comparing API responses.

Why does changing one array item mark several as changed?

Array elements are matched by index, not by identity. Insert an item at position 0 and everything after it shifts, so every later index now holds a different value. When the lists you compare can be reordered, sort both by a stable key (an id, for example) before diffing.

Can I compare two files instead of pasting?

Paste the contents into each pane — the comparison runs on text. Opening the files in an editor and copying across is usually faster than uploading, and it keeps the data on your machine.

What does an empty result mean?

That the two documents are structurally identical: same paths, same values. They may still differ as raw text — different indentation, key order or trailing newline — but nothing that affects the parsed data.

How are added and removed fields shown?

A path present only on the right is an addition and shows an empty original cell; present only on the left is a removal and shows an empty changed cell. Paths present on both sides with different values are changes, with both values side by side.

Is my data uploaded for comparison?

No. Both documents are parsed and compared in your browser. Nothing is transmitted, which matters when you are diffing production responses against staging.

    Report an issue