katlab tools/video-to-gif

Video to GIF · MP4 → GIF

Turn a video clip into a high-quality looping GIF — real FFmpeg with two-pass palette, entirely in your browser.

Video is processed locally. Nothing is uploaded to a server.
no video
Result preview
GIF preview

How to convert a video to GIF (free)

  1. Drop your video onto the box above, or click to choose one.
  2. Pick the section: a start time like 0:07 and a length in seconds. Leave the length empty to convert the whole clip.
  3. Choose a frame rate and width, then click Convert to GIF. The looping GIF previews on the page and downloads when it's done.

Why the quality is better: two-pass palette

GIF is limited to 256 colours per image, and naive converters pick them badly — that's where the blotchy banding on gradients comes from. This tool runs FFmpeg's two-pass palette method: the first pass analyses your actual clip to build an optimal 256-colour palette, the second encodes with it using an ordered dither tuned for animation. The result is noticeably cleaner colour, especially on faces, gradients and dark scenes.

Keeping the GIF small

GIF is a 35-year-old format and file sizes grow fast — a GIF is often 5–10× larger than the same clip as MP4. Three levers matter: length (keep it under ~6 seconds), width (480px is plenty for chat and docs, 320px for thumbnails), and frame rate (12 FPS looks fine for most content; reserve 25 FPS for fast motion). As a rule of thumb, a 3-second clip at 480px / 12 FPS lands around 1–3 MB.

Real FFmpeg, running in your browser

This tool ships FFmpeg compiled to WebAssembly, so the conversion happens inside your browser tab. Your video is never uploaded: nothing to leak, cache on a server, or delete later. The first run downloads the engine once, which the browser then caches; after that it works offline.

Is it really private?

Yes. There is no upload step and no account. You can open your browser's network tab and watch: after the one-time engine download, no request carries your video data.

The GIF loops — can I change that?

The output loops forever, which is what virtually every chat app, README and doc expects. If you need a clip that plays once with sound, you want a small MP4 instead — use the video compressor.