Docs
API and data responses
Compare JSON APIs, feeds and sitemaps field by field, like a pull request.
Some URLs return data, not pages: Laravel api/* routes, WordPress REST listings, sitemap.xml, *.json and *.xml feeds. visualdiff fetches them with the same cookies and headers as the screenshots and compares them as data.

- Unified: both responses pretty-printed, additions in green and removals in red, with line numbers and unchanged runs collapsed.
- Split: before and after in two columns.
- Fields: every changed path (
data[0].pricechanged,meta.pageadded) with both values.
JSON is compared path by path; anything else line by line.
Hostnames and volatile fields#
Each environment's own hostname is replaced with {site} before comparing, so https://site-c3.test/x and https://site-c4.test/x count as the same. Fields that always differ, like timestamps or ids, can be ignored:
"api": { "ignore": ["updated_at", "meta.generated_at", "data.*.id"] }
A bare name matches the key anywhere, a dotted path matches exactly, * matches one level and ** any depth.
Which URLs count as data#
Routes under api/ (or with api middleware), and URLs ending in .json, .xml, .txt, .csv, .rss or .atom. In the results they show { } or TXT instead of a thumbnail. Set "api": false on the Laravel source to capture API routes as pages instead.