✂ S42 CutFlow Crop & Pad
16 Hustle: Reformatting AI Video for Every Platform
- clip
- clip
- frame_count
- info
Every AI video model generates at whatever resolution it was trained on - 768×512, 1024×576 - and almost none of those match where you're actually going to post. TikTok wants 9:16, Instagram wants 1:1, YouTube wants 16:9, and your favorite film has that cinematic 2.35:1 thing going on. S42CF_CropPad is the S42 CutFlow node that performs that conversion inside the graph, no external NLE required.
The modes
The mode dropdown is where the whole node lives, and it defaults to the smart one:
aspect_ratio(default) - pick aratio_preset(16:9, 9:16, 4:3, 1:1, 21:9, 2.35:1, orkeep) and it figures out the best fit automatically.crop- cut to exacttarget_width/target_heightpixels. Cropping loses edges, so frame your subject with headroom.pad_letterbox- add bars top and bottom to hit a target, keeping all your pixels.pad_pillarbox- same idea but bars on the sides (this is your 16:9 → 9:16 vertical move, or the "this is a wide video displayed on a phone" look).
When you specify target_width and target_height, leaving one at 0 means "derive it from the ratio preset." pad_color is the bar color in hex - black by default, and honestly that's usually what you want.
What actually matters to a beginner
Two things. First, know whether you're cropping or padding before you click. Cropping a 16:9 clip to 9:16 by slicing the sides kills the composition - the safe path is usually pad to vertical, or regenerate at a vertical resolution if it's a hero shot. Second, this node sits perfectly in the "prepare for delivery" position: load video → trim → grade → CropPad → export. It works on standard IMAGE batches, so it plays with any VHS/GGF loader on the front and any video saver on the back.
You get clip (the reformatted frames), frame_count, and info out the back. That info string tells you what dimensions it actually produced, which is a small but genuine sanity check - wire it into a Show Text node if you're ever unsure the preset did what you expected.
Install
S42 CutFlow is one pack, one install. ComfyUI Manager → search "S42 CutFlow" → Install → restart ComfyUI. The manual route:
cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt
Then restart completely and confirm the console prints [S42 CutFlow] Loaded 53 total nodes. CropPad is pure PIL/numpy - no models, no VRAM, nothing to download. The one real dependency for the whole pack is OpenCV (opencv-python-headless in the requirements file), and the README's own troubleshooting section just tells you to pip install opencv-python if you ever see "No module named 'cv2'."
One small warning from the author's own notes: this pack is a work in progress being groomed for LTX Desktop, so while the core composition nodes are stable, don't be surprised if an expanded node's widget set shifts in an update. CropPad itself is about as static as they come.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | IMAGE | Video clip to crop or pad. | |
| mode | COMBO | aspect_ratio | 'crop' = cut to exact dimensions. 'pad_letterbox' = add black bars top/bottom. 'pad_pillarbox' = add black bars left/right. 'aspect_ratio' = auto-detect best fit for target ratio. |
| target_width | INT | 00–8192 | Target width in pixels. 0 = derive from ratio. |
| target_height | INT | 00–8192 | Target height in pixels. 0 = derive from ratio. |
| ratio_preset | COMBO | 16:9 | Aspect ratio preset. 'keep' = don't change ratio. Used when target_width or target_height is 0. |
| pad_color | STRING | #000000 | Padding/letterbox color (hex). Click swatch to pick. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| clip | IMAGE | — |
| frame_count | INT | — |
| info | STRING | — |