Nodes/S42 CutFlow/📐 S42 CutFlow Aspect Convert
ComfyUI Node

📐 S42 CutFlow Aspect Convert

16, 1:1, 2.35:1, or anything in between — without leaving ComfyUI

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
📐 S42 CutFlow Aspect Convert
  • clip
  • clip
  • frame_count
  • info
target_ratio16:9
custom_ratio1.778
fit_modeletterbox
bg_color#000000

Every AI video model generates at whatever aspect ratio it was trained on, and none of those happen to be the delivery format you need. Your 768×512 LTX clip is going to end up on a phone as 9:16, or square for Instagram, or letterboxed to 2.35:1 for a "cinematic" look. S42CF Aspect Convert is the quick, one-stop fix for that, sitting in the pack's Utilities category right next to the heavier Crop/Pad node.

The inputs are refreshingly few:

  • target_ratio - presets: 16:9, 9:16, 4:3, 3:4, 1:1, 21:9, 2.35:1, plus custom to use your own custom_ratio value (width ÷ height, so 1.778 = 16:9). That custom escape hatch is genuinely useful for matching an oddball model resolution.
  • fit_mode - this is the decision that actually matters:
    • letterbox - pad with bars to preserve every pixel. The safe default; nothing gets cut.
    • crop_center - crop from the center to fill the target, losing the edges. The classic for turning 16:9 footage into vertical without bars.
    • crop_smart - center-weighted crop, same idea with a bit more leniency about where the crop lands.
    • stretch - distort to fit. You will almost never want this for video, and it's there because occasionally you do.
  • bg_color - hex color for the letterbox bars, default #000000. That's the knob for the "cinematic" black bars vs. a colored bar look.

Outputs: clip (the converted IMAGE batch), frame_count (handy if a downstream node needs to know the duration), and info (a string summary of what changed). Like everything in the pack, it works on standard IMAGE batches, so it slots between any video loader and any saver.

The one judgment call you'll make repeatedly: letterbox vs. crop. Letterboxing is lossless and honest - you keep the whole frame and add bars. Cropping is what makes the result look native to the platform, but it throws away image content, so if your subject is framed near the edges, crop_center will cut them. For 16:9 → 9:16 specifically, most people reach for the crop and accept losing the sides, which is the standard TikTok/Reels sacrifice.

Honestly, this is a "thin" node - it's one job, done well, with sensible presets. That's not a criticism. If you're doing any vertical delivery from widescreen AI output, you'll wire this in constantly, and the custom_ratio escape hatch means it survives model resolution changes that would break a hard-coded workflow.

Installing it

It's part of S42-CutFlow, so: ComfyUI Manager → search "S42 CutFlow" → Install → restart. Or clone:

cd ComfyUI/custom_nodes
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt

The requirements file is a single line (opencv-python-headless); the resize/crop math here uses torch and Pillow, which ship with ComfyUI. After restart, the "[S42 CutFlow] Loaded ..." console line confirms it's registered.

CategoryS42 CutFlow/Utilities

Inputs (5)

NameTypeDefaultDescription
clipIMAGEVideo clip to convert.
target_ratioCOMBO16:9Target aspect ratio. '16:9' = widescreen. '9:16' = vertical/phone. '1:1' = square. 'custom' = use custom_ratio value.
custom_ratioFLOAT1.7780.2–5Custom aspect ratio (width/height). 1.778 = 16:9. Only used when target_ratio='custom'.
fit_modeCOMBOletterbox'letterbox' = add black bars to preserve content. 'crop_center' = crop from center to fill. 'crop_smart' = center-weighted crop. 'stretch' = distort to fit.
bg_colorSTRING#000000Background/letterbox color (hex). Click swatch to pick.

Outputs (3)

NameTypeDescription
clipIMAGE
frame_countINT
infoSTRING