Nodes/GIF Toolkit/GIF Preset / Prepare (legacy alias)
ComfyUI Node

GIF Preset / Prepare (legacy alias)

The pre-rename preset node, still loading old workflows fine

By oekobudde·Created 28 days ago·Updated 26 days ago· 1
GIF Preset / Prepare (legacy alias)
  • images
  • video_info
  • images
  • text_on_indexes
  • fps
  • frame_count
  • duration_seconds
  • width
  • height
  • settings
◄presetSmall►
◄aspect_ratioAuto (Input Image)►
◄custom_long_side320►
◄custom_fps8►
◄custom_duration_seconds5.0►
◄blink_on_seconds0.50►
◄blink_off_seconds0.50►

Short version: this is GIF Preset / Prepare (legacy) wearing the pack's old name. Same class, second registration. It exists because the project was renamed, and the author kept the old node names mapped so that workflows shared before the rename don't greet you with a wall of "missing node types."

It's the full preset preparation pipeline - trim, dropped-frame resample to the target fps, optional center crop, resize to a long side - plus an inline blink schedule. That combination is what the current pack splits into Prepare / Preset and Prepare / Blink Schedule.

How it works

Read the source fps out of the VHS_VIDEOINFO dict, or fall back to 12. Pick the preset's three numbers (long side, target fps, max duration), or the custom values if preset = Custom. Resample by index selection to hit the target fps - frames are dropped, never interpolated, which is the right behaviour for a looping GIF. Clamp duration to what the batch can actually supply. Optionally center-crop to a fixed aspect ratio. Resize so the long side matches the preset with both dimensions rounded to even numbers, bicubic with antialiasing.

Then the blink schedule: on/off seconds become frame counts at the target fps, and the node emits the resulting on-indexes as a comma-joined string.

Which, again, is the fine print: GIF Text Overlay recomputes its own schedule from its own widgets. Nothing in the shipped workflow consumes text_on_indexes. It's a convenience output, useful when you want to see what the rhythm looks like, not a control.

Presets and outputs

Small = 288 px / 6 fps / 4 s, Balanced = 320 / 8 / 5, Quality = 384 / 10 / 5.5. Custom reaches 512 px, 12 fps, 12 s - narrower than the current node's 1024 px, 24 fps, 30 s, which is the concrete reason to prefer the modern one. This node's default preset is Small; the modern node's is Balanced.

Outputs, all eight of them: images, text_on_indexes, fps, frame_count, duration_seconds, width, height, and settings - a one-line summary like Small | 288x162 | 6 FPS | 4.00s | ratio=Auto (Input Image) for a Note node. Wire fps onward into GIF Text Overlay and into the VHS Video Combine frame_rate.

Install

It's inside the pack, so:

cd ComfyUI/custom_nodes
git clone https://github.com/oekobudde/ComfyUI-GIFToolkit.git

Manager → search GIF Toolkit also works. Full restart. The pack ships no pip dependencies; ComfyUI-VideoHelperSuite is the separate, mandatory companion for video loading and the VHS_VIDEOINFO type.

Common issues

The custom fields do nothing. Same family-wide gotcha: custom_long_side, custom_fps and custom_duration_seconds are only read when preset is set to Custom. Otherwise the preset table wins and your typed numbers are decoration.

Output is softer or chunkier than a tutorial screenshot suggests. Check the preset. Small at 288 px and 6 fps is deliberately scrappy; the modern node's Balanced default is 320 px at 8.

Duration keeps getting clamped. The resample is bounded by min(requested, available), and available is what VHS_LoadVideo handed over - mind its frame_load_cap (144 by default) and force_rate.

Nothing loads from a shared workflow. If this node shows as missing, the pack simply isn't installed; the alias ships in the same Python module as everything else, so there's no partial-install scenario where only the legacy names vanish.

Upgrading the workflow? Swap this for GIF Prepare / Preset and keep blink values on the Overlay node. Visually identical results, wider custom range, one fewer node with a misleading display name.

CategoryGIF Toolkit

Inputs (9)

NameTypeDefaultDescription
imagesIMAGE—
video_infoVHS_VIDEOINFO—
presetCOMBOSmall4 options: Small, Balanced, Quality, Custom
aspect_ratioCOMBOAuto (Input Image)6 options: Auto (Input Image), 1:1, 16:9, 9:16, 4:3, 3:4
custom_long_sideINT320128–512—
custom_fpsFLOAT82–12—
custom_duration_secondsFLOAT5.00.5–12—
blink_on_secondsFLOAT0.500.05–10—
blink_off_secondsFLOAT0.500.05–10—

Outputs (8)

NameTypeDescription
imagesIMAGE—
text_on_indexesSTRING—
fpsFLOAT—
frame_countINT—
duration_secondsFLOAT—
widthINT—
heightINT—
settingsSTRING—