Nodes/rgthree's ComfyUI Nodes/Image Comparer (rgthree)
ComfyUI Node Runs on cloud

Image Comparer (rgthree)

Slide between two images in one node

By rgthree·Created 3 years ago·Updated 13 days ago· 3,294
Image Comparer (rgthree)
  • image_a
  • image_b
  • images

Two Preview Image nodes sitting side by side technically shows you a before and an after. But when the difference is a slightly sharper eyelash after an upscale, or a face that shifted a hair when you dialed a LoRA up, side-by-side is useless - your eye can't hold both frames at once. The Image Comparer stacks the two images on top of each other and lets you wipe a slider across to reveal one under the other. Any difference that matters snaps into view the second it crosses the line.

It's part of rgthree-comfy, the quality-of-life pack most people install right after ComfyUI Manager. That pack doesn't generate anything - it's all about making a workflow you can actually work in - and the comparer is squarely in its inspection-and-debugging corner, next to things like Display Any. It's a small node that a lot of people end up putting on basically every workflow.

What it's actually for

You reach for this any time a change is subtle enough that you need to A/B it honestly: before and after an upscale, with a LoRA versus without, two samplers, two seeds, a denoise tweak in an img2img pass. Instead of eyeballing two separate previews and guessing, you get a direct overlay and drag the seam back and forth. It turns "I think that helped?" into "yeah, that helped."

How it works, and the two inputs that matter

The whole node is two image slots and a wipe. You feed it image_a and image_b - both IMAGE type - and it renders them layered, with image_a on one side of the slider and image_b on the other. That's genuinely the entire input contract.

There's one nice shortcut worth knowing: if you pass a batch of two images into image_a and leave image_b empty, it'll compare the first two images of that batch against each other. Handy when a single node upstream already emits both frames you want to check.

By default you compare by hovering - move your cursor across the node and the slider follows. If you'd rather it not move every time the mouse drifts over, right-click the node, open Properties, and switch comparer_mode from Slide to Click, which pins the seam until you click a new spot. One more quirk from the docs: the right-click menu's image options (Open Image, Save Image) act on image_a if you clicked the left half of the node and image_b if you clicked the right - so click the side you mean.

The node also exposes a single images output. Most of the time you don't wire it anywhere, because the point of the node is the comparison you're looking at, not passing pixels onward - but it's there if you want to route the images to something else.

Installing it

Two easy paths. In ComfyUI Manager, search the pack title - rgthree's ComfyUI Nodes (or just "rgthree") - install, and restart. Or from a terminal:

cd ComfyUI/custom_nodes
git clone https://github.com/rgthree/rgthree-comfy

then restart ComfyUI. No model downloads, no heavy dependencies - the pack is pure quality-of-life code, MIT-licensed, maintained by one person (rgthree). You get the comparer and the rest of the pack's utilities in one clone.

The one issue that actually bites

The comparer's real-world failure mode isn't a config mistake - it's Nodes 2.0. When ComfyUI's Vue frontend rewrite rolled out in late 2025, this node was one of the first casualties; the loudest complaint in the community was literally someone saying the rgthree comparer stopped working instantly on a workflow they used it in everywhere. The pack's maintainer confirmed the breakage and has said he isn't planning to port the pack to the new frontend, so as of mid-2026 the fix is still just to turn Nodes 2.0 off and stay on the legacy canvas, which ComfyUI continues to ship.

So if the comparer renders wrong or won't show its slider, don't assume you wired it up badly - check whether Nodes 2.0 is enabled first. Beyond that there's not much to go wrong here: give it two images, drag the seam, done.

Categoryrgthree

Inputs (2)

NameTypeDefaultDescription
image_aoptIMAGE
image_boptIMAGE

Outputs (1)

NameTypeDescription
imagesIMAGE