GIF Preset / Prepare (legacy)
The predecessor, still loadable, still useful to understand
- images
- video_info
- images
- text_on_indexes
- fps
- frame_count
- duration_seconds
- width
- height
- settings
The pack has a naming problem and this node sits in the middle of it. GIF Preset / Prepare (legacy) is the version-3 preset node: it does everything the current Prepare / Preset does, plus a blink schedule, in one node. Then the current one was split out of it. Both are registered. Both work. Which is a bit annoying until you know the lineage.
How it works
Same pipeline as its successor, in the same order: read the source fps from VHS_VIDEOINFO, resample by dropped frames to the preset's target FPS, clamp the duration to what's actually available, optionally center-crop to a fixed aspect ratio, and resize so the long side equals the preset's pixel value with both dimensions rounded to even numbers. Bicubic downscale with antialiasing.
Then it does one thing the newer node dropped: it computes the blink schedule inline. blink_on_seconds and blink_off_seconds become frame counts at the target fps, and the node emits the resulting on-indexes as a string - the same string its descendant GIF Prepare / Blink Schedule produces, and the same caveat applies. GIF Text Overlay doesn't read it. The Overlay node has its own blink widgets. The output here is for your reference.
Presets and the differences that matter
| Preset | Long side | FPS | Duration | Note |
|---|---:|---:|---:|---|
| Small | 288 px | 6 | 4.0 s | this node's default |
| Balanced | 320 px | 8 | 5.0 s | |
| Quality | 384 px | 10 | 5.5 s | |
| Custom | 128–512 px | 2–12 fps | 0.5–12 s | narrower ceiling than the newer node - 1024 px, 24 fps, 30 s |
That range difference is the only functional reason to prefer the newer node, and it's a good one: the successor's Custom preset reaches 1024 pixels, 24 fps and 30 seconds. This one tops out at 512 px, 12 fps, 12 s.
The inputs and outputs
Inputs: images (IMAGE), video_info (VHS_VIDEOINFO, required), preset, aspect_ratio, the three custom_* fields (only read when preset is set to Custom), and the two blink_* float fields.
Outputs: images, text_on_indexes (STRING), fps, frame_count, duration_seconds, width, height, and settings - a formatted one-liner such as Small | 288x162 | 6 FPS | 4.00s | ratio=Auto (Input Image).
Wire fps onward. Into GIF Text Overlay so the blink math matches the output, and into the VHS Video Combine nodes' frame_rate so the GIF plays at the speed you designed for. settings is display-only; drop it in a Note node if you like knowing what you ran.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/oekobudde/ComfyUI-GIFToolkit.git
Manager → search GIF Toolkit works too. Full restart. No extra pip packages from this pack; ComfyUI-VideoHelperSuite is mandatory for the workflow, since VHS_VIDEOINFO only exists there.
Common issues
"Legacy" doesn't mean broken here. It means superseded. Existing workflows that reference this node load and run; nothing in the pack warns you or nudges you forward. If you inherit a workflow using it, you can leave it alone - or swap in Prepare / Preset and manually add Prepare / Blink Schedule if you specifically want the on-indexes string, which nothing consumes anyway.
Changing the custom fields does nothing. Same trap as every node in this family: they're only read when preset = Custom.
You expected the newer defaults. This node ships on Small - 288 px, 6 fps, 4 s. The newer node ships on Balanced. If output suddenly looks crunchier than the tutorial screenshots, check which one you're actually looking at; the display names are similar enough to confuse at a glance in a busy graph.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| video_info | VHS_VIDEOINFO | — | |
| preset | COMBO | Small | 4 options: Small, Balanced, Quality, Custom |
| aspect_ratio | COMBO | Auto (Input Image) | 6 options: Auto (Input Image), 1:1, 16:9, 9:16, 4:3, 3:4 |
| custom_long_side | INT | 320128–512 | — |
| custom_fps | FLOAT | 82–12 | — |
| custom_duration_seconds | FLOAT | 5.00.5–12 | — |
| blink_on_seconds | FLOAT | 0.500.05–10 | — |
| blink_off_seconds | FLOAT | 0.500.05–10 | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| text_on_indexes | STRING | — |
| fps | FLOAT | — |
| frame_count | INT | — |
| duration_seconds | FLOAT | — |
| width | INT | — |
| height | INT | — |
| settings | STRING | — |