Nodes/WAS Node Suite v3/Image Compare (Advanced)
ComfyUI Node Runs on cloud

Image Compare (Advanced)

An A/B slider for pitting two images against each other

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
Image Compare (Advanced)
  • image_a
  • image_b
  • image_a
  • image_b
  • pairs

Every serious workflow reaches the "is this actually better than before?" question, and eyeballing two images side by side in separate preview nodes is a lousy way to answer it. Image Compare is the version where you drag a divider straight across one image to reveal what's underneath - the classic A/B wipe - and it's marked "(Advanced)" mostly because it handles whole batches and sits inline in your graph rather than being a throwaway preview.

It comes from WAS Node Suite, WASasquatch's sprawling MIT pack (457 nodes in v3). This node lives under WAS Suite/Image/Analyze and is a "compare on the node" utility: the imagery renders right there in the graph, no separate preview window to juggle.

How it works

Two image inputs, image_a and image_b. On the node you get a panel with a divider you drag left and right - one side shows A, the other shows B, and the reveal happens live. When the input is a batch, frames are paired frame-by-frame (A's frame 0 against B's frame 0, and so on) and each pair gets its own tab, so a 10-frame clip becomes 10 swipeable comparisons. Where the batches differ in length, the shorter one holds its last frame so every pair has a partner. The pairs output tells you how many comparisons you're looking at - that's the length of the longer batch.

The subtle part is what it passes through: image_a and image_b come back out unchanged. That means the node can sit in the middle of a chain - you branch your graph, run two competing paths, and let this node tee them up for inspection while the data keeps flowing downstream. It's also flagged as an output/display node, so ComfyUI treats it as a place to look, not just compute.

When you'll actually use it

The cases that make it indispensable:

  • Two seeds of the same prompt - which composition actually worked?
  • A filter or upscaler before/after, especially when the change is subtle and only visible with the divider right on the detail.
  • A checkpoint or LoRA swap where you want to A/B the same latent.
  • Two video passes, compared frame by frame to check a temporal fix didn't break something elsewhere.

The divider matters more than it sounds like. Side-by-side images hide differences because your eyes dart between two screens; a wipe puts both versions at the same spot on the retina, and changes in texture or brightness announce themselves. It's the same reason image-comparison tools everywhere default to this interaction.

Practical notes

Install is standard WAS Node Suite: ComfyUI Manager, search "WAS Node Suite v3", or git clone https://github.com/WASasquatch/was-node-suite-comfyui into ComfyUI/custom_nodes and restart. Needs ComfyUI 0.14.0+ and Python 3.10+. v3 installs no Python packages and downloads nothing - a genuinely different situation from v2, whose bundled dependencies were a known source of import failures when ComfyUI updated.

Worth knowing before wiring it in: the comparison renders at the images' native size, so pairing a 2048×2048 image with a 512 one makes for an awkward panel - resize them to a common size upstream if the wipe feels lopsided. And because it's a compare-on-the-node tool, it's for you, the operator, mid-workflow - if you're archiving proof that two renders differ, you'd still export them separately. But for the everyday "did the change help?" question, it's the fastest honest answer in the graph.

CategoryWAS Suite/Image/Analyze

Inputs (2)

NameTypeDefaultDescription
image_aIMAGEThe image the divider reveals on the left; IMAGE. A batch is paired with image_b frame by frame.
image_bIMAGEThe image the divider reveals on the right; IMAGE. Where the batches are different lengths, the shorter one holds its last frame.

Outputs (3)

NameTypeDescription
image_aIMAGEimage_a unchanged, so the node can sit in the middle of a chain.
image_bIMAGEimage_b unchanged.
pairsINTHow many pairs the comparison holds; INT, the longer of the two batches.