Compare Videos
A/B Your Generations Without Leaving the Canvas
- compare_video
- source
- output
The video version of that image before/after slider
Anyone who's tuned an image model has used a compare node - the one that lets you drag a slider across a split view and watch old vs new morph into each other. Video workflows never quite got the same toy, which is absurd once you're iterating on generations. easy compareVideos fixes that: it's a terminal preview node that puts your source and output videos side by side with an interactive comparison slider and A/B toggle.
The reason you want it: video iteration is expensive. When you change one thing (a prompt word, a sampler, a seed) and re-render, you need to see the difference, not squint at two tabs. This node is the honest A/B rig for that.
How it works
It's an output node - no data flows out, the results live in the UI. Under the hood it normalizes whatever you feed it, probes the videos for metadata (fps, frame count, duration), copies them into temp preview files, and hands the frontend a compare_videos payload that renders the slider.
A few behaviors worth knowing:
- VIDEO lists are tolerated: the first two items become source and output.
- Playback duration follows the output video when both inputs are connected. So if your generated clip is a different length than the source, the comparison runs at the output's pace - which is usually what you want (you're comparing results, after all).
- No inputs needed. If you don't wire anything, the widget itself can browse ComfyUI input files or a URL directly. That makes it a handy standalone media viewer too, not just a workflow terminal.
Inputs
There are only three, and two are optional:
compare_video- the widget. This is where the comparison settings live (mode, source/output selection, and in the node's own settings, whether to save the output to history with a filename prefix).source(VIDEO, optional) - the "before." Usually your input clip or the previous render.output(VIDEO, optional) - the "after." Usually the freshly sampled clip.
That's the whole surface - it's an output node, so there are no outputs to wire.
Setup and how to actually use it
Install with the pack: ComfyUI Manager → ComfyUI-Easy-Media, or
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Media.git
restart, and the node shows up under the pack's Video category. Note that its comparison UI is frontend work, so if the slider isn't rendering, check that the pack's dist web assets loaded (the console will say something about an extension web dir) - this is one of those packs where the frontend is half the product.
Practical usage:
- Wire
sourcefrom wherever your original lives (a video load, an earlier decode) andoutputfrom the decode of your current generation. - Queue. Watch it render, then scrub the slider in the preview to see exactly where they diverge.
- Toggle A/B mode when you want full-frame alternation instead of a split.
The one gotcha: since duration follows the output, if you're comparing an upscaled vs non-upscaled render where the frame counts differ, the slider will feel uneven. Match your clip lengths if you want a fair fight. Other than that it's the rare node that's both genuinely useful and genuinely zero-maintenance.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| compare_video | EASY_COMPARE_VIDEO | — | |
| sourceopt | VIDEO | — | |
| outputopt | VIDEO | — |
Outputs (0)
No outputs