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.

Comparing a JSON API

  • 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].price changed, meta.page added) 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.

Tell me when it's out

visualdiff for Mac is nearly ready. Leave your email and we'll send you one message when you can download it.

Just the launch email. No newsletter, and we never share your address.