WebM to GIF

Convert WebM video to GIF for free — pick the range and create it in your browser, no upload.

A WebM holds VP8, VP9 or AV1 video with Opus or Vorbis audio. Nerulio decodes the video with your browser's WebCodecs decoder and writes a GIF from the section you choose. VP8 and VP9 are widely decoded in Chrome, Edge and Firefox; AV1 depends more on the browser and device. Nerulio measures the duration from the packets rather than trusting the header, which matters for WebM written by live recorders. A WebM's transparency does not carry over: every GIF frame is opaque.

Drop video files hereProcess many files at once
No upload · processed on this device

VP8, VP9, AV1, and what a WebM GIF keeps

WebM is a Matroska-based container restricted to open codecs: VP8, VP9 or AV1 for video and Opus or Vorbis for audio. MDN describes VP9 and VP8 as the two video codecs WebM mandates; AV1 was added later, and its decoding depends more on the browser and device. Nerulio uses the video track only.

Nerulio computes the length from the last packets in the file instead of trusting the header, which matters for WebM written by live recorders such as browser screen capture, where the header value can be missing. The timeline and the default 6-second section then use the real length.

VP8 and VP9 can carry an alpha channel for transparent video. GIF can only mark one palette colour as fully transparent, and Nerulio's GIF writer does not use that, so transparent areas become opaque. For animation with transparency, keep the WebM or export a PNG sequence from the tool that made it.

Matroska
The container WebM is based on; WebM limits it to web codecs.
VP9
An open, royalty-free video codec, one of the two WebM mandates.
Alpha channel
Per-pixel transparency; VP8 and VP9 in WebM can carry it, GIF only on/off transparency.

Example: a 60 fps screen recording in WebM

6 seconds of a 1280 × 720 recording at 640 px and 24 fps:

Source        1280 × 720 VP9, 60 fps, Opus audio, 20 s
Section       8.0 → 14.0 s (6 s)
Frames        6 s × 24 fps = 144 frames at 640 × 360 px (one source frame in 2.5)
Delays        40 or 50 ms: 12 frames = 500 ms, a 24 fps average
Index data    640 × 360 × 144 = 33.2 million bytes before LZW
Flat UI       interface colours fit a 256-colour palette; leave dithering off

For screen recordings, a narrower width or 15 fps does more for the size than fewer colours, because flat interface colours already fit the palette.

From the WebM to the GIF

In the WebMIn NerulioIn the GIF
VP8, VP9 or AV1 videoDecoded with WebCodecsPalette frames of up to 256 colours
Duration in the header (may be missing)Measured from the packetsCorrect timeline and section
Alpha channelNot used by the GIF writerOpaque frames
Opus or Vorbis audioNot readNo sound

Check the result

  • After opening, check that the length on the timeline matches the recording.
  • Check the frame count and the size estimate before running.
  • For a transparent WebM, view the GIF on a light and a dark background: it will be opaque.

Troubleshooting

SymptomLikely causeHow to checkFix
Decoder error on an AV1 WebMThis browser or device has no AV1 decoderffprobe shows codec_name=av1Use a browser that decodes AV1, or record in VP9
A transparent background came out solidThe GIF writer here uses no transparent colour—Keep the WebM, or export a PNG sequence from the original tool
Small text in a screen recording is fuzzyScaling 1280 px down to 480 px blurs small textCompare at 100 %Choose the original width, or crop to the part that matters and lower the fps instead
The GIF is much bigger than the WebMVP9 compresses the changes between frames; GIF stores every frame wholeCompare the two sizesKeep the WebM where it plays; for the GIF, shorten the section or lower the fps

Other ways to do it

OptionWhen it is the better choice
Keep the WebMBrowsers play WebM directly; it is smaller and keeps transparency and sound.
FFmpeg with palettegen and paletteuseScripts, batches, and one palette for the whole clip.

What this page does not cover

  • No transparent GIF output.
  • An AV1 WebM needs a browser with an AV1 decoder.

Versions and sources

Checked in tests/media-browser.mjs in Chromium 153 and Firefox 155: a 60 fps VP9 WebM without audio was decoded and re-encoded at 60 fps without an invented audio track. GIF encoding is gifenc 1.0.3. WebM codec facts follow MDN; AV1 browser support is from caniuse.

Official documentation used

WebM to GIF

WebM is an open web video format that plays well in Chrome and Firefox.

GIF size depends heavily on width, frame rate and colours; short clips at a modest width share best.

Your file is never uploaded — it is processed inside this browser.

Video to GIF

Set width, frame rate and palette size; frames are processed sequentially.

How it works

  1. Open a video and select a short range
  2. Set width, frame rate and palette size
  3. Export a GIF and check motion, colors and file size

Supported formats

MP4 / WebM / MOV → GIF — Input decoding and output encoding depend on browser support.

What this tool does

Decode one frame at a time; choose GIF width, FPS, palette size and dithering.

Implementation and verified quality

advanced · WebCodecs sequential frames / gifenc adaptive palettes / measured size targets. Quality qualification is in progress. Pro/Flagship quality has not been established.

Before you export

Fast cut shrinks to inner keyframes. Precise mode re-encodes; codec availability varies. Temporary outputs use local browser storage when available. Compatibility recording retains its short-clip limits.

Frequently asked questions

What determines the supported size?

Actual device memory, storage and codec support. Tested examples are evidence, not a guarantee for every file.

Are my files uploaded?

This tool processes the files you open on your device without uploading them. Images you explicitly attach to community posts are uploaded separately. Optional engines and models are downloaded from third parties; those requests expose connection information such as your IP address.

Will my work be saved automatically?

No. Images and editing state stay in this tab; media output can use local temporary storage. Changing language preserves your work; reloading, closing the tab, or following a link to another page can clear it.