Image Overlay Blend
The Fade-to-Color Node That Ships With One Honest Quirk
- frames
- blended_frames
- alpha_masks
If you've ever rendered a video clip in ComfyUI and thought "I just want the end to dissolve to black," this is the node for that - and the whole point of Image Overlay Blend is being better than that. It takes a batch of frames and fades each one toward a background color over time, with a three-stage transparency ramp so you can script when the fade happens. It's the second half of the "push-pull lens, then fade to color" shot that the pack's own example workflow (Video fast change.json) chains together.
The name is a small lie, same as the rest of this pack: there's no neural anything here. It's per-pixel math over tensors, the kind of thing CapCut does in a panel. What you're buying is that it happens inside your node graph, on a frame batch, with the timing keyframed as three numbers instead of a timeline.
How it works
Feed it an IMAGE batch (frames) and it computes an alpha value for every frame: from start_alpha_ratio at frame 0 up to middle_alpha_ratio at middle_frame, then on to end_alpha_ratio at the last frame. Each frame is blended against a solid background_color (a hex string like #000000) at that frame's alpha, and it hands back two outputs:
blended_frames- the composited sequence, ready to go to a video encoder.alpha_masks- a flat mask per frame holding that frame's alpha. Wire it into anything that wants a transition mask.
The three values are straight linear ramps, no easing. If you want an ease, you'll have to fake it by tweaking the midpoints.
The inputs that actually matter
start_alpha_ratio,middle_alpha_ratio,end_alpha_ratio- the three transparency stops. Here's the counterintuitive bit: alpha 1.0 means fully foreground (opaque), 0.0 means fully background. Defaults 0.3 → 0.5 → 0.8 give a gentle push toward the frame at the end.middle_frame- which frame the ramp pivots on.blend_mode-normal,multiply,screen,overlay,soft_light.
One quirk worth knowing before it bites you: blend_mode only actually does anything in normal. Looking at the source, when you pick multiply/screen/overlay/soft_light the node throws away the alpha ramp entirely and applies the full-strength blend math - your fade timing just stops happening. So the alpha controls are a normal-mode feature. If you're using a blend mode, the alpha_ratio inputs are decorative.
Installing it
Via ComfyUI Manager, search "ComfyUI_SwiftCut" and hit install, or clone it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/yichengup/ComfyUI_SwiftCut
Then restart ComfyUI. The pack's requirements.txt is just torch, Pillow, numpy - nothing heavy, no models to download. It's one of the rare ComfyUI packs you can install without hunting down a checkpoint.
Where people get burned
The background_color is a hex string, and the shipped version has a genuine bug: the background fill assumes a channel-first tensor layout, but ComfyUI hands out [B,H,W,C]. I tested it - a colored background like #FF0000 renders as horizontal stripes, not a solid fill. The default #000000 is invisible because black-on-black, which is probably why nobody's filed a loud bug about it. Practical advice: treat this node as "fade to black (or very near black)" and it'll never surprise you. If you genuinely need to fade to a specific color, it's a couple lines of numpy in an expression node instead.
Also remember the example workflow: this node eats whatever the lens node spit out and hands the result to ImageBatchBlend / VHS_VideoCombine. It's one stage in a chain, not a whole edit - keep your expectations set to "transition tool."
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| background_color | STRING | #000000 | — |
| start_alpha_ratio | FLOAT | 0.300–1 | — |
| middle_alpha_ratio | FLOAT | 0.500–1 | — |
| end_alpha_ratio | FLOAT | 0.800–1 | — |
| middle_frame | INT | 151–120 | — |
| blend_mode | COMBO | normal | 5 options: normal, multiply, screen, overlay, soft_light |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| blended_frames | IMAGE | — |
| alpha_masks | MASK | — |