1. Paste two complete arrays
Put the earlier list on the left and the later list on the right. If your response wraps records in an items property, paste the two items arrays. Both inputs need valid JSON, not JavaScript object literals.
Compare two API result lists by a unique field. Find added, removed, and changed records even when their order changes, then download a report with field-level differences.
Runs locally, without uploads or saved inputs. Up to 100,000 characters per input, 10,000 values, and 40 nesting levels. Ctrl+Enter or Command+Enter runs the tool. How your data is handled.
The example describes two snapshots of an order list. The second list has a different order, one edited status, one new record, and one removed record. This comparison should produce one added, one removed, one changed, and one unchanged record.
Put the earlier list on the left and the later list on the right. If your response wraps records in an items property, paste the two items arrays. Both inputs need valid JSON, not JavaScript object literals.
Use a field that means the same record in both lists: an order ID, product SKU, or user UUID. The key must be present and unique on each side. An unstable timestamp or a non-unique category cannot identify records reliably.
Read the four counts first, then inspect the changed paths. Expand the JSON report for before and after values. Keep the original inputs available in your own workflow; the website does not save them between visits.
For comparisons of complete documents in the installed product, read JSON Compare & Diff.
Root records are matched by a field you choose, such as id or sku. Moving an unchanged record to a new position creates no difference. Object-key order and indentation are also ignored. The report focuses on added, removed, and changed records.
The comparison stops with an error naming the affected side or record. Every root record must have a unique, top-level identity value. Only non-empty strings and finite numbers are accepted. The number 1 and the string "1" are different identities.
No. Identity matching applies only to the two root arrays. Nested arrays are compared by position, because their order can carry meaning. Choose a smaller pair of root arrays if you need to reconcile a nested list by its own identity field.
Changed fields use JSON Pointer paths relative to the matched record. For example, /status refers to that record’s status property. A slash inside a key becomes ~1, and a tilde becomes ~0. Before and after indexes in the report are zero-based.
No. It produces a comparison report and leaves both inputs unchanged. A renamed identity is an added record plus a removed record. Review the changes before making updates in your own system.
Each input can contain up to 1,500 records within the shared character, depth, and value limits. The on-page list shows the first 100 changed, added, or removed records; the downloadable JSON report includes the full result. Numbers that JavaScript cannot represent without changing their value are rejected.
Keep working: all free online tools · JSON to TypeScript · extension and app manual.