Skip to content
GigAI Tools

JSON Diff: Compare Two JSON Objects Online

Paste two JSON documents and see a true semantic diff: added, removed and changed values by path, with reordered keys and whitespace ignored. Structure-aware, color-coded and 100% client-side.

100% browser processingFree · no sign-up
Loading tool…

What is the json diff?

The JSON Diff compares two JSON documents by structure rather than text, ignoring reordered keys and whitespace. It reports added, removed and changed values by path, color-coded with counts, so a real data change never hides behind formatting. Free and 100% client-side, both documents stay in your browser.

The GigAI JSON Diff is a structural comparison tool for JSON that understands your data instead of just your bytes. Paste, drop or type an original document on the left and a new one on the right, and it parses both, walks them by path, and reports every leaf that was added, removed or changed, while values that merely moved to a different key order, or that differ only in indentation and whitespace, are correctly treated as equal. That is the core difference from a line-based text diff or a raw string compare: those flag a re-serialised or re-ordered payload as thousands of changes, while this tool shows you the handful that actually matter. You get a live summary with add / remove / change counts, a unified color-coded view keyed by dotted-and-bracketed paths (like `user.roles[2]` or `meta.tags.count`), and options to ignore object key order, ignore specific keys entirely (great for volatile fields like `updatedAt`, `id` or `_etag`), and treat whitespace-only string differences as equal. Everything runs locally with the browser's native JSON engine, so API responses, database rows, config snapshots and fixtures containing secrets or personal data are compared entirely on your machine and never uploaded, logged or seen by anyone.

Difficulty:
Easy
Typical time:
~15s
Processing:
100% browser processing

Last updated

How to use the json diff

  1. 1

    Add both JSON documents

    Paste, drop a .json file or type into the left (original) and right (changed) editors. Or load the built-in sample pair to see a diff instantly.

  2. 2

    Tune the comparison

    Optionally ignore object key order (on by default), ignore whitespace-only string changes, and list any keys to exclude, like id or updatedAt.

  3. 3

    Read the diff by path

    Scan the summary counts, then the unified list: green for added, red for removed, amber for changed, each labelled with its exact path and old → new values.

  4. 4

    Copy or share

    Copy the diff report to paste into a PR or ticket, or share a link that reopens the tool with both documents and your options pre-loaded.

What JSON Diff includes

  • Structural, not textual

    Both sides are parsed and compared by path, so a value that only moved to a different key position or was re-indented is reported as unchanged: only real differences surface.

  • Order-insensitive keys

    Object keys are matched by name, never by position. Two objects with the same fields in a different order compare as identical, exactly as JSON semantics say they should.

  • Ignore keys you don't care about

    Exclude volatile fields like updatedAt, id, timestamp or _etag from the comparison so noisy, always-changing values never bury the differences that matter.

  • Path-keyed unified view

    Every difference is labelled with its exact dotted/bracketed path (user.roles[2], meta.count) so you can locate a change in a deeply nested document instantly.

  • Live add / remove / change counts

    A summary strip updates as you type, tallying additions, removals and changes at a glance so you can confirm 'nothing changed' or quantify a drift in seconds.

  • 100% in your browser

    Comparison uses the browser's native JSON engine on your device. No payload, config or database row is ever uploaded, stored or logged: close the tab and it's gone.

Why use our json diff

Stop drowning in false diffs

A re-serialised or key-reordered API response looks like a total rewrite to a text diff. Structural comparison strips that noise and shows only the values that genuinely changed.

Nail down flaky test snapshots

When a snapshot test fails, ignore the volatile keys (ids, timestamps) and instantly see whether the payload actually regressed or just carried fresh throwaway fields.

Audit config and infra drift

Compare a known-good config against production to find exactly which settings drifted, by path, without eyeballing two walls of near-identical JSON.

Private by design

Because it runs locally, you can safely diff JSON containing tokens, PII or internal API shapes, none of it leaves your machine.

Built for the way you work

From quick one-off fixes to daily workflows, see how people put this tool to use.

  • Backend developer

    Diff two API responses

    Capture a response before and after a deploy, ignore volatile fields like requestId and timestamp, and see precisely which values the change actually altered.

  • QA / Test engineer

    Explain a snapshot failure

    When a JSON snapshot assertion fails on CI, drop both blobs in to find the real regression instead of scrolling a giant reordered text diff.

  • DevOps / SRE

    Catch config drift

    Compare a baseline Terraform, Kubernetes or app config export against the live one to pinpoint exactly which keys drifted in production.

  • Data engineer

    Validate a schema or export change

    Diff two exported records or schema documents to confirm a migration added only the intended fields and changed nothing it shouldn't have.

Supported formats

Accepts JSON and TXT, and produces Diff report (TXT), all processed locally in your browser.

Input formats
  • JSON
  • TXT
Output formats
  • Diff report (TXT)

Frequently asked questions

Common problems, solved

Hit a snag? Here are quick fixes for the issues people run into most.

  • Two documents I think are identical show as different.

    The difference is a real value change somewhere. Check the changed rows for the exact path and old → new values. If the only difference is trailing/leading whitespace inside strings, enable 'Ignore whitespace in strings'.

  • It reports huge numeric IDs as equal when they differ.

    JSON.parse coerces numbers to 64-bit floats, so integers above 2^53−1 (Snowflake IDs, some ledger values) can collide after parsing. Store such IDs as strings in the source so they compare exactly as text.

  • Array items look 'changed' when they only moved.

    Arrays are compared by index, because order is meaningful in JSON arrays. If your array is really an unordered set, sort both sides first (or model it as an object keyed by id) so positions line up.

  • One side won't parse.

    The editor for the invalid side shows a precise error, usually a trailing comma, single quotes, or an unquoted key. Fix that side and the diff recomputes live. Both sides must be valid JSON to compare.

Get the most out of it

  • List volatile keys (id, updatedAt, timestamp, _etag) in 'Ignore keys' so a diff isn't buried under fields that always change.

  • Keep 'Ignore key order' on when comparing API responses, most servers don't guarantee a stable key order.

  • For unordered arrays, sort both sides before diffing so items match by content instead of position.

  • Store big integer IDs as strings to avoid float precision collisions during comparison.

  • Copy the diff report straight into a pull request or bug ticket to document exactly what changed.

What's new

Recent updates and improvements to the json diff.

  1. Initial release: structural path-based diff with add/remove/change counts, order-insensitive keys, ignore-keys and ignore-whitespace options, unified color view, drag-drop import and shareable links.

  2. Added a copyable plain-text diff report, an unchanged-paths toggle, and keyboard shortcuts with an in-tool shortcuts helper.

Your privacy is built in

Both JSON documents are parsed and compared entirely in your browser using its native JSON engine. Nothing is uploaded to any server. No data is stored, logged or transmitted, so you can safely diff payloads containing tokens, keys or personal information. Close the tab and every trace is gone.

  • Runs in your browser
  • No uploads
  • Nothing stored

Ready to try the json diff?

Free, private and instant. JSON Diff runs right in your browser.