By Updated

Video to GIF Converter

Turn any mp4, webm, mov, or mkv into a high-quality animated GIF: fully in your browser via ffmpeg.wasm. Pick a time range, FPS, width, and dither; we generate an optimised palette in a single click.

Interactive tool

ffmpeg.wasm engine loads on first run (~32 MB)

The engine is cached for the rest of your session. Every transcode runs entirely in your browser: files never leave your device.

Threading: detecting…

Drop a video here

Up to 250 MB / 5 minutes. The file never leaves your browser.

What is the Video to GIF Converter?

A free, in-browser converter that turns a clip from any video into a high-quality animated GIF. It uses a two-pass palettegen+paletteuse pipeline in ffmpeg.wasm for sharp colours and clean dithering. No upload, no signup.

How to Use the Converter

  1. 1Drop a video file (mp4, webm, mkv, mov)
  2. 2Drag the timeline thumbs to pick the start and end of the GIF
  3. 3Pick an FPS (5-30) and a max width
  4. 4Choose a dither algorithm or leave it on default
  5. 5Click Convert: your high-quality GIF is generated locally
What you get

Key features

Two-pass palette pipeline

palettegen + paletteuse for dramatically better colour than naive GIF encoding

Adjustable FPS (5-30)

Drop the frame rate to shrink the file, or push to 30 for buttery-smooth loops

Width control

Pick the target width and we keep the aspect ratio with Lanczos resampling

Multiple dither modes

Floyd-Steinberg, Sierra 2-4A, Bayer, or none: pick the look you want

Time-range scrubber

Cut just the seconds you need before encoding, usually the biggest size win

Multi-threaded ffmpeg.wasm

Uses SharedArrayBuffer where available for 5-10x faster two-pass encoding

100% private

Your video never leaves the browser: no upload, no signup, no logs

Why Not Use an Online GIF Site?

Online GIF converters upload your file, queue it, often watermark the output, and rarely expose dither / FPS / width settings. Doing it locally is faster, private, and gives you the same level of control as a desktop ffmpeg install.

Common use cases

  • Make a looping product demo GIF for a blog post or landing page
  • Capture a reaction snippet from a meeting recording
  • Turn a UI screen capture into a GIF for a pull request
  • Build a tutorial GIF for embedding in docs (Stripe / Linear style)
  • Make a meme out of a movie or sports clip

Picking FPS

  • 5 fps: tiny file, choppy. Good for static demos.
  • 10 fps: small, watchable. Default for documentation GIFs.
  • 15 fps: smooth enough for most uses, balanced size.
  • 24 fps: feels like video, but file size jumps quickly.
  • 30 fps: buttery, but only worth it for short clips.

Picking a dither

  • None: sharpest, smallest, fine for cartoons / UI.
  • Floyd-Steinberg: classic, low-noise gradient handling.
  • Sierra 2-4A: slightly smoother, slightly bigger.
  • Bayer: ordered pattern, retro look, smallest dithered output.

Why GIFs are big

GIFs are limited to 256 colours per palette and lack inter-frame compression. The palette pipeline used here gets close to the theoretical best: at the cost of a slow two-pass encode. For long clips, consider exporting an .mp4 + auto-play loop instead.

Pro tips

Tips & best practices

Trim first, encode second

A GIF is far more sensitive to length than width. Drop a few seconds off either end before tuning FPS.

Width 480 is the sweet spot for docs

480 px wide at 10-15 fps gives a sharp, web-ready GIF for tutorial embeds without ballooning the file.

Floyd-Steinberg for gradients, none for UI

Use Floyd-Steinberg when the source has smooth gradients (skin tones, sky). Turn dither off for solid-colour UI captures.

Built for trust

Privacy & security

Encoding runs entirely in ffmpeg.wasm inside your browser. The source video is never uploaded, logged, or stored. Engine artefacts are served from our own origin (not a third-party CDN).

Frequently Asked Questions

Why are GIFs so big?

GIFs are limited to 256 colours per palette and have no inter-frame compression. Even a short HD clip can produce a multi-MB GIF. To stay small, trim the clip and lower the FPS / width.

What does "optimised palette" do?

It runs ffmpeg twice: pass 1 generates a custom 256-colour palette tuned to your specific clip; pass 2 uses that palette with optional dithering. The result is dramatically sharper than a single-pass GIF: at the cost of a slower encode.

Which dither should I pick?

Sierra 2-4A is the smooth default. Use Floyd-Steinberg for gradient-heavy footage (skin, sky), Bayer for a retro look, or None for UI captures with flat colours.

Does my file get uploaded?

No. Conversion runs locally via ffmpeg.wasm. The engine artefacts are served from the same origin under /ffmpeg/<version>/, and your input video is read straight from your device.

Why is the first run slower?

The ffmpeg.wasm core is ~32 MB and downloads only on demand. It is cached for the rest of the session after the first run.