Compare JSON
Compare JSON values and locate added, removed or changed members.
Your files are processed here, on your device
We do not send your file or text contents to a processing server. No account is needed and there is no daily operation quota. Individual tools have size limits to protect your device’s memory.
A connection is needed to load the site and its resources. Hosting may receive technical visit data. Favorites store only tool identifiers in this browser.
How we handle your data →How to use this tool
- Paste original and new documents in their respective fields.
- Apply to compare types, values, keys and indexes.
- Inspect report paths and download differences if you need to retain them.
An example you can verify
Identify a value change without confusing it with property ordering.
Example input
Original: {"name":"Ana","active":true}
New: {"active":true,"name":"Luis"}Expected result
[{"path":"/name","change":"changed","before":"Ana","after":"Luis"}]There is one difference. Moving active does not add another. The report uses JSON Pointer paths and is not an executable patch.
Compare JSON: uses and practical guidance
Structural JSON comparison separates data changes from presentation changes. Documents with different indentation or differently ordered object members can represent exactly the same values. The tool parses both documents and compares their content. When nothing differs, the report is an empty array and the counter displays zero. This does not mean the original files are byte-for-byte identical: whitespace, line endings or numeric notation may differ while producing the same interpreted value. Use a plain text comparison when those representation details are the subject of the review.
Arrays are compared by position. Swapping two items can produce several changes even when both items are still present. Objects are not automatically matched through fields such as id, and the tool does not calculate a minimal sequence of list edits. To compare unordered sets, first prepare a representation sorted by an explicit key appropriate to your data. Types matter too: 1 differs from "1", false is not equivalent to 0, and a missing member differs from a member present with null. Replacing an entire object with a string is reported as a value change at that path rather than as changes to every former child.
Every difference contains path and change. Added members include after, removed members include before, and changed values include both. Paths use textual JSON Pointer syntax: slashes and tildes in member names are escaped as ~1 and ~0. An empty path denotes the root when the entire document changes type or value. The report is descriptive and does not use the JSON Patch format; do not execute it as a sequence of instructions to update another document. Retain both originals so you can repeat the comparison and inspect the context surrounding each reported difference before making an edit elsewhere.
Parsing rejects duplicate keys and integers whose magnitude cannot be represented safely. JSON uses the browser's numeric precision; originating systems should use strings for long identifiers, while exact decimal calculations require an appropriate domain-specific system. Each document supports up to one million characters and one hundred nesting levels. If more than one thousand differences occur, the operation asks for smaller sections rather than presenting an incomplete report that looks complete. Before reviewing a long response, try a changed name, a removed member and a reordered array to understand how these cases appear in the output and which details remain relevant to your comparison.
Settings and limits
Paste two valid JSON documents. Object property order is ignored; array order matters. Differences are identified using JSON Pointer paths. Duplicate keys and unsafe integers are rejected. Maximum 1 million characters per document, 100 nesting levels and 1,000 differences.
Frequently asked questions
Is a number equal to a string?
No. The number 1 differs from the string "1". Indentation changes do not count as differences.