Save WEBM
The built-in node that writes an actual .webm — alpha channel included
- images
- images
SaveWEBM is the output node that writes the images on your graph's last wire to an actual .webm file, straight into ComfyUI/output/. It's the one built-in way to get a WebM out of a generation, and - this is the part people don't expect - the only built-in saver that keeps true transparency when you feed it RGBA images.
The name oversells it a little. It only does WebM, and WebM is a niche you want deliberately: it's the format the web loves (VP9/AV1, no royalties, small files) and the one most video editors and phones treat as a second-class citizen. The community's default for finished clips is still H.264 MP4 - go back a year and the standard answer to "SaveWEBM is missing" on every Wan workflow thread was "just install Video Helper Suite and use VideoCombine instead." That's still fine advice for a final master. Reach for SaveWEBM when you're publishing on the web, need a transparent overlay, or want the smallest file that still looks right.
How it works
Under the hood it's PyAV: the node opens a container, adds a video stream, and encodes every frame in your IMAGE batch to it. You pick the codec, and the choice changes what you get:
- vp9 (
libvpx-vp9) - 8-bit color, and the only one that honors an alpha channel (yuva420p). If your images have a fourth channel, alpha lives or dies right here. - av1 (
libsvtav1) - 10-bit color (yuv420p10le), which means smoother gradients, but alpha is silently dropped and some players still hiccup on 10-bit.
The crf slider is the size/quality dial: higher = smaller and uglier, lower = bigger and cleaner. The default of 32 is on the lossy side; 18–24 is where most people land when quality matters. fps just sets the playback rate, and filename_prefix is the base name, so you get ComfyUI_00001_.webm in your output folder.
The inputs that matter
codec- vp9 or av1. Pick vp9 if you need alpha, av1 if you want 10-bit color at a smaller file.crf- 0–63, lower is better quality. The 32 default is fine for drafts; drop it for anything you'd show someone.fps- set this to your generation's real frame rate or the motion looks wrong.filename_prefix- what the file is called.
It passes its images input back out as an output socket (added in mid-2025, handy if you want to save and keep going), and it's an output node - the terminal stop of a branch.
A little history, because it explains the lore
SaveWEBM landed in February 2025 as the early experimental answer to "how do I get video out of ComfyUI." It was genuinely missing from older installs for a while, which is why that "node is missing" thread keeps resurfacing - if you're on a current build it's just there, in the video category, no install. The April 2025 commit that swapped AV1 from aom to the much faster SVT encoder and the June 2025 alpha-channel fix are the two updates that made it actually good.
Where people get burned
The classic one: you feed it RGBA expecting a transparent clip and pick av1 - the alpha is discarded, no warning. Transparency only survives on vp9. Second: 10-bit AV1 WebM files that play fine in your browser won't open in a lot of editors or older players, which reads as "my export is broken" when it isn't. And third: it writes .webm, full stop. If you need MP4, that's its sibling SaveVideo (or the trim/pack pipeline below).
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | RGBA images are saved with their alpha channel as transparency (vp9 codec only). | |
| filename_prefix | STRING | ComfyUI | — |
| codec | COMBO | 2 options: vp9, av1 | |
| fps | FLOAT | 24.000.01–1000 | — |
| crf | FLOAT | 320–63 | Higher crf means lower quality with a smaller file size, lower crf means higher quality higher filesize. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |