How to Convert MOV to a Transparent WebM
Last updated: · Written by the RenderAlpha team
Facts checked against the sources below on November 9, 2026. Every command was run on FFmpeg 9.0.2 with a 5 second 1280×720 test clip.
If you have a ProRes 4444 .mov with transparency, ffmpeg can turn it into a transparent WebM. Most failures come from two flags. We ran each command on one clip and recorded what happens when you leave a flag out.
Short answer
Run ffmpeg -i input.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -b:v 0 -crf 30 output.webm. In our test it turned a 96 MB ProRes 4444 clip into a 1.0 MB transparent WebM. Leaving out -pix_fmt yuva420p made ffmpeg 9.0.2 stop with an error, and reading a WebM without -c:v libvpx-vp9 dropped its alpha.
Before you start
The source must already have an alpha channel. A ProRes 4444 file does; check it with the first command below. We made one from our demo clip, and ffprobe reported profile=4444 and pix_fmt=yuva444p12le. A MOV with H.264 video has no alpha to convert, so remove the background first, as in how to export a video with an alpha channel.
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,pix_fmt -of compact input.movMOV to transparent WebM
This is the command we ran on FFmpeg 9.0.2. The 96.4 MB ProRes file became a 1.03 MB WebM. ffprobe on the result reported TAG:alpha_mode=1, and decoding it with libvpx reported yuva420p. See how to create a transparent WebM for the same command with CRF 20 and 40 sizes.
ffmpeg -i input.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -b:v 0 -crf 30 output.webmWhat happens when you change a flag
We re-ran the commands with one change each, on the same clip, to see which flags are really needed on this version of ffmpeg.
| Change | Result on FFmpeg 9.0.2 |
|---|---|
| Leave out -pix_fmt yuva420p | Error: Pixel format yuva444p12le is not widely supported. Use -strict experimental to use it anyway, or use yuva420p pixel format instead. No file written. |
| Leave out -auto-alt-ref 0 | Encoded fine. The output still had alpha_mode=1 and decoded as yuva420p. |
| Read the WebM without -c:v libvpx-vp9 before -i | The native VP9 decoder reported yuv420p, so the alpha was ignored. |
Transparent WebM to transparent GIF
Put -c:v libvpx-vp9 before the input so ffmpeg reads the alpha. The result below was 2.2 MB, and the top-left pixel read back with alpha 0. When we left the decoder flag out, the same command produced a 5.3 MB GIF whose pixel was opaque. GIF only has on or off transparency, so soft edges become hard; see how to make a transparent GIF.
ffmpeg -c:v libvpx-vp9 -i input.webm -vf "fps=15,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen=reserve_transparent=1[p];[b][p]paletteuse=alpha_threshold=128" -loop 0 output.gifTransparent WebM to ProRes 4444
The reverse direction also needs the decoder flag. ffprobe on the result reported codec_name=prores, profile=4444 and pix_fmt=yuva444p12le. See exporting ProRes 4444 with alpha for what to expect in editors.
ffmpeg -c:v libvpx-vp9 -i input.webm -c:v prores_ks -profile:v 4444 -pix_fmt yuva444p10le output.movIf the result still has no transparency
Check the source first: if it has no alpha, nothing in the command can add it. Then check the output with the ffprobe and libvpx decode commands in the WebM guide. Alpha that works in Chrome or Firefox but not in Safari is expected; see why transparent WebM turns grey or black in Safari.
If you do not have a transparent source
Upload the original MP4, MOV or GIF to RenderAlpha and download a transparent WebM, ProRes 4444 or GIF directly, up to 60 seconds per run. Check the cutout on one frame for free first. See specs and limits.
Frequently asked questions
How do I convert a ProRes MOV with alpha to a transparent WebM?
Use ffmpeg -i input.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -b:v 0 -crf 30 output.webm. On FFmpeg 9.0.2 this turned our 96 MB ProRes 4444 test file into a 1.0 MB WebM that kept its alpha.
Why did my converted WebM lose its transparency?
Either the source had no alpha, or the alpha was dropped on the way. Two causes we reproduced: reading a WebM without -c:v libvpx-vp9 before the input, which ignored alpha, and encoding without a pixel format that has alpha.
Do I need -auto-alt-ref 0?
On FFmpeg 9.0.2 the output kept its alpha without it in our test. The flag is widely copied from older guides, so we left it in the command. Verify your own output with ffprobe.
Can I convert an H.264 MOV or MP4 to a transparent WebM?
No. An H.264 file has no alpha channel to keep; our test MP4 reports pix_fmt=yuv420p. Remove the background first.
Why is the GIF jagged on the edges?
GIF transparency is on or off per pixel, so soft edges are cut at the alpha threshold. A transparent WebM keeps soft edges.
Sources
Primary sources we checked. The date is when we last opened each page.
- Apple: About Apple ProRes: ProRes 4444 alpha support (Retrieved )
- MDN: Web video codec guide: VP9 and alpha (Retrieved )
- MDN: Image file type and format guide: GIF transparency (Retrieved )