Nodes/comfyui-timesaver/TS Frame Interpolation
ComfyUI Node

TS Frame Interpolation

Buttery-smooth video from choppy model output

By AlexYez·Created 2 years ago·Updated about 22 hours ago· 12
TS Frame Interpolation
  • images
  • reference
  • images
model_namerife_v4.26.safetensors
modeslowdown_x
slowdown_factor2.0
source_fps24.0
target_fps60.0
max_timestep_batch8
tile_size0
tile_overlap64
target_frames0
fillhold_start

Video models output choppy footage. It's not your settings - most of them generate 12–24 frames that you're expected to smooth afterward. TS Frame Interpolation is that afterward. It takes an image batch and generates intermediate frames with RIFE or FILM models, turning a 12 fps animation into 24/48/60 fps or slowing a clip down to a fraction of its speed with genuinely interpolated motion instead of just duplicating frames.

If you're on the LTX, WAN, or Hunyuan path, this is the node you put between the sampler and the preview/saver. It's also the honest answer to "why is my video jerky": RIFE-class interpolation is what people reach for, and it's what this wraps.

How it works

RIFE and FILM are optical-flow-style networks trained to predict what frame sits between two frames. Feed it frame A and frame B and it invents the in-between. The node's mode dropdown decides what you do with that power:

  • slowdown_x - extends the clip by slowdown_factor. 2.0 doubles the length, inserting one interpolated frame per source frame. This is the "slow motion that actually moves" mode.
  • fps_conversion - resamples the clip from source_fps to target_fps. 24 → 60, say, generating the missing frames and re-timing the result.

The model_name dropdown lists RIFE checkpoints from ComfyUI/models/rife/ (default rife_v4.26.safetensors), and the README promises missing files are downloaded automatically on first use.

The other inputs are VRAM management. max_timestep_batch (default 8) caps how many intermediate timestamps are evaluated at once - lower it if long clips blow up memory. tile_size (default 0 = auto) forces tiled interpolation for high-resolution video, with tile_overlap controlling the seam blend. If you've done tiled diffusion, the idea is the same: split the work so it fits.

The one output

images - the interpolated sequence at the requested cadence. Wire it into TS Animation Preview to check the motion, or straight into the saver for the final file.

Installing it

Part of comfyui-timesaver (ComfyUI Manager → "Timesaver", or):

cd ComfyUI/custom_nodes
git clone https://github.com/AlexYez/comfyui-timesaver
cd comfyui-timesaver
python -m pip install -r requirements.txt

Restart ComfyUI. RIFE weights download on first use into models/rife/.

Where people get burned

The OOM retry behavior is worth knowing: on out-of-memory, the node automatically retries with a smaller tile size rather than just crashing - that's a design decision, and it usually saves the run, but it means a slow first attempt isn't necessarily a misconfiguration. Real tips: keep max_timestep_batch modest for long clips, drop tile_size if you're fighting VRAM, and remember the input needs at least two frames - feeding a single still will just error out. Also be realistic about what interpolation does: it smooths motion, it doesn't invent content. A 2× slowdown on fast-moving, high-detail footage will show artifacts at the edges no matter which model you pick - that's the physics of the job, not a bug in the node.

CategoryTS/Video

Inputs (12)

NameTypeDefaultDescription
imagesIMAGEInput frame sequence to interpolate. At least 2 frames are required.
model_nameCOMBOrife_v4.26.safetensorsRIFE checkpoint stored in ComfyUI/models/rife. Missing files are downloaded automatically.
modeCOMBOslowdown_xslowdown_x extends the clip length. fps_conversion resamples motion to a target FPS. match_length restores an exact frame count after frames were trimmed.
slowdown_factorFLOAT2.01–16Used when mode is slowdown_x.
source_fpsFLOAT24.01–240Used when mode is fps_conversion.
target_fpsFLOAT60.01–240Used when mode is fps_conversion. Must be greater than or equal to source_fps.
max_timestep_batchINT81–64Maximum number of intermediate timestamps evaluated together. Lower values reduce VRAM peaks on long clips.
tile_sizeINT00–40960 = automatic. Positive values force tiled interpolation for high-resolution video.
tile_overlapINT6416–512Blend overlap between tiles. Higher values reduce seams but use more compute.
target_framesINT00–100000Used when mode is match_length and reference is not connected. 0 = take the length from reference.
fillCOMBOhold_startUsed when mode is match_length. hold_start repeats the first frame, hold_end repeats the last one, and both keep the surviving frames on their original indices. stretch resamples the whole clip with the model instead, which is smoother but shifts every frame in time.
referenceoptIMAGEUsed when mode is match_length: the original batch, read only for its frame count.

Outputs (1)

NameTypeDescription
imagesIMAGEInterpolated frame sequence with the requested cadence.