Initializing... drag & drop files here
Supports: GIF
GIF's 1987 LZW compression treats every frame as a fresh 256-color paletted bitmap with no inter-frame prediction. WebM's VP9 codec exploits temporal redundancy between frames, so a 5-second 480p clip that ships as an 8 MB GIF can land under 200 KB as WebM — routinely 10× to 40× smaller for the same visual content. The conversion is essential when you care about page-load budgets, mobile data, or hitting strict file-size caps (Telegram stickers, Discord uploads, Slack embeds).
<img src="animation.gif"> with <video autoplay loop muted playsinline> cuts bytes by 80-95% and lets the browser progressively render. Google's web.dev guidance explicitly recommends video formats over GIF for animated content.| Property | GIF | WebM (VP9) | MP4 (H.264) |
|---|---|---|---|
| Typical file size (same clip) | 1× (baseline) | 5-15× smaller | 5-12× smaller |
| Colors | 256 per frame | 16.7M (24-bit) | 16.7M (24-bit) |
| Alpha transparency | 1-bit binary | Full alpha (VP9) | Not natively supported |
| Inter-frame compression | None (each frame standalone) | Yes (motion vectors, P/B frames) | Yes (motion vectors, P/B frames) |
| Browser support | Universal | Chrome 25+, Firefox 28+, Edge 79+, Safari 16+ (iOS 17.4+) | Universal |
Autoplay in <img> tag |
Yes | No (needs <video>) |
No (needs <video>) |
| Best for | Legacy email, oldest Safari fallback | Web embeds, Telegram stickers, GitHub | iMessage, social uploads, broadest player support |
| Setting | VP8 | VP9 |
|---|---|---|
| Compression efficiency | Baseline | ~50% smaller at same quality |
| Encoder speed | Faster | Slower (especially 2-pass) |
| Alpha channel | Yes | Yes |
| Required for Telegram stickers | No | Yes — Telegram rejects VP8 sticker uploads |
| Hardware decode | Wide (older Android, ARM SoCs) | Wide on 2017+ devices |
| Recommended when | You need fastest encode or target very old Android | Default — best size/quality, required for Telegram |
| Spec | Requirement |
|---|---|
| Container / codec | WebM / VP9 |
| Max file size | 256 KB after encoding |
| Max duration | 3 seconds |
| Max frame rate | 30 FPS (constant) |
| Sticker dimensions | One side exactly 512 px, other side ≤512 px |
| Emoji dimensions | Exactly 100×100 px |
| Audio | Must have no audio stream |
| Recommended encoding | Constant Quality + 2-pass (per Telegram docs) |
For Telegram stickers, set Preset Resolution to 512×512 (or 512 × shorter), pick Constant Quality under File Compression, and trim the source GIF to ≤3 seconds before upload if needed.
For typical animated content, expect 5-15× smaller — a 5 MB GIF usually lands at 300-700 KB as VP9 WebM, and a 30 MB screencast GIF often falls under 2 MB. The savings are biggest for clips with smooth motion, gradients, or photo-realistic frames (where GIF's 256-color palette and lack of inter-frame compression hurt most). Pixel art or 2-color animations close the gap, but WebM still wins.
VP9 by default — it's roughly 50% more efficient at the same visual quality and is the only codec Telegram accepts for video stickers. Choose VP8 only if you specifically need the fastest possible encode or are targeting very old Android hardware that lacks VP9 decode. Both support transparency.
WebM has no built-in loop flag — looping is controlled by the embedding context. In HTML, add the loop attribute: <video autoplay loop muted playsinline src="anim.webm">. Telegram, Discord, and most chat clients loop video stickers automatically.
Yes if the source GIF uses transparency and you keep VP9 (the default). VP9 supports a full alpha channel, so the binary 1-bit transparency of GIF is preserved and even improved — anti-aliased edges that GIF couldn't represent now render smoothly. If you need to flatten transparency for a player that ignores alpha, convert to MP4 instead.
Roughly 95% of global traffic per caniuse.com. Chrome (25+), Firefox (28+), and Edge (79+) have had it for years. Desktop Safari added support in 16.0 (2022), and iOS Safari only at 17.4 (March 2024). For audiences with significant iOS <17.4 share, use a <picture>-style fallback: <video><source src="anim.webm"><source src="anim.mp4"></video> so older Safari falls through to MP4.
Yes — set resolution to 512×512 (or 512 × the shorter side), use VP9 with Constant Quality at the highest setting that fits under 256 KB, and ensure your source GIF is 3 seconds or less. Telegram's encoder also strips audio, so the no-audio rule isn't a worry for GIF sources (GIF has no audio). If the output is too large, drop the quality preset one step or scale resolution down to 480 px.
Quality Preset picks a balanced quality/size target — "Very High" is the default and works for most embeds. Constant Quality locks visual quality (CRF-style) and lets file size float — best when you care about consistent appearance across clips. Constraint Quality caps the bitrate but lets the encoder spend less on easy frames — best when you have a hard ceiling like Telegram's 256 KB.
Three usual culprits: source GIF is too long (a 30-second GIF at 30 FPS is 900 frames no matter the codec), resolution is high (a 1080p GIF stays heavy as WebM — try scaling to 720p or 480p with Resolution Percentage), or quality is set too aggressive. Drop one step of quality, halve the resolution, or shorten the clip before converting. You can also re-trim the output WebM with Video Cutter to clip a few extra frames.
Yes — use the reverse WebM to GIF converter. Expect the file to balloon 5-15× since you're going back to the inefficient LZW container. Only do the round-trip if a downstream tool truly can't accept WebM.
No fixed per-file cap on this tool, but very large GIFs (hundreds of MB) take longer to upload and convert. For batch jobs, queue files in groups of 5-10 for the smoothest experience.