Visual diff
Two URLs in, three images out: before, after, and an overlay marking every pixel that changed — plus how similar they are. No account, no card.
What this is for
- Staging against production. Did the deploy change anything it should not have?
- A vendor's page over time. Capture their pricing page today, compare next week.
- A redesign. See exactly which pixels moved, rather than squinting at two tabs.
Reading the overlay
Red marks pixels that differ. Yellow marks anti-aliasing the comparison chose to ignore — edges of text and curves render a fraction differently between runs, and counting those as changes would make every comparison look broken.
A similarity of exactly 100% means pixel-identical. Anything in the high 90s on two captures of the same page usually means something animates, a timestamp ticked, or an ad slot filled differently.
Limits, stated plainly
- A comparison costs two captures, because it launches two browsers. It draws on the same six-an-hour budget as the screenshot and accessibility tools, so three comparisons an hour, or a mix.
- Both sides must render at the same size, or there is nothing to compare pixel by pixel. Both are captured at 1280×720.
- Results are never cached. “Has this page changed” answered from a cached capture is an answer about yesterday.
- A run that fails or is refused costs you nothing.
- Public pages only.
Running it on a schedule
This page compares two URLs once. POST /v1/diff is the same engine
with a threshold you control, any viewport, full-page capture, and a response
you can fail a CI job on.
curl -X POST https://api.getsnap.dev/v1/diff \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{"before":{"url":"https://example.com"},
"after":{"url":"https://staging.example.com"},
"threshold":0.1}'
Pair it with scheduled captures and a webhook to get told when a page you do not own changes. A free key is 100 captures a month.
Frequently asked questions
Why does it say two captures?
Because it launches two browsers, one per URL. The hourly budget counts browser launches rather than button presses, so a comparison costs what it actually uses.
Both pages look identical but similarity is 99.4%
Something moved. The usual suspects are a clock, a carousel, a lazily loaded image landing at a different moment, or an ad. The overlay shows you where.
It says the dimensions do not match
One page is taller than the other, so there is no pixel-to-pixel correspondence. Both are captured at a fixed 1280×720 here, so this usually means one page failed to render fully. The API lets you set a viewport and wait for a selector.
Can I compare a page against a screenshot I already have?
Not with this tool — it captures both sides itself. The API accepts two URLs; archive your own captures and compare against a stable URL.
Related reading
- All free tools — and why their limits differ.
- Monitor a page on a schedule — cron, timezones and signed webhooks.
- API reference — every parameter of
POST /v1/diff.