Skip to content
motifuse
Image

Image Diff / Compare Tool

Compare two images with pixelmatch — overlay, slider, and blink views, a sensitivity threshold, ignore regions, and an exportable diff report.

  • Free public tool
  • No sign-up for this tool
  • Processing clearly labeled
  • Instant results

Content last reviewed

Upload Image A

Baseline / Before

Upload Image B

Current / After

Quick Start

  1. Load both images

    Upload the before and after versions — screenshots, exports, or photos.

  2. Tune the comparison

    Pick a view mode, set the sensitivity threshold, choose the highlight colour, and draw ignore regions if needed.

  3. Read the results

    Changed pixels light up, stats report the exact difference, and the overlay or JSON report exports.

Examples

Before/after a CSS change

Two full-page screenshots at identical window size, compared at a moderate threshold.

Input

before.png and after.png (both 1440×2800) · threshold 10% · red highlight

Output

The intended button change lights up — and so does an unintended 2px shift in the footer; stats report the exact pixel count and percentage

Ignoring a dynamic region

A visible clock would register as a difference every time, so it is excluded.

Input

Two dashboard screenshots · ignore rectangle drawn over the timestamp area

Output

The comparison reports only real layout changes; the masked region is skipped in the count and the JSON report

About the Image Diff / Compare Tool

Are these two images identical — and if not, where exactly do they differ? Eyeballing screenshots side by side fails at precisely the moments it matters: a one-pixel layout shift, a subtly changed colour, an export that may or may not match the previous version. This tool answers definitively, using pixelmatch — the same comparison engine behind many CI screenshot tests — running in your browser.

Four view modes suit different questions. The overlay paints every differing pixel in a highlight colour you choose; side-by-side shows both sources; the slider mode wipes between them under your cursor; and blink alternates the two rapidly, the classic technique that makes even tiny changes jump out. A threshold slider controls sensitivity — at low values sub-visible encoding noise registers, at higher values only human-visible changes survive — and you can drag ignore rectangles over regions that legitimately differ (timestamps, ads, animated corners) to exclude them from the count.

The verdict comes as numbers, not vibes: differing pixels, total pixels, and the difference percentage, with the diff overlay downloadable as PNG and the statistics copyable as a JSON report for tickets and reviews. Both images stay on your machine throughout, so unreleased designs and internal-tool screenshots are safe to compare.

How to Use Image Diff / Compare Tool

  1. Upload the first (before) and second (after) images. Comparison runs automatically once both are loaded.

  2. Pick a view mode: Overlay (differences highlighted), Side-by-side, Slider (wipe between versions), or Blink (rapid alternation).

  3. Set the threshold — lower catches everything including compression noise; higher surfaces only clearly visible changes — and choose a highlight colour that contrasts with your images.

  4. If parts of the images differ legitimately (clocks, ads), draw ignore regions over them; they are excluded from the comparison.

  5. Read the stats — differing pixels, total, and percentage — then download the diff overlay as PNG or copy the JSON report for a ticket or review thread.

Key Features

  • pixelmatch engine

    The comparison library used by CI visual-regression suites, running client-side on your two images.

  • Four view modes

    Highlighted overlay, side-by-side, cursor-controlled slider wipe, and blink alternation.

  • Adjustable threshold

    A sensitivity slider separating sub-visible encoding noise from human-visible change.

  • Ignore regions

    Draw rectangles over legitimately dynamic areas — timestamps, ads — to exclude them from the diff.

  • Quantified results

    Differing pixels, totals, and percentage to four decimals — a number, not an impression.

  • Exportable evidence

    Download the diff overlay as PNG or copy a JSON report of the comparison.

When to Use Image Diff / Compare Tool

  • Visual regression checks

    Confirm a CSS or component change had no unintended side effects elsewhere on the page.

  • Design-version diffing

    See everything that changed between two exports — including what the changelog didn't mention.

  • Cross-browser rendering

    Compare the same page captured in two browsers and quantify where they disagree.

  • Export verification

    Prove an exported or re-encoded image still matches its source.

  • Edit auditing

    Reveal exactly which regions of a photo were retouched.

How It Works

Both images are drawn onto canvases sized to the larger of the two (a smaller image leaves its undrawn remainder, which registers as difference — matching sizes give the cleanest comparison). Any ignore rectangles are masked out on both sides, then pixelmatch walks the two pixel buffers, comparing colours in a perceptual colour space with anti-aliasing awareness, and writes differing pixels into a diff image in your chosen highlight colour.

The threshold maps to pixelmatch's sensitivity: near zero, single-value channel shifts from JPEG re-encoding count; higher, only differences a person would notice survive. The result is rendered as the overlay, and the counts — differing pixels over total — become the stats and the JSON report. Slider and blink modes present the same two sources interactively rather than re-computing anything.

Supported Formats and Options

Formats

  • Common image input

    PNG, JPG, WebP and other browser-decodable formats for both sides; screenshots and exports are the typical diet.

  • PNG and JSON output

    The diff overlay downloads as diff_overlay.png; the statistics copy as a JSON report.

Options

  • View mode

    Overlay, side-by-side, slider wipe, or blink alternation.

  • Threshold

    Sensitivity of the comparison — low for pixel-exact equality checks, higher for layout-level review.

  • Highlight colour

    The colour differing pixels are painted in; pick one that contrasts with the content.

  • Ignore regions

    Draw, keep, and clear rectangles that are excluded from the comparison on both images.

Common Errors and Troubleshooting

Common errors

  • The diff shows differences you cannot see

    They are real, just sub-visible: JPEG re-encoding shifts values, anti-aliasing renders differently across machines, colour profiles nudge channels. Raise the threshold to surface only human-visible change.

  • A solid band of difference along one edge

    The images are different sizes — the smaller one's missing area counts as changed. Recapture both at identical window size and zoom, or resize one to match before comparing.

  • Everything is highlighted

    Usually one image is a re-encode or re-render of the whole frame (different zoom, different device pixel ratio). Confirm both captures came from the same viewport settings.

Troubleshooting guide

Clean comparisons in practice

  • Capture discipline: same browser, same window size, same zoom, same device-pixel-ratio — screenshot pairs made under identical conditions are the ones that diff meaningfully.
  • Dynamic content: anything that legitimately changes between captures (clocks, ads, cursors, animations) belongs under an ignore rectangle, not in the diff.
  • Choosing a threshold: start around the default; drop toward zero when the question is "are these byte-for-byte visually identical?", raise it when the question is "did the layout change?".
  • Highlight invisible against the content: switch the diff colour — red vanishes on red-heavy screenshots; a saturated green or magenta usually stands out.
  • Documenting the result: the PNG overlay is the picture for the review thread; the JSON report is the number for the ticket.

Limitations and Important Notes

Pixel comparison answers "which pixels differ", not "what does it mean" — a global 1-pixel scroll offset lights up the entire page even though only one thing happened, and the tool does not attempt structural or perceptual grouping of changes. Differently sized images are compared on the union canvas, so size mismatches read as large diffs. Very large images are processed in browser memory and take proportionally longer. Ignore regions are rectangles; irregular dynamic areas need covering with several.

Privacy and Data Processing

Both images, the comparison, and the diff rendering stay in your browser — nothing uploads, which is why screenshots of unreleased features and internal tools are safe here. The JSON report only leaves the page when you copy and paste it somewhere yourself.

Tips and Best Practices

Practical tips

  • Capture both screenshots at identical window size, zoom, and device-pixel-ratio.

  • Mask legitimately dynamic regions with ignore rectangles instead of raising the threshold globally.

  • Use blink mode for finding tiny changes by eye; use the overlay for documenting them.

  • Pick a highlight colour that contrasts with the dominant colours of the screenshots.

  • Attach the PNG overlay and JSON report to reviews — a quantified diff ends debates.

Best practices

Making visual comparison part of review

Standardize the capture step: a fixed browser window size and zoom for before/after screenshots turns visual diffing from an approximate art into a repeatable check. Teams that screenshot at a known viewport can diff any two builds of a page at will.

Separate signal from noise deliberately. Ignore rectangles handle the known-dynamic regions; the threshold handles encoding-level noise; what remains highlighted is the actual change. Investing thirty seconds in that setup makes the resulting diff trustworthy enough to attach to a pull request.

And let the numbers close the loop: "0 differing pixels outside the masked regions" is a verifiable statement about a UI change — the kind reviewers accept without re-testing. That is the CI visual-regression idea, available ad hoc.

Technical Details

Comparison uses the pixelmatch library on ImageData buffers from two canvases sized to the maximum dimensions of the pair; ignore rectangles are filled black on both canvases before comparison so they contribute zero difference. The threshold slider maps to pixelmatch's 0–1 threshold; the diff colour is passed as its diffColor with a dimmed base. Stats derive from the returned changed-pixel count over the canvas area. Overlay export uses canvas.toBlob → PNG; blink mode alternates at 500 ms. All processing is client-side.

Comparison

The four view modes

ModeShowsBest for
OverlayDiffering pixels painted in the highlight colourDocumenting exactly what changed
Side-by-sideBoth images in fullContext and orientation
SliderA cursor-controlled wipe between versionsInspecting a specific region
BlinkRapid alternation of the twoSpotting tiny changes by eye

Who Is This For?

Developers verifying UI changes and hunting regressions, designers checking implemented pages against exports, QA comparing rendering across browsers and builds, and anyone who needs "did anything change?" answered with a number instead of a squint. It brings the CI screenshot-test workflow to one-off comparisons.

Frequently Asked Questions

Why does the diff show differences I cannot see?

Because they exist below visibility: JPEG re-encoding shifts pixel values, anti-aliasing differs across GPUs and font stacks, and colour management nudges channels. Raise the threshold to filter that noise and keep only human-visible changes.

Do both images need the same dimensions?

For a clean result, yes — the comparison runs on a canvas sized to the larger image, so a size mismatch registers its uncovered area as difference. Capture both at identical viewport settings, or resize one to match first.

What are ignore regions for?

Excluding parts that legitimately differ — timestamps, ads, animated corners — so they stop polluting the count. Draw rectangles over them and the comparison skips those areas on both images.

What does the threshold actually control?

The comparison's sensitivity to per-pixel colour distance. Near zero, even one-value channel shifts count as different; higher settings require differences a person would notice. Match it to your question: exact equality low, layout review higher.

Can I save the comparison result?

Yes — download the highlighted diff as diff_overlay.png, and copy the JSON report containing the pixel counts, percentage, and dimensions for tickets and reviews.

Are the images uploaded to compare them?

No — decoding, pixelmatch, and rendering all run in your browser. Unreleased designs and internal screenshots never leave your machine.

Find this useful? Share it.