Why Is My Transparent Video Not Transparent?
Last updated: · Written by the RenderAlpha team
Facts checked against the sources below on November 14, 2026. Measurements run on FFmpeg 9.0.2 on November 14, 2026 with our own demo clip, frame 60 of 121.
You made a transparent video, and it plays with a background. The background you see is a clue. This guide ties each symptom to a cause, shows what we measured when we broke a transparent WebM on purpose, and gives one check that catches a file the usual checks pass.
Short answer
Transparency is lost in the export, the re-encode or the player. On our test clip, an MP4 export and a default ffmpeg decode both brought back the original background. A re-encode through ffmpeg’s default VP9 decoder produced a WebM that still carried the alpha_mode=1 tag but had an alpha value of 255 in every pixel. Check the alpha values themselves, not the tag.
Start with what you see
What the video looks like when it fails narrows the cause. The first row is the one we measured most; the rest point to guides that cover the tested details. We did not test video editors, OBS or Windows players for this guide, so the fill-color row is a general description, not a measurement.
| What you see | Likely cause | Where to look |
|---|---|---|
| The background you removed is back | A player, converter or export that ignores alpha | The measurements below |
| Only Safari shows a background | Safari does not play VP9 alpha | Why a transparent WebM turns grey or black in Safari |
| A solid black or white box | An editor or exporter filled the transparent area | Export a video with an alpha channel |
| An .mp4 file that should be transparent | The container or codec cannot carry the alpha | Does MP4 support transparency? |
| Dark or light outlines around soft edges | Straight and premultiplied alpha mixed up | Using transparent video in OBS |
What we measured when we broke a transparent WebM
We took one of our own cutouts, a 5 second 1280×720 VP9 WebM with alpha, and read frame 60 after five different treatments, on FFmpeg 9.0.2 on November 14, 2026. The table gives the alpha value of a pixel in the top-left corner, which is transparent in the source, and of the center, which is the subject.
The corner pixels kept the original background colors in every case: we read (67, 75, 79) in the source and values within a few levels of it after each re-encode. So when alpha is ignored, the viewer sees the footage you cut the subject out of, not black or white.
| Treatment | Corner alpha | Center alpha | Result |
|---|---|---|---|
| Source, decoded with libvpx | 0 | 255 | Transparent |
| Source, decoded with ffmpeg’s default decoder | 255 | 255 | Original background back |
| Exported to H.264 MP4 (either decoder) | 255 | 255 | Original background back; pix_fmt yuv420p |
| Re-encoded to WebM after a default decode, with -pix_fmt yuva420p | 255 | 255 | Opaque, but the file says it has alpha |
| Re-encoded to WebM after a libvpx decode, with -pix_fmt yuva420p | 0 | 255 | Transparent |
The file that claims alpha but has none
The fourth row is the one to watch. The re-encoded WebM reported the alpha_mode=1 tag, and decoding it with libvpx showed the pixel format yuva420p. Both checks passed. The alpha plane itself was 255 everywhere: the encoder had been given a frame with no alpha, so it filled one in as fully opaque.
The fix is to put -c:v libvpx-vp9 before the input, as the conversion guide shows. To catch the problem in a file you already have, extract the alpha plane and look at its lowest value. FFmpeg’s filter documentation, which we opened on November 14, 2026, describes alphaextract as extracting the alpha component as a grayscale video, and signalstats reports the minimum and average value of each frame.
| File | Alpha minimum (YMIN) | Alpha average (YAVG) |
|---|---|---|
| Source WebM | 0 | 78.6 |
| Re-encoded after a libvpx decode | 0 | 78.6 |
| Re-encoded after a default decode | 255 | 255 |
ffmpeg -c:v libvpx-vp9 -i clip.webm -vf "select=eq(n\,60),alphaextract,signalstats,metadata=print:file=-" -frames:v 1 -f null -Which fix goes with which symptom
If the alpha was lost at export, export again to a format that keeps it: a transparent WebM, ProRes 4444, or a GIF with on or off transparency. If it was lost in a re-encode, redo the encode with the decoder flag above and run the alpha check on the result. If the file is fine and one browser shows a background, the player is the cause. MDN’s video codec guide says Safari does not support alpha transparency in VP9, and the format comparison shows which format each browser rendered.
What this does not tell you
This is one clip, one frame and one version of FFmpeg. The corner colors we read come from how our file stores the pixels under a transparent area. A different tool may store black there, which would turn the symptom from the original background into black. We did not test After Effects, Premiere, DaVinci Resolve, OBS or any Windows player, and we did not measure premultiplied alpha.
Start from a file that has real alpha
RenderAlpha removes the background from a clip and writes the transparent WebM, ProRes 4444 or GIF itself, so there is no decoder flag to remember. Specs and limits lists the formats and lengths.
Frequently asked questions
Why does the original background come back instead of black?
Our transparent files store the original colors under the transparent area. A player or converter that ignores the alpha plane shows those colors. Other tools may store black or white there instead.
Can a WebM have the alpha tag and still be fully opaque?
Yes. A WebM we re-encoded after a default ffmpeg decode reported alpha_mode=1 and yuva420p, but every alpha value was 255. Check the alpha values with alphaextract and signalstats, not the tag.
Does ffprobe show whether my video is transparent?
Only partly. For our VP9 WebM, ffprobe printed pix_fmt=yuv420p plus an alpha_mode tag, and the tag was present in the opaque file too. Reading the alpha values is the reliable test.
Why is the video only opaque in Safari?
MDN says Safari does not support alpha transparency in VP9, so a correct WebM still plays with a background there. See the Safari guide for the HEVC fallback.
Does exporting to MP4 keep transparency?
No. Our MP4 export had pix_fmt=yuv420p and an alpha of 255 at the corner, whichever decoder read the source. The MP4 guide covers what we tried with HEVC.
Sources
Primary sources we checked. The date is when we last opened each page.
- FFmpeg Filters Documentation: alphaextract and signalstats: what the two filters report (Retrieved )
- MDN: Web video codec guide: Safari and alpha transparency in VP9 (Retrieved )