ComfyUI Frame Interpolation: RIFE vs FILM, Models and FPS Math
ComfyUI frame interpolation today: the built-in RIFE and FILM nodes, the Fannovel16 node pack, exact model files, the fps math for Wan, and the common errors.
Quick answer
ComfyUI frame interpolation no longer needs a custom node. Since release v0.20.1 (2026-04-27), ComfyUI ships two built-in nodes: Load Frame Interpolation Model and Run Frame Interpolation Model. They run RIFE or FILM models that you put in ComfyUI/, and Comfy-Org publishes the files in its Comfy- repository on Hugging Face. The bundled template is called "Frame Interpolation: FILM or RIFE".
The older route still works: the ComfyUI-Frame-Interpolation node pack by Fannovel16, with its RIFE VFI, FILM VFI and eleven more VFI nodes. It downloads its own model files on first use and keeps them inside its own folder, not in models/.
Whichever you use, the frame rate is the part people get wrong:
- Interpolating a clip with a multiplier of 2 turns
Nframes into(N − 1) × 2 + 1, not2N. - To keep the clip the same length, multiply the output frame rate by the same number. A Wan 2.2 14B clip is 81 frames at 16 fps; after ×2 it is 161 frames, and it belongs at 32 fps.
- Leave the save node at 16 fps and the same 161 frames play for about 10 seconds instead of 5. That is slow motion, not smoother motion.
We read ComfyUI's source, the node pack's source and issue tracker, and the Hugging Face API on 2026-10-10. We have not timed or measured any interpolation run ourselves, so this page has no speed or VRAM figures of ours.
The built-in nodes
Added by kijai in ComfyUI pull request #13258, merged 2026-04-22. The pull request describes it as PyTorch-only support for RIFE (MIT) and FILM (Apache 2.0).
| Node (display name) | Node id | Inputs |
|---|---|---|
| Node (display name)Load Frame Interpolation Model | Node idFrameInterpolationModelLoader | Inputsmodel_: a file in models/ |
| Node (display name)Run Frame Interpolation Model | Node idFrameInterpolate | Inputsinterp_, images (at least 2 frames), multiplier: 2 to 16, default 2 |
There is nothing else to set. The loader detects from the file's contents whether it is FILM or RIFE, and runs it in fp16 when ComfyUI decides the GPU supports it, fp32 otherwise. If the GPU runs out of memory mid-clip, the node halves the number of in-between frames it computes at once and tries again, down to one.
The model files
From Comfy-, folder frame_. Sizes are decimal megabytes from the Hugging Face API.
| File | Bytes | Size |
|---|---|---|
Filefilm_ | Bytes68,882,302 | Size68.9 MB |
Filerife_ | Bytes22,674,688 | Size22.7 MB |
Filerife_ | Bytes86,669,816 | Size86.7 MB |
Filerife_ | Bytes22,506,384 | Size22.5 MB |
Filerife_ | Bytes22,674,688 | Size22.7 MB |
Filerife_ | Bytes22,908,216 | Size22.9 MB |
ComfyUI/
└── models/
└── frame_ interpolation/
├── film_ net_ fp16 .safetensors
└── rife_ v4.25 .safetensors
The bundled template loads film_. If you want RIFE, pick a RIFE file in the loader; nothing else in the graph changes. RIFE's own Practical-RIFE README recommends 4.25 by default for most scenes.
The loader only accepts RIFE files with five flow blocks, the layout RIFE moved to with 4.25. Older RIFE checkpoints such as rife49 from the node pack below are rejected with Unrecognized frame interpolation model format.
What the template does with the frame rate
The template's subgraph has an integer Multiplier and a switch labelled Apply multiplier to FPS?, on by default. When it is on, a math node multiplies the source video's frame rate by the multiplier before the video is saved, so the clip keeps its length. Turn it off and you get slow motion instead.
The Fannovel16 node pack
Fannovel16/, version 1.0.11 in its pyproject, MIT licence. Its nodes sit in the category ComfyUI-:
| Node | Model files it offers | Needs CuPy |
|---|---|---|
| NodeRIFE VFI | Model files it offersrife47, rife49 (default), rife417, rife426, sudo_ | Needs CuPyNo |
| NodeFILM VFI | Model files it offersfilm_ | Needs CuPyNo |
| NodeGMFSS Fortuna VFI | Model files it offersGMFSS Fortuna files, plus rife46 | Needs CuPyYes |
| NodeAMT VFI | Model files it offersamt-, amt-, amt-, gopro_ | Needs CuPyNo |
| NodeIFRNet VFI | Model files it offersFour IFRNet_ files | Needs CuPyNo |
| NodeIFUnet VFI | Model files it offersIFUNet | Needs CuPyNo |
| NodeM2M VFI | Model files it offersM2M | Needs CuPyYes |
| NodeSepconv VFI | Model files it offerssepconv | Needs CuPyYes |
| NodeSTMFNet VFI | Model files it offersstmfnet; at least 4 frames, 2× only | Needs CuPyYes |
| NodeFLAVR VFI | Model files it offersFLAVR_, FLAVR_, FLAVR_; at least 4 frames | Needs CuPyNo |
| NodeCAIN VFI | Model files it offerspretrained_ | Needs CuPyNo |
| NodeATM VFI | Model files it offersThree atm- files; 2× only | Needs CuPyNo |
| NodeMOMO VFI | Model files it offersmomo-, momo-; 2× only | Needs CuPyYes |
The "Needs CuPy" column comes from the code: only the GMFSS Fortuna, M2M, MoMo, Sepconv and STMFNet model code imports the CuPy kernels. RIFE VFI and FILM VFI run without it. The pack also ships a few helper nodes, such as Make Interpolation State List, which marks frames to skip.
The RIFE VFI node is displayed as "RIFE VFI (recommend rife4.25+)", but no 4.25 file is in its list. The nearest is rife426.
Install
Install it through ComfyUI Manager, or clone it into custom_ and run its installer from the Python that runs ComfyUI:
cd ComfyUI/ custom_ nodes/ ComfyUI- Frame- Interpolation
python install .py
On the Windows portable build, the README says to run install, which calls install with the portable python_ interpreter. install installs the plain requirements, then tries to install CuPy matched to the CUDA version it finds in your PyTorch install.
Where its models come from and where they go
The pack downloads each file the first time a node uses it, into its own folder: ckpts/ inside the node pack, for example ckpts/. ComfyUI/ is not used; an open issue asks for that.
It tries these sources in order, from vfi_:
styler00dollar/releases, tagVSGAN- tensorrt- docker modelsFannovel16/releases, tagComfyUI- Frame- Interpolation modelsdajes/releases, tagframe- interpolation- pytorch v1.0.0- For
rife47,.pth rife49and the.pth sudo_file only: a list of third-party Hugging Face mirrorsrife4
The first source no longer carries any RIFE file, so a first run prints Failed! Trying another endpoint. before it succeeds. That line is normal. The sizes on the sources that do have them:
| File | Source | Bytes | Size |
|---|---|---|---|
Filerife47 | SourceFannovel16 releases | Bytes21,344,827 | Size21.3 MB |
Filerife49 | SourceFannovel16 releases | Bytes21,345,274 | Size21.3 MB |
Filerife417 | SourceFannovel16 releases | Bytes21,497,983 | Size21.5 MB |
Filerife426 | SourceFannovel16 releases | Bytes24,620,531 | Size24.6 MB |
Filefilm_ | Sourcedajes/frame-interpolation-pytorch | Bytes137,905,674 | Size137.9 MB |
The RIFE VFI settings
From the node's code, with its defaults:
| Input | Default | What it does |
|---|---|---|
Inputckpt_ | Defaultrife49 | What it doesWhich RIFE file |
Inputmultiplier | Default2 | What it doesIn-between frames per gap, plus one. 2 adds one frame per gap |
Inputclear_ | Default10 | What it doesEmpties the GPU cache every so many frames. Lower is less likely to run out of memory and slower, per the README |
Inputfast_ | Defaulton | What it doesThe README says it does nothing from RIFE 4.5 on |
Inputensemble | Defaulton | What it doesSwitched off by the code for rife426 |
Inputscale_ | Default1.0 | What it does0.25, 0.5, 1.0, 2.0 or 4.0. RIFE's own README suggests 0.5 for 4K input, and 2.0 if the output shows a disordered pattern |
Inputdtype | Defaultfloat32 | What it doesfloat16 or bfloat16 to save memory. The code comments claim about half the VRAM and twice the speed for fp16; nobody has published a measurement |
Inputtorch_ | Defaultoff | What it doesCompiles the model; the first run is slower |
Inputbatch_ | Default1 | What it doesIn-between frames computed per GPU call; higher uses more VRAM |
FILM VFI has only ckpt_, clear_ and multiplier.
The frame rate math
Interpolation adds frames between each pair of frames you already have. With N input frames there are N − 1 gaps, and a multiplier of m puts m − 1 new frames in each gap. Both the built-in node and the node pack's RIFE and FILM nodes return:
output frames = (N − 1) × m + 1
The clip only keeps its length if the frame rate goes up by the same m. Using the defaults of ComfyUI's own templates:
| Source clip (template default) | Frames × fps | Multiplier | Output frames | Save at | Length |
|---|---|---|---|---|---|
| Source clip (template default)Wan 2.2 14B T2V or I2V | Frames × fps81 at 16 fps | Multiplier2 | Output frames161 | Save at32 fps | Length5.03 s |
| Source clip (template default)Wan 2.2 14B T2V or I2V | Frames × fps81 at 16 fps | Multiplier3 | Output frames241 | Save at48 fps | Length5.02 s |
| Source clip (template default)Wan 2.2 5B TI2V | Frames × fps121 at 24 fps | Multiplier2 | Output frames241 | Save at48 fps | Length5.02 s |
| Source clip (template default)Wan 2.2 14B, saved at 16 fps | Frames × fps81 at 16 fps | Multiplier2 | Output frames161 | Save at16 fps | Length10.06 s, slow motion |
The built-in template does this multiplication for you. With the node pack and VideoHelperSuite's Video Combine, you set frame_ yourself: source fps times the multiplier. The node pack takes whole-number multipliers only, so 16 fps becomes 32 or 48, never exactly 24 or 30.
Interpolation does not fix the lightx2v slow-motion problem. That one is about how far things move in the frames the model generated, and doubling the frames keeps that motion; it only makes it smoother. Our Wan 2.2 lightx2v LoRA page covers what lightx2v has said about it.
GIMM-VFI, the third option
Kijai's ComfyUI- wraps GIMM-VFI, a different interpolation model, and ComfyUI's template list has a "Frame Interpolation: GIMM-VFI" workflow that uses it with VideoHelperSuite. Before you choose it, two things from its repository:
- It needs CuPy. Its requirements list
cupy-.cuda12x>=13.3.0 - Its licence is non-commercial. The repository and the model files carry the S-Lab License 1.0, which permits redistribution and use for non-commercial purposes only.
Its node downloads the weights from Kijai/ into ComfyUI/. The two GIMM files are 79,204,556 bytes (gimmvfi_, 79.2 MB) and 122,632,368 bytes (gimmvfi_, 122.6 MB), plus a flow model for each.
Common errors
| Error or symptom | Node | Cause and fix |
|---|---|---|
Error or symptomNo module named 'cupy', or CuPy failing to build during install | NodeNode pack, GMFSS and others | Cause and fixCuPy did not install. RIFE VFI and FILM VFI do not need it. install has no CUDA 13 branch, so on a CUDA 13 PyTorch it falls back to the cupy- package, which users report fails to build. A pull request adding cupy- is open, not merged |
Error or symptomFailed to auto- | NodeNode pack, CuPy nodes | Cause and fixRaised by CuPy. In the open issue, a user suggests checking that the CUDA_ environment variable points at an installed CUDA toolkit. No maintainer reply |
Error or symptomTried all urls to download rife46 | NodeGMFSS Fortuna VFI | Cause and fixNone of the sources the node tries still has the file. Three issues about it are open and no fix has been merged. Use RIFE VFI or the built-in nodes instead |
Error or symptomError(s) in loading state_, mentioning teacher. keys | NodeRIFE VFI with rife426 | Cause and fixOpen since 2026-03-31 and still reported on 2026-10-08. The maintainer reuploaded the 4.17 and 4.26 files once in March and said to delete the ckpts/ folder so they download again. If that fails, use rife417, or Comfy-Org's rife_ with the built-in nodes, whose loader discards the teacher. keys |
Error or symptomValue not in list: scale_ | NodeRIFE VFI | Cause and fixAppeared for one user after a ComfyUI update. The issue is open. One user got past it by editing the node's source; that is not a maintainer fix |
| Error or symptomOut of memory partway through a clip | NodeNode pack | Cause and fixLower clear_, keep batch_ at 1, try float16. The built-in node retries with smaller batches by itself |
| Error or symptomSystem RAM fills and the GPU sits idle | NodeRIFE VFI | Cause and fixAn open issue from 2025 has many "same here" replies and no maintainer answer; a pull request titled as a fix for RIFE VFI running on the CPU is open, not merged. Every frame is also held in system RAM as a 32-bit image, so long, high-resolution clips need a lot of it |
If the run stops with an out-of-memory error before interpolation even starts, the problem is the video model, not the interpolator. Our ComfyUI out-of-memory page and troubleshooting page cover that.
Where the advice online disagrees
- "You need the Fannovel16 pack." True until April 2026. Many tutorials predate the built-in nodes.
- ComfyUI's tutorial page says the workflow contains custom nodes. The built-in template,
utility_, uses only core nodes. The older "Frame Interpolation: FILM" template does need the Fannovel16 pack and VideoHelperSuite, and both templates link to the same tutorial page.video_ frame_ interpolation .json - The template's note lists
film_at 65.7 MB. Hugging Face shows 68.9 MB. Both are right: the note counts in binary megabytes (MiB).net_ fp16 .safetensors - "Use RIFE 4.9." It is still the node pack's default. RIFE's own README recommends 4.25, which only the built-in route offers as a ready file.
What nobody has published
- A speed or VRAM comparison between RIFE and FILM inside ComfyUI, on a named consumer GPU, with versions stated. RIFE's ECCV README claims more than 30 fps for 2× 720p on a 2080 Ti, with its own script, not ComfyUI.
- A side-by-side quality test of RIFE 4.25, 4.26 and FILM on Wan or LTX output.
Interpolation is not part of the system requirements checker, whose only preset is MiniMax H3. The MiniMax H3 templates on our workflows page already save at 24 fps.
Licence and downloads
- The Fannovel16 node pack is MIT. Its model files come from the sources listed above, each under its own project's terms.
- RIFE: Practical-RIFE is MIT, and its README says the model links are under the same licence. FILM: Google Research's
frame-repository and theinterpolation dajesPyTorch port are both Apache 2.0. Comfy-is tagged "mit-and-apache-2.0".Org/ frame_ interpolation - GIMM-VFI: S-Lab License 1.0, non-commercial use only.
We do not host any of these files. Download them from the repositories named below.
GenVidKit is an independent guide. It is not affiliated with Comfy Org, Fannovel16, the RIFE authors, Google, Kijai, the GIMM-VFI authors or Hugging Face.
Sources
All read on 2026-10-10.
- ComfyUI
comfy_andextras/ nodes_ frame_ interpolation .py folder_— the built-in nodes, their inputs, the model folder and the RIFE file check.paths .py - ComfyUI pull request #13258 and ComfyUI releases — when the nodes were added and the first release with them.
- Comfy-Org/frame_interpolation — files, byte counts, folder and licence tag.
- Comfy-Org/workflow_templates — the three frame interpolation templates, and the Wan 2.2 templates' frame counts and fps.
- ComfyUI frame interpolation tutorial and FrameInterpolate node reference — the custom-nodes notice and the output frame formula.
- Fannovel16/ComfyUI-Frame-Interpolation — README,
install,.py install,.bat vfi_, each node's code, the licence, and theutils .py modelsrelease file sizes. - Issues #142, #138, #141, #134, #120, #111, #106, #93, #89 and #130, and pull requests #136 and #131 — the errors and their status.
- dajes/frame-interpolation-pytorch and styler00dollar/VSGAN-tensorrt-docker release assets — which download sources still carry which file.
- hzwer/Practical-RIFE and hzwer/ECCV2022-RIFE — the 4.25 recommendation,
scaleadvice, licence and the 2080 Ti claim. - google-research/frame-interpolation — FILM's licence.
- kijai/ComfyUI-GIMM-VFI and Kijai/GIMM-VFI_safetensors — CuPy requirement, licence, download folder and file sizes.