Nodes/S42 CutFlow/👁 S42 CutFlow Quick Preview
ComfyUI Node

👁 S42 CutFlow Quick Preview

Edit at 480p, render at full res

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
👁 S42 CutFlow Quick Preview
  • clip
  • clip
  • frame_count
  • info
modepreview
preview_height480
frame_skip1

Quick Preview is the workflow node of the pack, and it's the one I'd install S42 CutFlow for even if nothing else existed. You drop it right after your video loader and it downsamples your footage to 480p before it hits the rest of your chain. Every downstream node - filters, color, compositing - now processes a fraction of the pixels. That's roughly 4–8× faster iteration on 1080p source, more on 4K. When you're happy with the edit, you flip it to passthrough and re-queue the final render at full resolution. That's the entire trick, and it's a good one.

The inputs

  • mode - preview (downsample) or passthrough (no-op, full-res flows through unchanged). This is the only input you flip between edit and render.
  • preview_height (int, default 480, range 120–1080) - the height to downscale to; width scales proportionally. The tooltip's guidance is right: 480 = fast, 720 = balanced. There's no reason to go above 720 for preview purposes.
  • frame_skip (int, default 1) - process every Nth frame. Set to 2 and you see half the frames, roughly doubling speed again. The catch: frame_skip changes the frame count, so it's a preview-only knob. Don't render with it on, and don't let a frame-skipped clip flow into anything length-sensitive.

How it works and why it matters

The mechanism is dumb in the best way: resize the batch to preview_height with width rounded to a multiple of 8 (so downstream nodes that care about alignment stay happy), and in passthrough mode it returns the clip untouched. No approximation, no lossy preview format - it's literally smaller frames. The output clip is a normal IMAGE batch, so everything downstream just works, and you get frame_count and info outputs for visibility.

The reason this matters so much is the context the README spells out: ComfyUI executes nodes sequentially, so there's no real-time preview. Iterating at full resolution means every parameter tweak costs a full-res pass through your whole chain. Put Quick Preview at the start, do all your fiddling at 480p, and save the slow full-res run for the final render. The pack's own example workflows start with exactly this node for that reason.

Installing it

Same one-time install as the whole suite:

cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt   # or ComfyUI Manager, search "S42 CutFlow"

Restart ComfyUI, find it under S42 CutFlow/Preview.

Gotchas

Three ways people shoot themselves. First - and this is the big one - leaving mode on preview for the final render. Your "1080p" export is actually 480p and you don't notice until it's on the timeline. The flip to passthrough before rendering is a habit, not a setting. Second, frame_skip > 1 in a finished render gives you a stuttery, half-length video; it's a look-at-it knob only. Third, don't forget the node outputs a changed clip - anything wired downstream of it genuinely sees the downsampled frames, so if you're comparing "original vs processed," grab the original from before the preview node. And one workflow-level tip: keep the preview node's output feeding the rest of the graph, but take your "after" comparison straight from the full-res branch when you want to judge quality honestly.

CategoryS42 CutFlow/Preview

Inputs (4)

NameTypeDefaultDescription
clipIMAGEVideo clip to preview.
modeCOMBOpreview'preview' = downsample to preview_height for fast processing. 'passthrough' = no-op, full resolution passes through unchanged. Switch to passthrough for final render.
preview_heightINT480120–1080Preview resolution height in pixels. Width scales proportionally. 480 = fast, 720 = balanced.
frame_skipINT11–10Process every Nth frame for even faster preview. 1 = all frames, 2 = half, etc.

Outputs (3)

NameTypeDescription
clipIMAGE
frame_countINT
infoSTRING