Nodes/comfyUI-LongLook/Wan FreeLong
ComfyUI Node

Wan FreeLong

The FreeLong node that fixes Wan's ping-pong motion

By shootthesound·Created 8 months ago·Updated 8 months ago· 166
Wan FreeLong
  • model
  • model
enabledtrue
blend_strength0.8
low_freq_ratio0.80
local_window_frames33
blend_start_block0
blend_end_block-1

If you've generated more than a couple of Wan 2.2 clips you know the three classic failures: the car drives forward, reverses, drives forward again (the "ping-pong"), the subject drifts into a different character halfway through, and the prompt's motion instruction just gets ignored. WanFreeLong is the flagship node of shootthesound's comfyUI-LongLook pack, and it attacks all three at once - not by training anything, but by patching Wan's attention at sampling time. It's the node that made the pack's chunked long-video workflows possible.

The mechanism comes from the FreeLong paper (NeurIPS 2024, "Training-Free Long Video Generation with SpectralBlend Temporal Attention"). Inside each transformer block, attention runs twice: a global stream over the full frame sequence (which captures overall motion direction) and a local stream over a sliding window (which preserves sharp detail). The two results get blended in the frequency domain with an FFT - low frequencies, which carry motion, come from the global stream; high frequencies, which carry detail, come from the local one. The filters are complementary (they sum to 1.0), windows overlap 50% with a cosine crossfade, and everything runs in float32 for numerical stability. Wan has 40 transformer blocks, so this is a nontrivial amount of patching - later pack versions optimized it to a single FFT and cached the window structure across all blocks.

The honest framing matters here. The README goes out of its way to say the consistent benefit is within the 81-frame window, not beyond it: fewer reversals, steadier subject identity, better prompt adherence. Single generations at 81+ frames "may help sometimes." So don't buy this as a length-extender - buy it as a consistency-improver. And consistency within a chunk is exactly what makes chunk chaining work: each 81-frame chunk ends with clean motion direction and a stable subject, so the last frame is a trustworthy anchor for the next chunk. FreeLong is the reason the pack's "unlimited length" trick isn't a pile of glitches.

The inputs are where you'll spend your time, but only three matter. model in, enabled toggle on (use it for A/B - the pack's example workflow literally shows with/without side by side). Then:

  • blend_strength (0.8) - how hard FreeLong pushes. Up for more consistency, down (0.4–0.6) if the image gets soft.
  • low_freq_ratio (0.8) - how much of the spectrum the global stream owns. Higher = smoother motion, lower = more dynamic but driftier.
  • local_window_frames (33) - the detail window. 33 works for 81-frame videos; for longer ones try ~40% of the total.

blend_start_block and blend_end_block exist for layer-range tweaking and you should leave them alone (-1 = all blocks). The output is a patched MODEL that goes straight into your sampler.

Installation is shared across the pack - no requirements.txt, no model downloads, it patches whatever Wan 2.2 checkpoint you load (community reports confirm GGUF quants work fine). ComfyUI Manager: search "comfyUI-LongLook", install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/shootthesound/comfyUI-LongLook.git

You'll still need VideoHelperSuite to save video out. When it shipped in December 2025, the release thread drew a genuinely enthusiastic reception - real users reproduced the car demo, ran it with GGUF and per-chunk LoRAs, and confirmed the transitions were "spot on." The one complaint that kept coming back wasn't this node's fault: character likeness still degrades across many chunks, which is the universal cost of chaining. Keep chunks to a handful or use per-chunk LoRAs if identity has to survive.

Categoryvideo/wan

Inputs (7)

NameTypeDefaultDescription
modelMODEL
enabledBOOLEANtrueTurn FreeLong on or off. Useful for comparing results with and without.
blend_strengthFLOAT0.80–1How strongly FreeLong affects the video. Higher = more consistent motion but slightly softer. Lower = sharper but may drift. 0.8 is optimal for most cases.
low_freq_ratioFLOAT0.800–1Balance between motion consistency and fine detail. Higher = smoother, more consistent motion. Lower = more dynamic but may drift. 0.8 is a good balance.
local_window_framesINT339–241How many video frames the detail-preservation looks at. Smaller = sharper details but may cause morphing. Larger = smoother transitions. 33 works well for 81-frame videos. For longer videos, try ~40% of total frames.
blend_start_blockINT0-1–40Advanced: Which model layer to start applying FreeLong. 0 = from the beginning. Most users should leave this at 0.
blend_end_blockINT-1-1–40Advanced: Which model layer to stop applying FreeLong. -1 = apply to all layers. Most users should leave this at -1.

Outputs (1)

NameTypeDescription
modelMODEL