Animated WebP vs GIF vs MP4: Which to Use for Short Loops
Short looping visuals — product demos, UI walkthroughs, reaction clips, subtle background motion — have three plausible containers, and the correct choice changes at surprisingly specific thresholds.
GIF: the one you should almost never pick
GIF's animation support dates to 1989 and is the only reason a format from 1987 is still in daily use. Technically it has been comprehensively beaten for over a decade.
Each frame is limited to a 256-colour palette, which is why animated GIFs of video footage look banded and dithered — particularly in skies, gradients and skin tones. Its LZW compression predates essentially everything about modern video coding. And its transparency is 1-bit: every pixel is either fully opaque or fully invisible, so soft anti-aliased edges become hard and jagged.
The one thing GIF has is universal acceptance. Some chat platforms, forum software, ad networks and older email systems maintain hard-coded format allowlists that contain GIF and nothing newer. When that is the wall you have hit, GIF is the answer — and only then.
Animated WebP: the default for short loops
Full 24-bit colour instead of 256. Full 8-bit alpha per frame instead of 1-bit. And files routinely 60-80% smaller than the equivalent GIF. Converting an existing GIF library to animated WebP is one of the highest-yield changes available on a content-heavy site, because GIFs are usually the single heaviest asset on any page that has one.
A 4 MB reaction GIF at the top of an article is doing more damage to load time than every other image on the page combined, and it is the easiest thing there to fix.
Support is the same as static WebP: every current browser. Where animated WebP falls down is the same place static WebP does — desktop software and email.
MP4 and WebM: for anything longer
Past roughly three to five seconds, a real video codec wins decisively. H.264 or AV1 in an MP4 or WebM will beat animated WebP substantially on anything of length, because they do inter-frame prediction properly — encoding what changed between frames rather than compressing each frame largely independently.
The cost is complexity. A <video autoplay muted loop playsinline> element behaves differently from an image: it needs those exact attributes to autoplay on iOS, it interacts with data-saver settings, and it will not appear in an <img> slot. For a two-second loop that complexity is not worth it. For a fifteen-second product demo it absolutely is.
A decision rule
- Under ~3 seconds, simple motion, needs to sit in an image slot: animated WebP.
- Over ~5 seconds, or full-motion footage: MP4 or WebM video.
- The destination's uploader will only take GIF: GIF, reluctantly.
- It needs to work in an email: GIF, or better, a static image linking to the animation.
Converting between them
GIF to animated WebP preserves the animation and the timing while removing the palette limitation — colours that were dithered in the source stay dithered, since that damage is already baked in, but no further degradation is added. Going the other way, WebP to GIF, costs both colour depth and file size, and is worth doing only when something on the receiving end genuinely requires it.