Nodes/ComfyUI/WanImageToVideo
ComfyUI Node Runs on cloud

WanImageToVideo

The node that turns a still into a Wan video — and where the 81-frame ceiling lives

By Comfy-Org·Created 4 years ago·Updated 31 minutes ago· 129,926
WanImageToVideo
  • positive
  • negative
  • vae
  • clip_vision_output
  • start_image
  • positive
  • negative
  • latent
width832
height480
length81
batch_size1

Image-to-video is the mode that made Wan the community's default local video model, and this is the node that wires an I2V pipeline together. It does three jobs at once: it takes your positive and negative conditioning, it builds the empty latent video tensor, and it tucks your start image (and CLIP-Vision embedding, if you give it one) into that latent and into the conditioning so the model knows what the first frames look like. Everything after this node - sampling, decoding - is downstream.

How it works

The latent it creates is a [batch, 16, T, H, W] tensor with 4x temporal compression: length frames become ((length - 1) // 4) + 1 latent frames. That's why the Wan VAE matters here - you have to give it a vae that matches the checkpoint you're sampling with. When you provide a start_image, the node upscales it to your width/height, encodes it with that VAE, and writes the encoded frames into the front of the latent. It also builds a concat_mask - a mask that's zero (locked, no sampling) over the conditioned frames and one elsewhere - and attaches it, plus the latent, to both positive and negative conditioning as concat_latent_image. The optional clip_vision_output goes into the conditioning too; the Wan I2V models were trained on a CLIP-Vision embedding of the first frame, and feeding it makes the model hold the subject far more consistently.

The inputs that matter

  • width / height / length / batch_size - the canvas. Defaults are 832x480 at 81 frames. The community sweet spot for quality is 720p-ish (1280x720) if your card can take it; 81 frames is the reliable default because beyond it Wan starts to repeat and degrade - 121 frames works with luck, more means a VACE or chaining setup.
  • start_image - optional, but it's the whole point of the node. Leave it empty and you've basically built a text-to-video latent instead.
  • clip_vision_output - optional, from a CLIPVisionEncode fed by a Wan-compatible vision model. Include it for real I2V.

The three outputs are positive, negative, and latent - all three go into your KSampler, with the latent on the latent input.

What models you need

The node ships with ComfyUI core. The models are the actual download: a Wan 2.1 or 2.2 I2V checkpoint (Wan2.1-I2V-14B is the classic, the 5B TI2V fits 8GB with offloading), the Wan VAE, the umt5 text encoder, and for I2V the CLIP-Vision model. Everything lands in the usual models/ folders, and ComfyUI's official example workflows show the exact wiring.

Where people get burned

VRAM and patience. The 14B at full quality is 15-40 minutes a clip on a 4090, and no speed LoRA gives that up for free. GGUF quants (Q5_K_M) get the 14B onto 10-16GB. The 81-frame wall. If your clip comes back looping or repeating, that's the model's context limit, not a bug. Wrong VAE. Mixing the Wan 2.1 VAE with a 2.2 checkpoint (or vice versa) gives you muddy or garbled output, and it's the first thing to check when frames look like oil paint. Also worth remembering: Wan 2.2 is the last open Wan - everything after it is API, so the checkpoint you already have is the one you'll be building on.

Categorymodel/conditioning/wan

Inputs (9)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–16384
heightINT48016–16384
lengthINT811–16384
batch_sizeINT11–4096
clip_vision_outputoptCLIP_VISION_OUTPUT
start_imageoptIMAGE

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT