🎁 S42 CutFlow Clip → GIF
Export an Animated GIF Straight From the Node Graph
- clip
- clip_passthrough
- filepath
GIFs refuse to die. They play in every browser, every chat app, every marketplace - no codec install, no player required. S42CF_ClipToGIF is the S42 CutFlow node that takes any IMAGE batch and writes it out as an optimized animated GIF, right from inside the graph. It's an output node: you don't wire its result into a video saver, you wire it at the end of a branch and it saves the file itself.
What you set
fps- playback rate, default 12. The author defaults it low on purpose: GIFs are a lo-fi format and look better at lower frame rates. 12 is the sweet spot for most content.max_colors- palette size, 16–256. 256 is max quality; 128 is usually visually identical at half the size; lower for tiny file sizes. This is your main quality/size tradeoff.loop_count- 0 (default) loops forever, which is what you want for basically every GIF.dither-yes(default) uses Floyd-Steinberg dithering, which hides the palette quantization by scattering error. Without it, gradients band visibly. Leave it on.filename_prefix- the file name stem (cutflow_gifby default).optimize-yes(default) trims palette frames for a smaller file.
Outputs are clip_passthrough - the original frames, passed through untouched so the node doesn't break your chain - and filepath, the string path to the file it saved, which you can route to a Show Text node or a metadata logger. Files land in ComfyUI's standard output directory.
The honest framing
GIF is not a delivery format for quality video. It's a preview, a sticker, a shareable loop. Where this node shines: you've built a cute 2-second AI loop with LoopBounce ping-pong, and you want to drop it into a Discord or a marketplace listing. Instead of exporting a video and converting it elsewhere, drop ClipToGIF on a parallel branch and get the GIF alongside your real export. The clip_passthrough output is the quiet hero here - it means this node can sit on a side branch and leave the main video pipeline completely untouched.
If you need the same loop as actual video, use VHS or your usual saver instead - GIF at 12fps and 128 colors is for sharing, not for a master file.
Install
One node in the 53-node S42 CutFlow pack. ComfyUI Manager → search "S42 CutFlow" → Install → restart. Or:
cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt
Restart fully; console should show [S42 CutFlow] Loaded 53 total nodes. GIF export runs on Pillow - CPU only, no models, no VRAM, no extra downloads. The one pack-level dependency worth naming is OpenCV (opencv-python-headless in the shipped requirements.txt, spelled opencv-python in the README - either fixes the "No module named 'cv2'" error).
Standing pack caveat: Geeky Ghost runs S42 CutFlow as a work-in-progress being groomed for LTX Desktop. The utilities core is stable; just don't treat the expanded nodes as frozen.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | IMAGE | Video clip to export as GIF. | |
| fps | FLOAT | 121–50 | — |
| max_colors | INT | 25616–256 | — |
| loop_count | INT | 00–100 | — |
| dither | COMBO | yes | 2 options: yes, no |
| filename_prefix | STRING | cutflow_gif | — |
| optimize | COMBO | yes | 2 options: yes, no |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| clip_passthrough | IMAGE | — |
| filepath | STRING | — |