WanImageToVideo
The node that turns a still into a Wan video — and where the 81-frame ceiling lives
- positive
- negative
- vae
- clip_vision_output
- start_image
- positive
- negative
- latent
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.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| width | INT | 83216–16384 | — |
| height | INT | 48016–16384 | — |
| length | INT | 811–16384 | — |
| batch_size | INT | 11–4096 | — |
| clip_vision_outputopt | CLIP_VISION_OUTPUT | — | |
| start_imageopt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |