Stable Video Diffusion Simple Img2Vid
The one-node way to run Stable Video Diffusion
- image
- IMAGE
Drop in an image, get a short clip out. That's the whole pitch. This node folds the pack's three-step pipeline - load the model, sample, decode - into a single box, so you don't have to wire SVDModelLoader → SVDSampler → SVDDecoder by hand. If you just want to see Stable Video Diffusion animate a still and you don't care about the internals yet, this is the node you reach for.
Quick reality check before you sink an afternoon into it. Stable Video Diffusion was Stability AI's first video model, released November 2023, and at the time it was a genuine milestone: the first local image-to-video that actually held together. It has since been thoroughly lapped. Wan 2.2 took the quality crown in 2025, LTX owns the speed niche, and Hunyuan sits in between - SVD barely comes up in community threads anymore. There's also no text prompt anywhere in this node: SVD is pure image-to-video, so the model alone decides what moves and how. You nudge it, you don't direct it. Fine for a quick "make this photo breathe" clip, wrong tool if you have a shot in your head.
How it works
Under the hood it's the standard SVD pipeline compressed into one call. The node loads your chosen checkpoint, runs the diffusion sampler on your input image to produce a latent video, then decodes that latent into a stack of image frames. It's the same math as running the three separate nodes - you just lose the ability to reuse a loaded model across runs or to tap the intermediate latent. For a first pass, that's a fair trade.
The inputs that matter
There's a long parameter list here, but only a few earn your attention on day one:
checkpoint- picksvd.safetensorsfor a 14-frame clip orsvd_xt.safetensorsfor the 25-frame "XT" version. This choice should matchnum_frames(14 and 25 respectively); mismatch it and you're fighting the model.motion_bucket_id(default 127) - the master motion dial, and it runs 0–255. Low means barely-there drift; high means everything lurches. 127 sits deliberately in the middle. This is your single biggest lever over how the clip feels.decoding_t(default 14) - how many frames get decoded at once. It's a VRAM knob, not a quality one. Turn it down if the decode step blows up your GPU.
The rest - num_steps (25), fps_id (6, the frame-rate the model conditions on), cond_aug (0.02, how much noise gets mixed into your source image), seed (23), and device (cuda) - you can leave alone until you have a reason not to. The single output is IMAGE: a batch of frames, which you feed straight into a video-combine or save-as-webp/mp4 node to actually get a playable file.
How to install it
Two ways, same result:
- ComfyUI Manager - search for ComfyUI Stable Video Diffusion (author thecooltechguy, one of the folks behind comfyworkflows.com), install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/thecooltechguy/ComfyUI-Stable-Video-Diffusion, thencd ComfyUI-Stable-Video-Diffusion && python install.py, and restart.
Note that manual install runs a custom install.py, not the usual requirements.txt - it pulls in Stability's own dependency stack, so it's heavier and slower than a typical node pack. Then grab the models. Download them from HuggingFace into ComfyUI/models/svd/: svd.safetensors and svd_xt.safetensors (and their _image_decoder siblings if you want them). These are multi-gigabyte files, so start that download before you go make coffee.
Common issues & troubleshooting
"No checkpoints found" / the dropdown is empty. The models have to live in ComfyUI/models/svd/, not the usual checkpoints folder. This pack looks in its own directory; if you dropped the files in the wrong place, the node can't see them.
Out of memory during decode. Lower decoding_t. Decoding a whole video's worth of frames at once is the memory spike, and this parameter caps how many it does per batch. Dropping it to 8 or lower trades a little speed for staying alive.
It moves too much, or not at all. That's motion_bucket_id. Nudge it down for subtle motion, up for drama - but SVD gets incoherent at the extremes, so stay away from 0 and 255 unless you're deliberately going for glitch.
You want it to move a specific thing. You can't. There's no prompt input; the model animates the whole frame however it sees fit. If that's a dealbreaker, this is your sign to look at Wan 2.2 instead, where prompted image-to-video is the standard workflow.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| checkpoint | COMBO | svd.safetensors | 4 options: svd.safetensors, svd_image_decoder.safetensors, svd_xt.safetensors, svd_xt_image_decoder.safetensors |
| num_frames | INT | 14 | — |
| num_steps | INT | 25 | — |
| motion_bucket_id | INT | 127 | — |
| fps_id | INT | 6 | — |
| cond_aug | FLOAT | 0.02 | — |
| seed | INT | 23 | — |
| decoding_t | INT | 14 | — |
| device | COMBO | 2 options: cuda, cpu |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |