About JSON Diff
JSON Diff compares documents by structure, so key order and formatting do not count as changes. Lists of values stay aligned when items are inserted or removed. Object arrays stay aligned when they share an id. Every difference is listed with a path such as $.user.roles[2].
How to use JSON Diff
- Paste the original JSON on the left and the changed JSON on the right, or open files.
- Select Compare (Ctrl/⌘ + Enter). Swap the sides if you compared them backwards.
- Filter by added, removed, changed, or moved, or search for a path or value.
- Download the change list, or switch to the text view for both documents with keys sorted.
Examples
Config drift
Compare staging and production configuration to see exactly which settings differ.
API regression
Compare responses before and after a deployment. Objects that share an id stay matched when the list is reordered.
Limitations
- Object arrays without a shared id, _id, uuid, key, slug, or name are compared by position. Inserting an item can make later objects look changed.
- Lists of more than 400 values are compared by position so the comparison stays responsive.
- Both inputs must be valid JSON. Errors include the line and column.
Privacy
This tool processes everything locally in your browser tab. Your input is not uploaded to Utilhex or any third party, and it is discarded when you close or reload the page. Read the privacy policy for details.
Frequently asked questions
Is my input sent anywhere?
No. Processing happens in your browser. Utilhex does not send tool input to its servers, analytics, or any AI service.
Does key order matter?
No. Objects are compared by key, so {"a":1,"b":2} and {"b":2,"a":1} are equal.
Is 1 equal to 1.0?
Yes. Both parse to the same JavaScript number, so they are treated as equal.
How are arrays compared?
Lists of strings, numbers, booleans, and null stay aligned, so an insert does not mark every later item as changed. Object arrays match on a shared unique id, _id, uuid, key, slug, or name. Objects that only moved are listed as moved. Without one of those fields, object arrays are compared by position.
What does moved mean?
The same object id appears at a different index. If its fields also changed, those fields are listed on their own. Changing the id itself is a removal plus an addition, because it is a different item.