Toolvore

Image Compare

Compare same-size JPEG or PNG pixels locally; export a difference PNG and JSON report.

This tool runs entirely in your browser. Your data is never uploaded, never stored, and never leaves your device.

Compare same-size JPEG or still PNG images by explicit browser-decoded RGBA channel tolerance and export a diagnostic PNG plus numerical JSON report.

How to use it

  1. 1Choose two supported images with matching decoded dimensions.
  2. 2Set a 0–255 channel tolerance and compare locally.
  3. 3Inspect pink changed pixels and download the diagnostic PNG or JSON report.

Example

Input
Two 80 × 60 opaque examples A 20 × 10 rectangle has different colors Tolerance: 0
Output
200 / 4800 changed pixels Changed bounds: x 20, y 15, width 20, height 10 Changed percentage: 4.166666…%

The local example and helper/browser tests verify this exact output; colors elsewhere match.

What happens to your data

Image decoding and comparison stay local, with no image-content upload or saved history. Diagnostic exports can reveal image structure; pixel similarity does not establish authenticity.

Last updated October 2026

Find decoded pixel differences between two same-size JPEG or still PNG images without uploading them. The comparison checks red, green, blue and alpha values at matching coordinates. Set an explicit channel tolerance, inspect the marked difference image, then download that diagnostic PNG and a numerical JSON report.

Use it for controlled screenshot revisions, exported asset checks or locating an unexpectedly changed rectangle. This is a coordinate-by-coordinate pixel test, not an AI judgment of visual similarity, proof of image authenticity or a detector of every meaningful edit.

How it works

Choose image A and image B, enter a whole-number tolerance from 0 to 255, then select Compare images. Supported inputs are ordinary JPEG and still 8-bit PNG up to 10 MiB per file, 4 million decoded pixels and 8,192 pixels per edge. File signatures and supported container structures are checked before native decoding. Animated or compound inputs and unsupported formats are refused. The dimensions must match after browser decoding and orientation; the tool does not stretch, crop, align, rescale or rotate one image to make it fit the other.

For each coordinate, the tool computes the absolute A-versus-B difference of all four RGBA channels. A pixel counts as changed when the largest of those four differences is strictly greater than the tolerance. At tolerance 0, a single-channel difference of 1 counts. At tolerance 10, a difference of exactly 10 is ignored and 11 counts. At tolerance 255, no channel difference can exceed the limit, so zero changed pixels does not mean the inputs are identical.

Pink pixels in the opaque diagnostic PNG exceed the tolerance. Other pixels are drawn pale gray using image A's decoded RGB average, not as an exact copy of either original. The report includes changed-pixel count and percentage, maximum channel delta, the mean absolute difference over every RGBA channel and the smallest coordinate-aligned rectangle containing all counted changes. Coordinates are zero-based. When no pixel exceeds tolerance, changed bounds is null. Maximum and mean differences are still calculated from all decoded channels, including changes below the counting tolerance.

Alpha is an independent compared channel. Two pixels with the same RGB but different opacity can count as changed; fully transparent pixels can have source RGB that a browser discards or changes during premultiplied-alpha conversion. The comparison cannot recover discarded invisible channel data. It does not composite both inputs onto a chosen common background before comparing them, and the result can differ from how a translucent asset appears over a particular webpage.

Browser image decoding, EXIF orientation, color profiles, canvas color handling, rounding and JPEG compression can affect channel values. A PNG and JPEG made from the same scene can differ at many pixels without containing an intentional edit. Anti-aliasing is not ignored automatically. A shifted or rescaled screenshot can mark a large region even when a person sees the same layout. For repeatable visual-regression checks, capture both images with consistent dimensions, browser, device scale, fonts and rendering conditions. This page does not promise colorimetric accuracy, structural similarity, registration, OCR or semantic comparison.

The calculation and PNG encoding begin only after interaction. Image bytes and filenames stay local; no image URL is fetched, and reports omit original filenames, camera metadata and original pixel arrays. The JSON still exposes dimensions and difference statistics, and the diagnostic PNG can reveal image structure, so inspect both before sharing. Surrounding website assets and anonymous usage events can use the network; local comparison is not a claim that the entire page makes no requests.

Changing either image or tolerance clears the previous result. Clear releases the temporary PNG link and file selections. Cancel prevents a late decode/export result from becoming available, but an already running bounded pixel loop can finish its local computation before the browser responds. A downloaded PNG or JSON remains on your device. No result is saved as a persistent comparison history, and an equal decoded-pixel result does not imply identical compressed files, metadata, provenance or ownership.

Worked example: Locate a changed rectangle

Input
Two 80 × 60 opaque examples A 20 × 10 rectangle has different colors Tolerance: 0
Result
200 / 4800 changed pixels Changed bounds: x 20, y 15, width 20, height 10 Changed percentage: 4.166666…%

The local example and helper/browser tests verify this exact output; colors elsewhere match.

Common use cases

  • Finding a changed area in two controlled UI screenshots
  • Checking whether a supposedly unchanged export decoded to new pixels
  • Documenting a pixel-level difference with a local PNG and JSON handoff

Frequently asked questions

Why must image dimensions match?+

A coordinate-by-coordinate comparison needs one pixel from each image at every position. Automatic resizing or alignment could hide or invent differences, so this tool refuses mismatches.

What does tolerance mean?+

It is the largest allowed absolute difference per decoded RGBA channel. A pixel counts only when at least one channel differs by more than that number.

Does zero changed pixels prove the files are identical?+

No. Tolerance may ignore differences, and decoded pixels do not cover metadata, compressed bytes, ownership or authenticity. At tolerance 255, all changes are ignored.

Does this compare what I see over a webpage background?+

Not exactly. It compares decoded RGBA channels without first compositing onto your website's background. Transparency and browser color handling can affect the displayed appearance.

Can this compare PDF pages or HEIC images?+

Not directly. It accepts supported JPEG and still 8-bit PNG only. Convert a PDF page or another image format separately if suitable, keeping conversion effects in mind.