Nodes/S42 CutFlow/↔ S42 CutFlow Side-by-Side
ComfyUI Node

↔ S42 CutFlow Side-by-Side

The A/B compare node that labels your before and after for you

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
↔ S42 CutFlow Side-by-Side
  • clip_a
  • clip_b
  • clip
  • frame_count
  • info
layouthorizontal
label_aBefore
label_bAfter
gap4

When you're tuning a filter, a grade, or a whole effects chain, you need to see the original and the result next to each other - and you need to know which is which three seconds later. S42CF_SideBySide is the honest A/B tool: it takes two clips, tiles them horizontally or vertically, and stamps a label on each so "Before" doesn't drift into "After" in your memory. It's one of the Preview nodes in GeekyGhost's S42 CutFlow suite, and it sits in the "doesn't touch your footage, helps you see it" category alongside Thumbnail Strip and Quick Preview.

The inputs

  • clip_a and clip_b - the two clips to compare. Which side is which matters for the labels; defaults are "Before" and "After," which you'll usually want to set yourself.
  • layout - horizontal (side by side, default) or vertical (top and bottom). Horizontal is the natural choice for comparing identical aspect ratios; vertical wins when you're comparing two tall clips or want a stacked before/after.
  • label_a / label_b (strings, defaults "Before"/"After") - the text stamped on each pane. Being able to write "480p" vs "1080p" or "grade 1" vs "grade 2" makes it dramatically easier to come back to a render and know what you were testing.
  • gap (int, default 4) - the pixel gap between panes. A small gap keeps the eye from treating the two halves as one continuous image.

How it works

Resolution-matching and tiling, the same family as the pack's Split Screen node - it normalizes the two clips so they sit side by side at the same scale, composites them per frame with labels drawn in, and returns a single IMAGE batch. Outputs: clip, frame_count, info. Since it's a Preview-category node it's intended for your working canvas rather than your final export, though there's nothing stopping you from feeding the composite into a video saver if you want the comparison as a deliverable.

The distinction worth internalizing: Side-by-Side is the diagnostic - labeled, resolution-matched, made for judgment calls. Split Screen is the creative one - unlabeled, supports 2×2 grids and diagonal splits, meant for content you ship. Same family, different jobs. For tuning, you want Side-by-Side; for publishing comparison content, Split Screen.

Installing it

Standard S42 CutFlow install - one pack, all nodes:

cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt   # Windows portable: python_embeded\python.exe -m pip

Or ComfyUI Manager → search S42 CutFlow → install → restart. It's under S42 CutFlow/Preview.

Gotchas

The honest limitations. First, this is a visual compare, not a pixel-accurate one - if you need a numeric verdict on whether clip B is objectively different from clip A, this isn't the tool; you're eyeballing two streams and trusting your eyes (which is exactly right for most aesthetic decisions, to be fair). Second, mismatched resolutions get force-matched, so a 480p preview and a 1080p render will both be scaled to fit - that's fine for layout, but it hides real resolution differences, so keep both clips at the same resolution when you actually care. Third, label text can overlap the pane edge if your labels are long; keep them short. And a workflow tip that pays off constantly: wire your original in as clip_a and the post-processing chain as clip_b, then flip parameters and re-queue - you get a live before/after of every tweak without rebuilding anything.

CategoryS42 CutFlow/Preview

Inputs (6)

NameTypeDefaultDescription
clip_aIMAGEClip A (left/top).
clip_bIMAGEClip B (right/bottom).
layoutCOMBOhorizontal'horizontal' = side by side. 'vertical' = top and bottom.
label_aSTRINGBeforeLabel for clip A.
label_bSTRINGAfterLabel for clip B.
gapINT40–20Gap between clips in pixels.

Outputs (3)

NameTypeDescription
clipIMAGE
frame_countINT
infoSTRING