WanVideo Free Init Args
FreeInit for Wan, and when the 3x cost is worth it
- freeinit_args
If your Wan clips come out with flickery, incoherent motion - the background shimmering, details boiling frame to frame - this is one of the levers that can settle them down. It's a config node for FreeInit, a temporal-consistency trick that costs you generation time in exchange for steadier video. You don't wire it into the video; you wire it into the Wan sampler as a bundle of settings.
FreeInit comes from a research paper (TianxingWu/FreeInit) and the node description quotes its own pitch: "a concise yet effective method to improve temporal consistency of videos generated by diffusion models." The word "concise" is doing a lot of work - the idea is genuinely simple, the cost is real, and whether you need it depends heavily on your base model.
How it works
Here's the mechanism, because it explains the cost. A diffusion video is initialized from random noise. FreeInit's observation is that the low-frequency part of that starting noise quietly controls the overall temporal layout, and fresh random noise has a bad low-frequency structure for coherence. So FreeInit samples your clip once, takes the low-frequency component of the result, keeps the high-frequency component of fresh noise, and re-samples from that combined starting point. Repeat a few times and the motion locks in.
The catch is right there in "sample once, then re-sample." Each iteration is a full denoising pass. Set it to 3 iterations and you've roughly tripled your render time for one clip. There's no free lunch - this buys coherence with compute.
The inputs and outputs that matter
Everything here is a required knob, and the output is a single freeinit_args bundle you plug into the sampler.
freeinit_num_iters(default 3) - how many re-sampling passes. This is the cost dial. 2 is often enough; 3 is the default; higher rarely pays.freeinit_method(defaultideal) - the low-pass filter used to split frequencies:butterworth,ideal,gaussian, ornone.noneeffectively disables the filtering. The default is a fine starting point.freeinit_d_sandfreeinit_d_t(both default 1) - spatial and temporal cutoff for that filter.d_tis the one that matters for video - it controls how much temporal structure carries between iterations. Lower it if the effect is too aggressive and motion goes stiff.freeinit_n(default 4) - the order of the Butterworth filter, only relevant when you pickbutterworth.
Output: freeinit_args → the corresponding input on WanVideoSampler.
How to install it
ComfyUI Manager: search ComfyUI-WanVideoWrapper, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
then restart. This node downloads nothing - it's pure configuration, and it works with whatever Wan model you've already loaded.
Common issues & troubleshooting
Generation suddenly takes 3x longer. Working as designed. freeinit_num_iters multiplies your sampling time by that number. If you forgot you left this in the graph, that's your culprit - bypass the node or drop iterations to 1.
It's not doing much. On modern Wan 2.2 with a decent sampler and enough steps, motion is already fairly coherent, so FreeInit has less to fix than it did on older video models. It earns its keep most on low-step / speed-LoRA runs and on longer clips where temporal drift shows. If your base output is already clean, this is a tax with no benefit - cut it.
Motion went stiff or dead. You've over-constrained the temporal structure. Lower freeinit_d_t, drop an iteration, or switch freeinit_method toward gaussian for a softer split. FreeInit trades some motion amplitude for consistency; push it too hard and everything freezes into a near-still shot.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| freeinit_num_iters | INT | 31–10 | Number of FreeInit iterations |
| freeinit_method | COMBO | ideal | Frequency filter type |
| freeinit_n | INT | 41–10 | Butterworth filter order (only for butterworth) |
| freeinit_d_s | FLOAT | 1.000–10 | Spatial filter cutoff |
| freeinit_d_t | FLOAT | 1.000–10 | Temporal filter cutoff |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| freeinit_args | FREEINITARGS | — |