Nodes/TKNodes/Fade in Video
ComfyUI Node

Fade in Video

The two-minute fix for videos that start on a jarring hard cut

By trashkollector·Created about a year ago·Updated a day ago· 1
Fade in Video
  • images
  • images
fade_frames5
start_alpha0.50
fade_color0,0,0

Generated videos love to slam straight into frame one at full brightness - the model doesn't care about a gentle entry, it just starts. If you've ever rendered a clip that feels like it begins with a blink, Fade in Video is the drop-in fix: it ramps the first N frames up from a chosen color (black by default) so the shot eases in like a real edit.

It's a finishing node, not a generation node, and it's the kind of polish that costs nothing to add. The docstring is explicit about placement: run it right after VAE Decode, on the IMAGE tensor, before your video goes to the combiner.

How it works

Three required inputs: images (the decoded frame tensor [N, H, W, C]), fade_frames (how many frames to fade over, default 5, up to 240), and start_alpha (the starting opacity at frame one, default 0.5 - so at 0.5 you're starting half-transparent toward black, at 0.0 fully black). There's also an optional fade_color as an R,G,B string like "0,0,0" for fading from something other than black - white for a flash-in, or a color that matches your scene's grade.

The mechanism is a per-frame blend: each of the first N frames is lerped between the fade color and the original frame, with the alpha ramping linearly from start_alpha up to 1.0 by the final fade frame. Frame fade_frames reaches 100% opacity (the original image), everything after it is untouched, and frames are clamped so you never clip values. The ramp handles 4-channel RGBA too, keeping alpha at full.

The inputs that matter

  • fade_frames - the duration of the fade. 5 frames is a quick dip; 12–24 reads like a proper fade-in at 24fps. If you're doing a slow, moody opening, this is the dial you turn.
  • start_alpha - how dark frame one starts. The default 0.5 is oddly conservative (you can still see the shot at 50%); set it to 0 for a true from-black fade.
  • fade_color - leave it alone unless you specifically want a colored fade.

Output

A single IMAGE tensor, same shape as the input, with the first frames re-graded. Wire it straight into your combiner/saver.

Common issues

The main gotcha is start_alpha tripping people up: because the ramp starts at 0.5 by default, a "fade in" at default settings never actually goes to black - the first frame is already 50% visible. If your fade looks weak, that's why. Set start_alpha to 0 for a proper dip. Also note it fades the whole image uniformly - there's no spatial or motion masking here, which is fine for most purposes but won't do a location-based reveal. And as with the pack's dissolve node, it works on decoded frames, so don't try to sneak it into the latent path.

Installing it

Part of trashkollector/TKNodes ("ComfyUI Handy Nodes"). Install via ComfyUI Manager (search "Handy Nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/trashkollector/TKNodes

Restart, and it's under TKNodes. Pure torch math - no extra dependencies.

CategoryTKNodes

Inputs (4)

NameTypeDefaultDescription
imagesIMAGEDecoded video frames [N, H, W, C]
fade_framesINT51–240Number of frames to fade in over. Frame 'fade_frames' reaches 100%.
start_alphaFLOAT0.500–1Starting opacity at frame 1 (0.5 = 50%). Ramps up to 1.0 by fade_frames.
fade_coloroptSTRING0,0,0R,G,B (0-255) to fade in from. Default black.

Outputs (1)

NameTypeDescription
imagesIMAGE