Skip to content
brownie.tools

WebP to GIF Converter

Create real GIFs locally, choose a color palette, and keep animation when your browser supports it.

GIF uses 1-bit transparency: alpha below 128 becomes transparent; semi-transparent edges become opaque or transparent.

Choose WebP files or drag & drop

Up to 50 files · 300 frames and 40,000,000 frame pixels per file

Runs locally in your browser. Nothing is uploaded or sent to a server.

Choose WebP files, compare the converted preview, and click Download GIF to save a real GIF on your device. Select 256, 128 or 64 colors before adding files. Animated input retains frames when ImageDecoder supports WebP; otherwise the result contains only the first frame. Timing rounds to 10-millisecond units with a 20-millisecond minimum. GIF uses binary transparency. Limits are 300 decoded frames and 40,000,000 total frame pixels per file.

Updated

How do you convert a WebP file into a real GIF?

Choose a palette in Colors, then use Choose WebP files or drag & drop. Conversion starts as soon as you add files; there is no separate Convert button. Review the WebP and GIF previews, then click Download GIF. A static WebP becomes a single-frame GIF, while animated input needs the browser's ImageDecoder WebP support to retain its frames.

The converter reads image pixels, reduces each frame to indexed colors, and encodes actual GIF data with gifenc. It saves an image/gif file with a .gif extension, rather than renaming a WebP. Files run through a Web Worker sequentially, with frame progress during encoding. This is useful when a destination requires GIF but your downloaded image is WebP; changing its filename alone would leave the original format inside.

What does a worked animation conversion look like?

Suppose your WebP animation measures 500 by 400 pixels and contains 100 frames, each lasting 125,000 microseconds. With ImageDecoder WebP support, select 128 in Colors and add the file. The tool processes 500 × 400 × 100 = 20,000,000 frame pixels, below its 40,000,000 limit. Its 100 source frames also fit within the separate 300-frame limit.

How the example's source values become GIF output
PropertySource or settingConversion result
Dimensions500 × 400 pixels500 × 400 pixels; no resizing control
PaletteColors set to 128Up to 128 palette entries per frame
Frame duration125,000 microseconds125 milliseconds rounded to 130 milliseconds
One playback cycle100 × 125 milliseconds = 12.5 seconds100 × 130 milliseconds = 13 seconds
RepetitionSource loop settingOutput repeats forever

The size of the resulting file cannot be calculated from these dimensions alone. Inspect the actual Output byte count after encoding. In a browser without the required decoder support, this example produces only the first frame instead of the 100-frame animation, and the result carries a notice. Confirm that distinction before sending the file to someone expecting motion.

How are animated WebP frames and timing handled?

The worker checks for ImageDecoder and asks whether it supports image/webp. If supported, it requests animation decoding, reads the selected track's frame count, and processes each frame in order. Source durations are divided by 1,000 to convert microseconds to milliseconds, with a minimum delay of 20 milliseconds. The GIF writer then rounds to units of 10 milliseconds, so retaining source timing does not mean every duration stays numerically identical.

The output loops forever; there is no loop-count or playback-speed control. Missing durations and durations shorter than the minimum use 20 milliseconds. Very long delays are split across repeated copies of a frame to fit the GIF delay field. The 300-frame check applies to decoded source frames, so those repeated copies can make the encoded frame count higher. The tool does not offer frame removal or animation trimming.

Without ImageDecoder WebP support, the worker uses createImageBitmap to read the first frame. That fallback is a still image, not an animation assembled from guessed frames. If an available ImageDecoder fails on the file, the tool reports a conversion failure instead of switching to that fallback. Try opening the original to check that it is readable before retrying.

What happens to colors and transparent edges?

Colors offers 256, 128 and 64 entries, with 256 selected initially. Each frame gets its own palette. Start with 256 for the largest available palette, then try a smaller selection if the result suits your image. Fewer entries can change gradients, photographs and detailed artwork visibly; they do not guarantee a smaller file for every input. The control is disabled while a batch runs, so choose it before adding files.

GIF transparency is binary. Alpha below 128 becomes fully transparent, while alpha of 128 or higher becomes fully opaque. A transparent entry counts toward the selected limit: with Colors at 64 and transparent pixels present, the encoder reserves one entry and quantizes the other pixels into at most 63 entries. This changes soft shadows and partially transparent edges even with the largest palette.

The tool does not provide a background-color or edge-matting option. Inspect the GIF preview for jagged edges or lost shadow detail. For a static image that needs full alpha transparency, use WebP to PNG. If you need an opaque static output instead, WebP to JPG provides a different conversion path.

What limits apply, and why can a small file fail?

Each conversion allows at most 300 decoded frames and 40,000,000 total frame pixels, calculated as width × height × frame count. Both conditions must pass; staying below the frame limit does not bypass the pixel limit. A large single-frame image can exceed the same pixel budget. These checks concern decoded image work, rather than the compressed WebP file's byte count.

Lowering Colors does not reduce width, height or source frame count, so it does not resolve either limit. Resize or shorten the source elsewhere before retrying an oversized animation. The worker closes each decoded frame after processing it, but conversion still uses device memory and requires browser support for the decoding and canvas operations. A limit-compliant image is not a promise of a particular completion time on every device.

How do batch downloads, cancellation and local processing work?

Add up to 50 WebP files in one selection, using the picker, drag-and-drop or clipboard paste. A selection above 50 is rejected rather than silently truncated. Files are processed one after another, and each successful result shows Input and Output sizes in bytes, an editable filename, and Download GIF. The converter does not combine separate files into one animation.

Download All as ZIP appears once more than one result is available. It packages completed GIFs with numbered prefixes to distinguish archive entries. Cancel terminates the active worker and stops the remaining queue; already completed results remain downloadable. Changing Colors affects a new batch and does not re-encode previous results automatically.

Decoding, palette generation, GIF encoding and ZIP creation happen on your device. The conversion code reads the selected files directly and makes no network requests with their image data. Your original files remain intact. Compare the actual before-and-after sizes: converting to GIF is a format change, not a compression guarantee, and the GIF may be larger than its WebP source.

How to Use WebP to GIF Converter

  1. Colors

    Choose 256, 128 or 64 in Colors before adding files. The default is 256; the selection applies to the batch you start next.

  2. Choose WebP files or drag & drop

    Use Choose WebP files or drag & drop to add up to 50 WebP files. Conversion starts automatically. Watch frame progress, or click Cancel to stop the current conversion and remaining queue.

  3. Download GIF

    Compare the WebP and GIF previews and their byte sizes. Check for a first-frame-only notice, edit the output filename if needed, then click Download GIF.

  4. Download All as ZIP

    When more than one result is available, click Download All as ZIP to save completed GIFs together. Numbered filename prefixes distinguish archive entries.

Frequently Asked Questions