Simple Frame Interpolation (VFI)
Frame interpolation with zero AI — no models, no downloads, just math
- images
- images
Every video workflow eventually needs frames you don't have. You generated 30fps and want 60. You want a slow-mo stretch. You made 24 frames and the timeline wants more. The default answer is RIFE - an AI model that does genuinely clever motion interpolation, but needs a model download, eats VRAM, and slows your queue down.
Simple Frame Interpolation (VFI) is the opposite of that. It's the node from the tiny ComfyUI-Simple-VFI pack that resamples a frame sequence using plain, boring, classic image-resize math. No model, no download, no weights. It finishes in a couple of seconds, doesn't care about your GPU's reputation, and gives you a "good enough" result when you just want more frames and don't need RIFE's quality.
How it works - resizing time like it's an image
The trick is clever and a little weird. Instead of estimating motion, the node treats your frame count as just another dimension of a picture. It reshapes the batch so that "which frame" becomes the height axis of a tall image, then hands that to ComfyUI's own built-in ImageScale node with whatever kernel you pick. The kernel resizes that axis from B frames to round(B × multiplier), and the result gets reshaped back into a normal batch. That's the whole mechanism: bilinear, bicubic or lanczos resampling pointed sideways at the time axis.
Because it's plain resampling, the quality ceiling is honest. It blends frames; it doesn't understand motion. Fast pans and things crossing the frame will ghost and smear in a way RIFE wouldn't. It's a temporal cheap trick, not a motion estimator - use it where the goal is "smooth enough," not "accurate."
The inputs that matter
- images - your batch of frames (
IMAGE). Everything else is a knob. - multiplier - the big one, and the most common gotcha. It multiplies the frame count, not "how many frames to add," and the default is 0.5 - which halves your frames. Set it to 2 for doubling, 3–4 for slow-mo. Yes, that means the default setting makes your video shorter, not longer.
- scale_method - which kernel.
nearest-exact(default) is fast and blocky;bicubicis the smooth sweet spot;lanczosandbislerpare sharpest but the README warns they're noticeably slower. Don't reach for them unless you really care about the extra edge. - gaussian_blur (on by default), blur_radius, blur_sigma, sharpen_alpha - a small motion-blur or sharpen pass applied across frames to hide blending seams. Positive
blur_sigmablurs (a motion-blur look), negative sharpens, andsharpen_alphacranks the sharpen when sigma is negative. Biggerblur_radiuscosts more VRAM; flipgaussian_bluroff if you want none of this.
The README also documents batch_size (default 15), your speed/memory trade-off - smaller uses less memory and more passes. Most people never touch it.
The output is a single images (IMAGE) tensor: your resampled sequence, same H×W, different frame count. Wire it into whatever turns frames into video - VHS Video Combine, a save-node, or an AnimateDiff-style pipeline that needs a specific number of frames. Its natural home is the "post-process my generated clip" slot.
Install
Install via ComfyUI Manager (search "ComfyUI-Simple-VFI"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/ComplexRobot/ComfyUI-Simple-VFI
Restart ComfyUI. No model files to hunt down - which is the entire point of the pack. One heads-up: the pack's pyproject.toml lists open-clip-torch as a dependency, but the code never imports it; it's a leftover. Manager may still try to install it. Let it, or ignore it - the node runs fine without.
When it's the right tool (and when it isn't)
Reach for this when you want fast, free, zero-download frame resampling: previewing a clip at 2×, stretching short generations, or decimating frames to speed up a heavier pipeline. Skip it when the video actually matters. For real motion-compensated interpolation you want RIFE (ComfyUI-Frame-Interpolation and friends), and the quality gap is obvious on anything with movement. This is the hammer for a quick temporal edit - not the tool for fine cabinet work.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| scale_method | COMBO | nearest-exact | 7 options: nearest, nearest-exact, bilinear, area, bicubic, lanczos, +1 |
| multiplier | FLOAT | 0.50 | — |
| gaussian_blur | BOOLEAN | true | — |
| blur_radius | INT | 2 | — |
| blur_sigma | FLOAT | 0.3-10–10 | — |
| sharpen_alpha | FLOAT | 0.100–5 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |