Skip to developer tool
DEVELOPER TOOLKIT DATA & JSON

JSON Structural Diff Checker

Find changed values rather than formatting-only differences between two JSON documents. Compare nested objects and arrays, inspect additions and removals and export a report that identifies each location unambiguously.

Browser-based · No account required · Copy and export

BUILT FOR THE DETAILS
  1. 01Add your input
  2. 02Inspect & adjust
  3. 03Use your result
Browse developer tools

Workspace

Ready to use

How to use JSON Structural Diff Checker

  1. Paste valid JSON into both fields. Object-key order alone does not count as a difference.
  2. Choose whether primitive arrays should be treated as unordered multisets. Compare or swap the two documents.
  3. Read the text report, or download JSON records with type, display location and JSON Pointer path.

When to use this tool

Compare API responses or configuration revisions by data structure rather than formatting. Inspect JSON Pointer paths in the report before deciding which differences to keep.

A structural report is not a text diff or JSON Patch

An added key, removed key or changed value becomes a difference record. Array order normally matters; the unordered option only applies to arrays made of primitive values and still counts duplicates. JSON Pointer escapes a slash in a key as ~1 and a tilde as ~0. Exported records are a review format, not instructions claiming conformance to RFC 6902 JSON Patch.

Worked example

Left: {"a.b":1}
Right: {"a.b":2}
Display location: $["a.b"]
JSON Pointer: /a.b
This is different from nested {"a":{"b":2}}.

Separate a type change from an irrelevant tag order

Original comparison inputs

Left:  {"quantity":2,"tags":["draft","review"]}
Right: {"quantity":"2","tags":["review","draft"]}
  1. Paste each JSON value into its own comparison field. Compare with unordered primitive arrays off first; both the quantity type and tag order matter in this view.
  2. If tags are genuinely unordered for your application, enable that option and compare again. The reordered tags can then compare equal, but number 2 and string "2" remain different.
  3. Inspect the reported locations and before/after values. Do not use the unordered option for arrays whose order is meaningful or expect it to identify matching objects by an ID field.
  4. Copy or download the comparison report for review. It is not an executable JSON Patch, and the tool does not apply changes back to either input.

Duplicate counts still matter in primitive arrays: two occurrences do not become one merely because order is ignored. Object-key order and indentation are already ignored by structural comparison.

These are authored inputs with expected comparison rules, not a new generated report. Use JSON Schema Validator for required types/properties, or Text Diff when source formatting is part of the change.

Limits and output checks

JSON must fit the shared text and safe-number limits. Nesting is bounded for recursive comparison. Large integer identifiers should be quoted. The unordered primitive-array option does not reorder arrays of objects or infer object identities.

Reference: JSON Pointer syntax.

Frequently asked questions

Do different indentation or key orders count?

No. Parsed values are compared structurally; insignificant JSON source formatting and object-key ordering are ignored.

Does unordered mean duplicates are ignored?

No. Primitive-array multiplicity remains meaningful. [1,1] differs from [1].

Can I apply the JSON report as a patch?

No. It is an explicit comparison report with JSON Pointer locations, not a standardized JSON Patch operation list.

Compare JSON values instead of indentation

Supply two valid JSON values and review changes at their reported locations. Choose the primitive-array option only when order is irrelevant to that data.

Scope of this workflow

Object-key order and whitespace are ignored, while duplicate primitive values remain meaningful. The result is a report, not a standardized JSON Patch.

Text Diff Checker — Compare Lines or Words · All developer tools · Privacy policy · Contact PixelOkay