Convertful
ImagePDFVideoUtilityBlog

Image Tools

  • Compress Image
  • Resize Image
  • Remove Background
  • HEIC to JPG
  • All Image Tools →

PDF Tools

  • Compress PDF
  • Merge PDFs
  • Split PDF
  • PDF to Images
  • All PDF Tools →

Video & Audio

  • Video to GIF
  • Compress Video
  • Trim Video
  • Extract Audio
  • All Video Tools →

Utility

  • QR Code Generator
  • JSON Formatter
  • Color Converter
  • All Utility Tools →
All processing happens in your browser. Your files never leave your device.
AboutBlogTermsPrivacyContact
© 2026 Convertful. All rights reserved.
HomeUtilityJSON Diff Checker

JSON Diff Checker

Compare two JSON documents semantically. Free, private, runs in your browser.

100% private — your files never leave your browser. All processing happens locally on your device.

Options

Paste JSON on both sides to compare.

You might also need

JSON FormatterFormat and validate JSON data
Text Diff / CompareCompare two texts and highlight differences
JSON to TypeScriptGenerate TypeScript interfaces from a JSON sample
JSON MinifierStrip whitespace from JSON to shrink API payloads

What Semantic JSON Diff Actually Means

A text diff on two JSON documents is noisy — reorder a key, drop a trailing newline, or change 1.0 to 1 and a line-diff screams red. A semantic diff parses both sides first, then walks the resulting data structure comparing values at matching paths. Reordered keys are identical. Equivalent numbers are identical. Inconsequential whitespace is invisible. Only real structural or value differences are surfaced, each one anchored to a precise path like `$.users[2].email` so you can navigate straight to the change.

Added, Removed, Changed — Three Kinds Of Difference

Every diff entry falls into exactly one of three categories. `Added` means a key or array element exists on the right that didn't exist on the left. `Removed` is the mirror — a key or array element that was on the left but is gone on the right. `Changed` is when a path exists on both sides but the value differs: a number became a string, a boolean flipped, a nested object was rewritten. The summary bar shows counts at a glance; the per-change list shows the old value alongside the new so the intent is obvious.

Why Array Index Matters

When arrays differ, index matters. If the left array is `["a","b","c"]` and the right is `["a","b"]`, the diff reports `Removed $[2]` with value `"c"` — the third element is gone. If the right is instead `["b","a","c"]` (reordered), the diff reports CHANGE at `$[0]` and `$[1]`. For config files where order doesn't matter semantically, this is a limitation — consider sorting both sides first. For API response shapes where order is meaningful, index-anchored reporting is exactly what you want.

100% Local — Zero Upload

Both documents are parsed and compared entirely in your browser using the microdiff library (~5 KB). Nothing is transmitted to our servers. This is important for real-world JSON diff: the documents you want to compare are usually API responses, config files, or database dumps — all material you do not want to see mirrored into an external service. If you need to diff a payload from a staging environment against production, you can paste both sides here with confidence.

FAQ

Is this diff semantic or textual?

Semantic. We parse both sides, then compare the resulting data structures — so reordered keys, inconsistent whitespace, and equivalent number formats (1.0 vs 1) are treated as identical rather than spurious diffs.

How are array changes reported?

By index. `users[2].name` shows exactly which element changed. Array element additions and removals appear as CREATE / REMOVE entries on a numeric index.

Does it handle nested objects?

Yes, to any depth. Paths are reported in JSONPath-style (e.g., `$.user.addresses[0].city`) so you can navigate straight to the differing field in a large document.

Is my JSON uploaded anywhere?

No. Both documents are parsed and diffed entirely in your browser using the microdiff library. Nothing is transmitted to our servers — the tool would be useless to privacy-conscious teams if it did.