Nodes/ComfyUI-3R3BOS-Pack/Image Comparer Slider
ComfyUI Node

Image Comparer Slider

A/B testing that doesn't require a third eye

By 3R3BOS·Created 8 months ago·Updated about a month ago· 13
Image Comparer Slider
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • image_9
  • image_10
  • image_11
  • image_12
  • image_13
  • image_14
  • image_15
  • image_16
  • image_17
  • image_18
  • image_19
  • image_20

    Comparing two images in ComfyUI is the eternal pain point: load them, zoom into one tab, tab back, scroll to the same spot, squint. The Image Comparer Slider exists to end that - a draggable slider that sweeps between two or more images at the exact same zoom, so differences pop instead of hiding behind a browser tab. It's the 3R3BOS Pack's take on a tool that already has a famous version in rgthree-comfy, and it goes further in one direction: up to 20 image inputs, with auto-play for video frames.

    If you've used rgthree's Image Comparer, you know the pattern. This one's angle is scale and motion: connect however many images you want, and it builds a slider with synchronized pan and zoom plus a play mode that scrolls through everything in a smooth forward/reverse ping-pong loop. That last bit is what makes it useful for video work - you can flip through frames of an LTX or Wan generation without opening a player.

    How it works

    It's an output node, meaning it produces no data downstream - the display is the output. The backend writes each input frame to a temp cache folder, cleans that folder at the start of each run (so you never accumulate stale frames), and returns the file list through ComfyUI's UI channel. The JavaScript frontend then renders the slider, caches everything client-side for fast scrubbing, and tracks which source node each image came from so you can see "KSampler Face" vs "Upscale 4x" under the slider.

    The dynamic inputs are a nice touch: you start with image_1 required, and slots 2 through 20 appear as you connect wires - no need to add twenty inputs upfront.

    Inputs and outputs

    • image_1 (IMAGE) - required.
    • image_2 through image_20 (IMAGE) - optional, created on demand.

    No outputs. It's a terminal display node: put it at the end of a branch and look.

    Installing it

    Part of the 3R3BOS Pack, same install as the rest. No models, no extra dependencies. Manager: search 3R3BOS Pack, install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/3R3BOS/ComfyUI-3R3BOS-Pack
    

    then restart ComfyUI.

    Where people get burned

    First, the obvious one: there's no output wire, so if you expected to pipe something out of it, you're looking at the wrong node - this one is a reviewer, not a transformer. Second, the slider UI is canvas JavaScript, so the usual rules apply: no slider rendered means the JS didn't load, and a ComfyUI restart or hard browser refresh is the fix. Third, if you're comparing wildly different resolutions, zoom-to-fit can hide detail differences at the edges - the synchronized pan/zoom exists for a reason, so use it before judging.

    Should you switch from rgthree's comparer? Honestly, only if you need the multi-image play mode or the sheer input count. For a plain two-up A/B, the rgthree one is older and more battle-tested, and this is a young solo pack whose comparer is polished but hasn't seen the same years of community abuse. Where this one earns its keep is batch testing - checkpoints, LoRAs, upscale settings - where sliding through a dozen variants at identical zoom beats any other workflow I've tried.

    Category3R3BOS/Image

    Inputs (20)

    NameTypeDefaultDescription
    image_1IMAGE
    image_2optIMAGE
    image_3optIMAGE
    image_4optIMAGE
    image_5optIMAGE
    image_6optIMAGE
    image_7optIMAGE
    image_8optIMAGE
    image_9optIMAGE
    image_10optIMAGE
    image_11optIMAGE
    image_12optIMAGE
    image_13optIMAGE
    image_14optIMAGE
    image_15optIMAGE
    image_16optIMAGE
    image_17optIMAGE
    image_18optIMAGE
    image_19optIMAGE
    image_20optIMAGE

    Outputs (0)

    No outputs