GIF to MP4 Converter
Turn a heavy GIF into a small silent MP4 that keeps every frame — on your device, with the real before-and-after size on every file.
Runs entirely in your browser. Your videos never leave this device.
This GIF to MP4 converter re-encodes an animated GIF as an H.264 video in your browser — nothing is uploaded. It keeps the GIF’s full width, height and frame timing, has no sound track, and is typically 85–99 % smaller than the GIF it came from (measured in the browser at the default setting; one dithered GIF where every pixel moves saved 72 %). Drop several GIFs at once; each gets its own result card with the real sizes, an inline preview that loops like the original, a download and a copy-ready embed tag for web pages. Pick High, Balanced or Smaller quality, how many times the animation plays inside the file, and what colour transparent areas become — an MP4 keeps no transparency. No watermark, no signup, no artificial file-size cap.
Why is an MP4 so much smaller than the same GIF?
Because a GIF stores every frame as a complete picture, while an MP4 stores mostly what changes between frames. A GIF is a stack of indexed images, each limited to 256 colours and compressed on its own with LZW, the same lossless method GIF has used since 1987; only pixels that stay identical from one frame to the next can be skipped. H.264, the codec inside almost every MP4, predicts each frame from the ones around it, describes movement as motion, and spends bits where the eye notices them. On our test GIFs, at this tool’s default setting, the MP4 came out 85–99 % smaller — a 23 MB GIF became a 274 KB video — while keeping every frame, the original timing and full resolution. It also looks better than the GIF at the same size, because it is not limited to 256 colours. The exceptions are worth knowing: a GIF that is heavily dithered with every pixel moving saved 72 %, a GIF of only a few kilobytes can come out larger because an MP4 carries a small fixed overhead, and an MP4 keeps no transparency. Converting is worth it wherever video plays: chat apps, social posts and web pages. Keep the GIF where only an image is accepted — custom emoji, GitHub READMEs, email.
The facts that matter
| Output | MP4 (H.264 video, no audio track), 4:2:0 colour, fast-start so it can play before it has finished downloading; plays in every current browser, and Discord, X, Telegram and WhatsApp all list MP4 among the video formats they accept (checked Oct 2026) |
|---|---|
| Typical savings | 85–99 % smaller at the default setting on our test GIFs, measured in the browser (880 KB → 47 KB, 5.2 MB → 95 KB, 23.1 MB → 274 KB); 72 % on a dithered GIF where every pixel moves; a GIF of only a few KB can come out larger, and the card says so |
| Quality | High (CRF 18) · Balanced (CRF 23, default) · Smaller (CRF 28) — on the GIF that compressed least, 58 % / 72 % / 83 % smaller respectively |
| Kept from the GIF | Full width and height (odd dimensions are rounded down one pixel — H.264 at 4:2:0 needs even numbers), every frame and its timing: a 10.0 s GIF gives a 10.0 s MP4 |
| Options | Plays 1× / 2× / 3× / 5× baked into the file · transparent pixels filled white or black · batch of any number of GIFs, converted one after another |
| Speed | One encode per GIF, single-threaded; in Chrome on a laptop an 8-second 720p GIF (5.2 MB) took about 4 s and a 23 MB GIF about 2 s |
| Privacy & limits | Processed entirely on your device — FFmpeg compiled to WebAssembly, ~32 MB downloaded once and cached; nothing uploads, works offline after the first load; no watermark, no signup, browser memory (~1–2 GB) is the practical ceiling |
Get a better result
- Putting the animation on a web page? Use the embed code the result card copies: a video tag with autoplay, loop, muted and playsinline, and the width and height filled in. Browsers reliably autoplay only muted video, iPhones need playsinline to keep it in the page instead of opening full screen, and loop makes it repeat, so those four attributes are what make an MP4 behave like a GIF. Chrome’s Lighthouse and DevTools flag animated GIFs over 100 KiB and recommend video instead (checked Oct 2026).
- Leave “Plays” at once unless something will refuse to loop it. On a web page the loop attribute repeats a single play for free, and baking in three plays makes the file roughly three times bigger. Repeats earn their bytes where no player loops: an upload form with a minimum length, a slideshow, a video editor timeline. Whether a chat app loops an uploaded MP4 is up to the app and not documented — send one and look before baking in repeats.
- If the GIF has a transparent background, pick the colour of the page or chat it will sit on. An H.264 MP4 keeps no transparency, so every see-through pixel becomes solid white or black — a sticker-style GIF on a dark Discord theme usually looks right with black, on a light web page with white. If transparency really matters, keep the GIF (or use an animated WebP or PNG).
- Pixel art and tiny GIFs need a second look. MP4 stores colour at half resolution (4:2:0), so single-pixel coloured details can smear slightly — High quality keeps more detail but cannot undo that. And under a few kilobytes, the MP4’s fixed overhead can make it bigger than the GIF; the card says when it is, so you can keep the original.
Frequently asked questions
How do I convert a GIF to MP4 without uploading it?
Drop the GIF on this page, leave the settings at Balanced, and press Convert. The conversion runs on your device: FFmpeg compiled to WebAssembly (about 32 MB) downloads once, is cached, and then decodes every GIF frame and re-encodes it as H.264 inside your browser tab. You can check it in the browser’s network tab — after the engine loads, no request carries your file, and the page keeps working offline. In Chrome on a laptop an 8-second 720p GIF took about 4 seconds; the result card shows both sizes, a looping preview, a download button and the embed code. No watermark, no signup, no file-size cap beyond your browser’s memory.
Does converting a GIF to MP4 lose quality?
Technically yes — H.264 is a lossy codec — but in practice the MP4 usually looks the same or better than the GIF. The GIF already threw information away when it was made: every frame was squeezed into a palette of at most 256 colours, often with dithering. The MP4 keeps every frame, the original timing and full resolution, and at the default setting (CRF 23) the differences are hard to see at normal viewing size. Two things can show: fine dithering patterns get smoothed out (pick High, CRF 18, to keep more of them), and because MP4 stores colour at half resolution, tiny coloured details in pixel art can smear slightly. If you need the exact pixels, keep the GIF.
Will the MP4 loop like a GIF?
On a web page, yes — with the loop attribute, which the embed code this tool copies includes alongside autoplay, muted and playsinline. Elsewhere it depends on the player, because an MP4 has no loop flag of its own and a GIF does. Telegram has stored GIFs as silent MPEG-4 videos since 2016 and plays those as GIF-style animations, but whether Discord, Slack or another app repeats an uploaded MP4 is up to the app and none of them document it (checked Oct 2026). Where nothing loops it, such as a plain video player or an editor timeline, set “Plays” to 2×, 3× or 5× and the repeats are written into the file — each one adds roughly another copy of the animation’s size, so only do it when you need it.
Why is my MP4 bigger than the GIF?
Because the GIF was already tiny or very simple. An MP4 file carries roughly 1–2 KB of fixed structure — headers, an index, codec settings — that a GIF never pays, so a GIF of a few hundred bytes or a couple of kilobytes can come out larger: on our test, a 983-byte, three-frame GIF became a 1.6 KB MP4. Baking in several plays also multiplies the size, which is why the card shows no percentage for those. When the MP4 is larger the result card says so in plain words instead of hiding it — keep the GIF in that case. For anything over a few kilobytes with real motion, the MP4 is almost always far smaller.
What happens to a GIF’s transparent background?
It is filled with a solid colour, because an H.264 MP4 keeps no transparency. This tool lets you choose white (the default, and what FFmpeg’s GIF decoder produces on its own) or black; pick the colour of the background the video will sit on, such as black for Discord’s dark theme. Note that many GIFs use “transparent” pixels internally just to mean “unchanged since the last frame” — those are composited correctly and are not affected by this setting; only areas that are see-through in the finished animation take the colour. If the transparency itself matters, a GIF, an animated WebP or an APNG is the right format, not MP4.
Should I post a GIF or an MP4 on Discord, X or Telegram?
Where video plays, the MP4 is usually the better upload: it is typically 85–99 % smaller, so it sends faster and stays far under limits such as Discord’s 20 MB free upload cap (raised from 10 MB in August 2026; Nitro Basic allows 50 MB and Nitro up to 1 GB), and Discord lists H.264 MP4 among the video it accepts. Telegram has re-encoded every GIF to MPEG-4 since 2016, by its own announcement, and X’s API documentation serves uploaded GIFs as MP4 (checked Oct 2026) — so sending your own MP4 skips a second, lossy re-encode. A real GIF is still required in a few places: custom emoji on Discord (under 256 KB) and Slack (under 128 KB), Twitch emotes, GitHub READMEs and most email. For those, use the GIF compressor on this site instead.
Why does the MP4 have one pixel less than my GIF?
Because H.264 with 4:2:0 colour — the format every browser and phone plays — stores colour for each 2×2 block of pixels, so the width and height must be even numbers. A GIF that is 481×271 is resized to 480×270 before encoding; even-sized GIFs keep their exact dimensions. The difference is one row or column of pixels, which is not visible at normal size. The result card shows the final dimensions whenever this happens, and the embed code uses them so the page reserves exactly the right space.
Is there a size limit, and is my GIF uploaded anywhere?
No artificial limit and no upload. Everything happens on your device: the engine downloads once (about 32 MB), is cached, and converts your GIFs inside the browser tab — after it loads, no request carries your files and the page keeps working offline. The practical ceiling is your browser’s memory, roughly 1–2 GB, which is a very large GIF. The trade-off is that your device does the work, one GIF after another: an 8-second 720p GIF took about 4 seconds in Chrome on a laptop, and a long batch takes proportionally longer. No watermark, no signup, no account.