RIFE VFI (recommend rife4.25+)
Smooth Frame Interpolation in ComfyUI
- frames
- optional_interpolation_states
- IMAGE
You generated a video and it looks janky. Not bad quality exactly, just choppy - the motion stutters because your model spat out 16 or 24 frames per second and your eye wants more. RIFE VFI is the node most people reach for to fix that. It takes your existing frames and invents new ones between them, so a 16fps clip becomes a smooth 32 or 64fps clip without regenerating a thing.
This is the standard back-half of pretty much every local video workflow. Wan, Hunyuan, LTX, AnimateDiff - they all generate at a low native frame rate to save compute, and then you interpolate up. The KB's Wan production pipeline literally spells it out: generate at 480p, interpolate for smooth motion, then upscale. RIFE is the fast, cheap, "good enough almost always" option for that middle step.
How it actually works
RIFE stands for Real-Time Intermediate Flow Estimation. Instead of morphing pixels blindly, it estimates the optical flow between two neighboring frames - where each bit of the image is heading - and synthesizes an in-between frame that respects that motion. That's why it handles smooth camera pans and steady motion beautifully, and why it can smear on fast, chaotic action or big occlusions (something appearing from behind something else). For anime and clean motion it's genuinely great. For a wild fight scene, you'll sometimes see ghosting.
The whole Frame Interpolation pack is a wrapper around a pile of research VFI models - RIFE, FILM, GMFSS, AMT, and friends - but RIFE is the one you'll use 90% of the time. It's the speed/quality sweet spot. If you want the absolute cleanest output and don't mind waiting, people reach for GIMM or FILM. But vanilla RIFE VFI is the sane default.
The inputs that matter
frames is your image batch in - wire it straight from whatever produced your video frames (a VAE Decode, a Load Images node, your sampler's output). The single IMAGE output is the interpolated batch, which you feed into a Video Combine / save node.
The three you'll actually touch:
multiplier- how many frames you end up with.2doubles your frame count,4quadruples it. Default is 2. This is the whole point of the node.ckpt_name- which RIFE model. Default isrife49.pth, and honestly it's fine. The node's own label recommends 4.25+, sorife426.pthis the newest/best in the list;sudo_rife4_269...is a community fine-tune some people prefer. Pick one, it downloads automatically the first time you run.clear_cache_after_n_frames- your OOM safety valve. Default 10. If you're interpolating a long clip and hitting out-of-memory errors, lower this. It costs a little speed and buys you a lot of headroom.
The rest you can mostly leave alone. ensemble (on by default) nudges quality up a touch for a small speed hit. scale_factor down to 0.5 can help with very high-motion or high-res footage. fast_mode is a trap for the unaware - the README notes it does nothing on rife4.5+ models (so rife47/49/417/426), because the network it toggled was removed. Leave dtype, torch_compile, and batch_size at their defaults unless you're deliberately tuning.
Installing it
Easiest path: ComfyUI Manager, search "ComfyUI Frame Interpolation," install, restart. Done.
Manual is a hair more involved than a normal node because it has real dependencies (notably cupy for the CUDA ops). cd ComfyUI/custom_nodes && git clone https://github.com/Fannovel16/ComfyUI-Frame-Interpolation, then run the pack's installer - install.bat on Windows, python install.py on Linux from inside your ComfyUI venv. On Windows especially, use install.bat; people who try to pip cupy by hand tend to have a bad afternoon. Model checkpoints aren't bundled - the one you pick downloads on first run.
Where people get burned
The slow-motion trap. This one bites everyone once. multiplier adds frames, it doesn't set playback speed. If you 4x your frames but leave your Video Combine node at 16fps, your clip just plays back in slow motion for 4x as long - not smoother, just slower. You have to bump the output fps by the same factor: 16fps × 4 = 64fps. Match them and you get the smooth result you wanted.
No NVIDIA card = pain. RIFE leans on cupy/CUDA. Mac and non-CUDA users hit device-mismatch errors ("found at least two devices, mps:0 and CPU"). Two escape hatches: switch ops_backend to taichi in the pack's config.yaml (experimental, not every node supports it), or just use FILM VFI from the same pack instead - it's the community's standard fallback on Apple silicon.
OOM on long clips. Interpolation holds a lot of frames in memory. Drop clear_cache_after_n_frames first, and consider interpolating in chunks rather than a 500-frame batch in one shot.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | rife49.pth | 5 options: sudo_rife4_269.662_testV1_scale1.pth, rife47.pth, rife49.pth, rife417.pth, rife426.pth |
| frames | IMAGE | — | |
| clear_cache_after_n_frames | INT | 101–1000 | — |
| multiplier | INT | 2 | — |
| fast_mode | BOOLEAN | true | — |
| ensemble | BOOLEAN | true | — |
| scale_factor | COMBO | 1 | 5 options: 0.25, 0.5, 1, 2, 4 |
| dtype | COMBO | float32 | 3 options: float32, float16, bfloat16 |
| torch_compile | BOOLEAN | false | Compile the model with torch.compile() for 10-30% faster inference after the first (warm-up) run. Requires PyTorch 2.0+. |
| batch_size | INT | 11–64 | Number of interpolation tasks per GPU call. Higher values improve throughput but use more VRAM. Set to 1 for the most conservative behaviour. |
| optional_interpolation_statesopt | INTERPOLATION_STATES | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |