Image Difference Checker
Prove which image is better, not just feel it
- image1
- image2
- color_diff_map
- grayscale_diff_map
- result_image
- result_text
Every time you compare two similar images by eye - VAE before and after, upscaler A vs upscaler B, two seeds that look "almost the same" - you're doing sloppy science. Image Difference Checker is the node that turns that into numbers: it takes two same-resolution images, computes exactly where they differ, and hands you a diff map, a similarity score, and a composited report image. It's the closest thing ComfyUI has to a lab bench for "did my change actually do anything?"
What it outputs
Four sockets, each a different view of the same comparison:
- color_diff_map - per-pixel absolute difference across RGB. Bright = changed a lot.
- grayscale_diff_map - the same idea as a single luminance-like channel.
- result_image - the composited visual report: the two inputs side by side, the diff maps, the metrics, and (if you ask) tone-curve graphs and per-channel tone tables.
- result_text - a Markdown summary with the numbers, ready to dump into a text display or save alongside the image.
The metrics matter more than they look: MAE is the mean absolute pixel error on a 0–255 scale (with an inverted "similarity %"), and SSIM is a structural similarity score, computed here with a global non-windowed formula over Rec. 601 luminance. MAE punishes gross differences; SSIM rewards same-structure-different-brightness. Together they tell you "how different" and "different in what way."
The inputs you'll touch
- image1, image2 - the pair to compare. They must be the same resolution; the node throws a
Resolutions mismatcherror if not, so upscale or crop to match first. - show_tone_analysis (default off) - adds per-channel tone-curve graphs and tone tables to both the report and the text. This is the feature that makes it a real tool for color-work: it shows you where in the histogram the two images diverge, not just that they do.
- ui_scale (3.2), dark_mode (true), show_original_image, show_difference_map - cosmetic controls for how the report image is laid out. Bump ui_scale if the report text is tiny.
How it fits
The classic uses are the ones the README calls out: checking VAE reconstruction accuracy (compare decoded latent vs. source) and comparing upscaler outputs. Also great for LoRA on/off, two CFG settings, or before/after a color grade - anywhere you want evidence instead of vibes. The node re-runs on every execution (not_idempotent), and the README's tip is the right one: when you're iterating on settings, use ComfyUI's partial execution - the blue play button - to re-run from this node onward instead of redoing the whole pipeline.
Install
From the ComfyUI Manager search Easygoing, or:
cd ComfyUI/custom_nodes
git clone https://github.com/easygoing0114/ComfyUI-easygoing-nodes.git
Restart ComfyUI. No pip extras. One requirement: a ComfyUI build with the V3 node API - this pack is written against comfy_api.latest, and on older builds none of its nodes register.
The one thing to remember
Images must match in resolution or it errors immediately - that's a feature, not a bug, since comparing mismatched sizes would silently lie to you. And keep your expectations calibrated on the scores: SSIM here is a simplified global metric, not a full windowed SSIM, so treat it as a directional signal ("closer" vs "farther") rather than a universal quality grade.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image1 | IMAGE | First image to compare. | |
| image2 | IMAGE | Second image to compare. | |
| ui_scale | FLOAT | 3.21–8 | Scale factor for the composited report image (labels, padding, graphs). |
| dark_mode | BOOLEAN | true | Use a dark background for the report image. |
| show_original_image | BOOLEAN | true | Include the two input images in the report. |
| show_difference_map | BOOLEAN | true | Include the color/grayscale difference maps in the report. |
| show_tone_analysis | BOOLEAN | false | Include per-channel tone-curve graphs and tone tables in the report and in the text summary. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| color_diff_map | IMAGE | — |
| grayscale_diff_map | IMAGE | — |
| result_image | IMAGE | — |
| result_text | STRING | — |