Snapvisor
How it worksFeaturesIntegrationsPricingAppsDocs
Sign inStart free
How it worksFeaturesIntegrationsPricingAppsDocs Join our DiscordSign in

Free tool

Image diff tool

Drop in two screenshots to see every changed pixel, the share of the image that changed and whether Snapvisor would flag the pair as a visual change. The comparison runs in your browser: your images are never uploaded.

Add two images, or try the example pair, to see the diff.

How to compare two images

  1. Add the baseline. Choose or drop the image you expect, for example the screenshot from your main branch.
  2. Add the new image. Choose or drop the image to check, for example the same screen from a pull request.
  3. Set the threshold. Keep the default 0.5 or lower it to make the comparison stricter, the same setting your Snapvisor screenshots take.
  4. Read the result. The verdict says whether Snapvisor would flag a change; the overlay marks every pixel that counted.

How the verdict is reached

Two pixels differ when their colour distance, measured in the YIQ colour space after blending each pixel over white, passes the pixel threshold. A differing pixel on an edge between a darker and a brighter area that is flat in both images is treated as antialiasing and left out. The share of pixels left is the score.

Snapvisor runs that comparison twice on every screenshot. The base pass uses a loose pixel threshold and ignores a change smaller than 20 pixels or 0.02% of the image, whichever is smaller. The colour-sensitive pass uses a tight threshold and ignores anything under 3% of the image. The score is read to two decimals of a percent, so a change under 0.005% of the image reads as zero. This page runs the same steps, with the same numbers, as the review workflow that decides which screenshots your team sees.

Use it from code, no key

POST https://api.snapvisor.io/v2/tools/image-diff runs the comparison on Snapvisor's servers with the diff engine every build uses (odiff, the same two passes) and answers the verdict as JSON, or as Markdown with Accept: text/markdown. Send the two images as multipart fields base and head, and optionally a threshold from 0 to 1. No account or key: 20 comparisons a day per address, images up to 5 MB and 16 million pixels each, nothing stored. Errors are RFC 9457 problem details, and the operation is in the OpenAPI description.

shell
curl -s https://api.snapvisor.io/v2/tools/image-diff \
  -F base=@baseline.png \
  -F head=@new.png \
  -F threshold=0.5

Compare every screenshot on every pull request

Comparing one pair by hand finds one change. Snapvisor takes the screenshots in your Playwright, Cypress, Puppeteer or Storybook tests, compares each one with the baseline from your main branch, and posts the changes to the pull request for review. The SDKs take the same threshold option as this page. Start free or read the visual regression testing guide.

Image diff FAQ

It compares the images twice, as Snapvisor's engine does. A loose pass tolerates antialiasing and rendering noise and ignores a change smaller than 20 pixels or 0.02% of the image, whichever is smaller. A strict pass catches colour shifts and ignores anything under 3% of the image. If either pass still finds a difference, the pair counts as changed.

No. The images are read and compared by JavaScript in this page, on your device. Nothing is sent to Snapvisor or anyone else, so you can compare screenshots of private apps.

It scales how different two pixels must be before they count, and how many changed pixels each pass ignores. The default is 0.5; 0 is the strictest setting. Snapvisor screenshots take the same threshold option, so the verdict here is the one your build would show at that setting.

Yes. Both images are placed at the top-left of a canvas as large as the larger one, and the missing area counts as transparent, which is how Snapvisor lines up screenshots of different heights. An image smaller in both directions is first scaled up to fit.

This page compares one pair of images by hand. Snapvisor takes screenshots in your Playwright, Cypress, Puppeteer or Storybook tests, compares every one against the baseline from your main branch on each pull request, and lets your team approve or reject each change.

Related pages

GuidesHow visual regression testing worksSelf-hosted visual regression testingVisual regression testing in GitHub pull requestsSnapvisor MCP server
Test runner and CI setupPlaywright visual testing setupStorybook visual testing setupCypress visual testing setupPuppeteer visual testing setupVisual regression testing in GitLab CI
Compare SnapvisorSnapvisor vs PercySnapvisor vs ChromaticSnapvisor vs ApplitoolsSnapvisor vs ArgosSnapvisor vs Lost PixelSnapvisor vs Playwright snapshots
Free toolsScreenshot calculator
Snapvisor

Visual regression testing that catches every pixel before it ships — built on a proven open-source visual-diff engine.

Open source at the core

Product

  • Features
  • How it works
  • Pricing
  • Get the app
  • Agent setup
  • MCP server overview
  • Visual regression testing guide
  • Self-hosted visual regression testing
  • Visual regression testing in GitHub pull requests
  • Support
  • Free tools
  • Refer & Earn
  • Integrations

Compare

  • vs Percy
  • vs Chromatic
  • vs Applitools
  • vs Argos CI
  • vs Lost Pixel
  • vs Playwright
  • All comparisons

Frameworks

  • Playwright
  • Storybook
  • Cypress
  • Puppeteer
  • GitLab CI

Docs

  • Quickstart
  • Getting started
  • Migrate from Percy
  • Migrate from Chromatic
  • MCP server
  • Access tokens
  • Support

Legal

  • Privacy Policy
  • Terms of Service
  • Delete your account
  • Partner Terms
  • Contact

Contact

We reply within 1 business day.

  • support@snapvisor.io
  • Join our Discord
All documentation
  • Snapvisor
  • Getting started
  • Baseline builds
  • Monitoring mode
  • Parallel testing
  • Summary checks
  • Flaky test detection
  • GitHub
  • GitLab
  • GitHub tokenless authentication
  • GitHub Actions OIDC authentication
  • Slack notifications
  • Deployments
  • Environments
  • URLs and domains
  • Access protection
  • Members and roles
  • SAML SSO
  • Spend management
  • MCP server
  • Visual testing without CI
  • Access tokens
  • API reference
  • Frequently asked questions
  • Open source
  • Support
  • Self-hosting
  • Review workflow
  • CI integration
  • GitHub Actions recipes
  • Run on a preview deployment
  • Troubleshooting flaky builds and false diffs
  • Migrate from Lost Pixel
  • Migrate from Percy
  • Migrate from Chromatic
  • Migrate from Applitools
  • Migrate from Playwright toHaveScreenshot
  • Migrate from BackstopJS
  • Migrate from Cypress image snapshot plugins
  • Migrate from Loki
  • Migrate from Happo
  • Migrate from reg-suit
  • Migrate from Visual Regression Tracker
  • Migrate from jest-image-snapshot
  • Pricing
  • SDKs
  • API
© 2026 Snapvisor. All rights reserved.Zero third-party runtime requests.