🔧 Image Enhance Difference
Making the delta between two images actually visible
- image1
- image2
- IMAGE
A raw pixel-difference between two similar images is usually near-black - technically correct, useless to actually look at. Image Enhance Difference takes that same difference and boosts it into something you can read at a glance, which is handy for a quick sanity check: did that upscale pass actually change anything? Are two seeds of "the same" prompt closer than they look? Did a face-restore node touch more of the image than it should have?
It earns its keep in QA loops more than in creative pipelines. Comparing frame N against frame N+1 in a video batch is a fast way to eyeball where motion or flicker is actually happening without watching the whole clip. Comparing an image before and after a node you're not sure is doing anything (a subtle color-correction step, a low-strength inpaint) turns "I think this changed something" into "here's exactly what changed and how much." It's the visual equivalent of a diff command, tuned for images instead of text.
How it works
It computes the pixel-wise absolute difference between image1 and image2, then reshapes that difference curve with exponent (0–1, default 0.75). Lower values push more of the mid-range differences up toward visible brightness - think of it as a gamma boost aimed specifically at making small differences legible instead of leaving them buried near zero. It's a diagnostic tool, not something you'd composite forward into a generation - the output is for your eyes and your QA loop.
Inputs and outputs
image1, image2, exponent. Output: a single IMAGE.
Installing it
Via ComfyUI Manager, search "ComfyUI Essentials". Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_essentials
Restart. The pack's been maintenance-only since April 2025 - stable, not actively developed.
Common issues & troubleshooting
Shape/size mismatch error. image1 and image2 need to be the same resolution - this node doesn't resize one to match the other for you. If your two images came from different steps in a pipeline with different output sizes, resize one to match before wiring it in.
Output is basically solid gray or solid black. That's the honest answer, not a bug - your two images are genuinely near-identical at the pixel level. Try lowering exponent further to exaggerate whatever small difference does exist, or double-check you're actually feeding it two different images and not the same one twice.
Trying to use the output as an actual mask or next-step input. This node isn't built for that - it's meant to be looked at, not fed forward. If you need an actual difference mask to drive masking or compositing, you'll want a thresholding step after this, not this node alone.
Comparing two images that are supposed to be similar but aren't aligned. If one image is shifted, rotated, or cropped slightly differently than the other - a common issue comparing two separate generations rather than two steps of the same pipeline - the difference will read as noisy everywhere instead of localized where content actually changed. This node compares pixels at matching coordinates; it has no concept of "the same subject moved," so misalignment shows up as difference even where nothing meaningful changed.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image1 | IMAGE | — | |
| image2 | IMAGE | — | |
| exponent | FLOAT | 0.750–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |