ZeroUtil

Video to GIF Converter

Convert MP4, WebM and MOV videos to animated GIFs entirely in your browser.

Maintained by

Preparing ffmpeg...0s0%

How to Use the Video to GIF Converter

  1. Drop or pick a video - MP4, WebM, MOV or any format your browser can decode. Files stay on your device, nothing is uploaded.
  2. Choose output settings - frame rate (10/15/24 fps), width (320/480/640/original) and a maximum duration. Lower numbers produce a smaller GIF.
  3. Click Convert - ffmpeg.wasm runs the encode locally. You can cancel at any time and the worker is terminated within two seconds.
  4. Preview and download - the animated GIF renders inline. Use the Download button to save it under <original-name>.gif.

What This Tool Does

This is a free, browser-based video to GIF converter. It converts MP4, WebM, MOV and other common video formats to an animated GIF without uploading the source file. The conversion runs entirely on your machine using a WebAssembly build of ffmpeg, so private screencasts, work demos or family clips stay private.

The tool is intended for short-form clips - product demos, reaction shots, code snippets and tutorial loops. The default settings (10 fps, 480 pixels wide, first 10 seconds) produce a GIF that is small enough for chat apps, GitHub README embeds and Slack messages while keeping motion legible.

Why Convert MP4 to GIF in the Browser

Most online mp4 to gif tools upload your video to a third-party server, run the encode there, and email or display a download link. That is the wrong default for screen recordings of internal tools, presentations under NDA, family photos or any clip you would not want sitting on someone else's disk. A browser-based converter avoids that risk: the binary never leaves your computer.

The trade-off is that ffmpeg.wasm is bigger than a server-side ffmpeg - the worker plus core assets are roughly 30 MB on first load. Modern browsers cache the assets, so the second visit is near-instant. For most short clips the encode itself completes in 5 to 30 seconds on a recent laptop.

Output Settings, Explained

  • Frame rate - GIFs use a fixed palette per frame, so the file size grows roughly linearly with frame rate. 10 fps is the default because it captures motion well for screen recordings while keeping the file small. 24 fps looks smoother for action footage but can triple the size.
  • Width - the height is computed automatically so the aspect ratio is preserved. 480px is a common chat-friendly width. 320px targets dense GitHub readmes; 640px looks crisp inline in a wider article.
  • Max duration - GIFs are not built for long clips. Past about 15 seconds the file balloons and most chat apps refuse to autoplay. The tool caps the encode at the duration you set so you do not accidentally produce a 50 MB output.

How the Conversion Works

Under the hood, the tool runs ffmpeg -i input.mp4 -t <duration> -vf "fps=<rate>,scale=<width>:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif. The two-pass palette flow is what makes the difference between a noisy default GIF and the clean, banding-free output you see in this tool.

The first pass scans the video and builds an optimized 256-color palette using palettegen. The second pass re-uses that palette via paletteuse. Lanczos scaling preserves edges when the GIF is smaller than the source. The end result is competitive with FFmpeg-on-server tools without the upload.

Use Cases for the Free Online Video to GIF Tool

  • Engineering teams - turn a 5-second screen recording of a bug or feature into a GIF that lives in the PR description. No login, no upload, no privacy review.
  • Product and marketing - share quick demo loops in newsletters, landing pages and announcements where MP4 video would fail to autoplay or require a player.
  • Documentation writers - embed loops of CLI sessions, app flows and onboarding wizards directly inside README files where Markdown does not support video.
  • Streamers and content creators - clip a highlight from a stream as a GIF for Twitter or Discord without re-uploading the full VOD to a third-party converter.
  • Educators and trainers - generate looping animations from screen captures to drop into slide decks or learning management systems.
  • Designers - share micro-interaction prototypes recorded from Figma, Framer or Principle as GIFs without going through a render queue.

Tips for a Smaller, Cleaner GIF

  • Trim the source video first - shorter clips produce smaller GIFs. The Max duration setting helps but trimming the source is even better.
  • Pick the lowest frame rate that still reads as motion - 10 fps is enough for most screen recordings, 15 fps for slow real-world footage, 24 fps for fast action.
  • Reduce the width before reducing the frame rate. A 320 pixel wide GIF at 15 fps usually beats a 640 pixel wide one at 10 fps for the same file size.
  • Avoid noisy or grainy backgrounds - they multiply the per-frame data.
  • If you only need motion in part of the frame, consider cropping the source video first with a separate tool.

Privacy and Browser Support

The tool runs in cross-origin-isolated mode (COOP/COEP enabled site-wide) so the multithread build of ffmpeg.wasm can use SharedArrayBuffer. That means it works in recent versions of Chrome, Edge and Firefox on desktop and on Android. Older Safari versions, mobile Safari without iOS 16.4+ and embedded webviews may not enable cross-origin isolation; in those cases the tool surfaces a clear "Browser not supported" message instead of silently failing.

Your video file is read into memory with ArrayBuffer, written into the ffmpeg virtual filesystem, processed and then deleted. The output Blob and its blob: URL are scoped to the page and revoked when you reset the tool or navigate away. None of the data leaves your browser at any point.

Frequently Asked Questions

How do I convert MP4 to GIF online for free?

Open this page, drop your MP4 into the upload box and click Convert. The video to GIF converter runs entirely in your browser - the file never uploads to a server. Default settings (10 fps, 480 pixels wide, 10 second cap) produce a Slack and GitHub-friendly GIF. Adjust frame rate, width and max duration before converting if you need a different shape or smaller size.

Is the tool really free with no upload?

Yes. Conversion runs locally with ffmpeg.wasm, a WebAssembly build of ffmpeg. There is no signup, no watermark, no daily limit and no upload. Open DevTools → Network while you convert and you will see only the initial page load and ffmpeg core assets. Your video bytes stay on your device.

What video formats does the converter accept?

Anything ffmpeg can decode: MP4 (H.264, H.265), WebM (VP8, VP9, AV1), MOV, MKV, M4V, AVI and more. The browser also has to be able to read the file via the File API, which works for all of the above. If a particular file fails, transcode it to MP4 first or open an issue with the source codec - we can extend support.

How big can the input video be?

The tool caps the input at 500 MB to stay within the WebAssembly memory budget that browsers reliably support. For longer or larger clips, trim the video first or wait for the Tier-3 backend coming with the monorepo refactor. In practice, screen recordings under 30 seconds at 1080p sit well within the limit.

How do I make the GIF smaller?

Three levers: lower the frame rate, lower the width, and shorten the Max duration. Try 10 fps with 320 px width for chat-app-friendly sizes. Each step roughly halves the byte count. For very short loops, even 8 fps is acceptable as long as the motion is gentle.

Why is the first conversion slow?

The first time you open the tool, your browser downloads the ffmpeg.wasm core (about 30 MB) and the worker script. After that the assets are cached on disk. Subsequent visits start almost instantly. The encode itself runs on a worker thread so the page stays responsive.

Why does the browser say "not supported"?

ffmpeg.wasm threads need a cross-origin-isolated context, which requires the page to be served with COOP/COEP HTTP headers. Most modern desktop browsers and recent mobile Safari handle this correctly, but extension webviews and very old browsers may not. If you see the unsupported message, try the same link in a recent Chrome, Edge or Firefox window.

Can I cancel a long conversion?

Yes. Click Cancel during the encode and the ffmpeg worker is terminated within about two seconds. The page returns to the file-selected state so you can adjust settings and retry without re-picking the file.

Does the GIF loop forever?

The output is encoded with the standard infinite-loop flag (<code>-loop 0</code>) so apps like Slack, Telegram, Discord and GitHub will autoplay it on repeat. If you need a single-play GIF, that is a niche use case - drop us a feature request and we can expose the option.

How does the quality compare to a desktop ffmpeg or online converter?

It is the same ffmpeg, compiled to WebAssembly. The two-pass palette pipeline (palettegen + paletteuse with Lanczos scaling) we use is the same one that desktop ffmpeg recipes recommend, so output quality is on par with desktop and ahead of many web converters that skip the palette step. The only practical limit is memory and CPU time.

More Video & Audio