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
- 1Drop a video file (mp4, webm, mkv, mov)
- 2Drag the timeline thumbs to pick the start and end of the GIF
- 3Pick an FPS (5-30) and a max width
- 4Choose a dither algorithm or leave it on default
- 5Click Convert: your high-quality GIF is generated locally
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.
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.
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).
Related tools
- GIF to Video Converter
Convert any animated GIF into a much smaller mp4 or webm: entirely in your browser via ffmpeg.wasm. mp4 + auto-play loop is typically 10-20x smaller than the original GIF.
Video Tools
- Video Compressor
Shrink mp4, webm, and mov videos right in your browser with ffmpeg.wasm. Choose a target preset (web 720p / 1080p, Discord 25 MB, Twitter 512 MB) or set a custom H.264 CRF: your files never leave the device.
Video Tools
- Video Trimmer
Trim mp4, webm, mkv, and mov videos in your browser with ffmpeg.wasm. Lossless (-c copy) for instant cuts at keyframes, or frame-accurate re-encode when you need precision. No upload, no signup.
Video Tools
- Video Frame Extractor
Extract still frames from any video as PNG or JPG: every N seconds, every N frames, at a single timestamp, or N evenly-spaced thumbnails. Runs entirely in your browser via ffmpeg.wasm. Downloads as a ZIP.
Video Tools
- XML ↔ JSON Converter
Convert between XML and JSON in both directions with attribute preservation and configurable formatting
Developer Tools
- YAML Formatter & Validator
Pretty-print, lint, and validate YAML with configurable indentation and detailed parser errors
Developer Tools
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.