Dev Tools
Client-sidefiles never upload

Video → GIF (MP4 / WebM / MOV → GIF)

Drop a video, pick a **start / end** time, **fps**, and **output width**. We seek the video frame-by-frame in your browser, capture to canvas, and emit a GIF with gifenc. **Files never leave the browser.**

How to use
  1. Drop a video (MP4 / WebM / MOV); we read the metadata and show the dimensions + duration. The native player below lets you scrub.
  2. Use the Start / End sliders to crop the segment (the whole video makes a giant GIF — pick 1-3 seconds).
  3. Tune fps (5-30; 15 ≈ GIPHY), output width (height follows aspect), Palette colours for size vs banding, Contain / Cover for off-aspect output.
  4. The estimate line shows *N frames + resolution*. Hit Convert & download GIF and watch the progress.
Tips
  • Size blows up with long windows, high fps, or large palettes. 1-3 s × 10-15 fps × 128 colours is the sweet spot.
  • GIF is indexed colour (8-bit palette) — product demos / screencasts compress well; live-action photos band hard.
  • Why not ffmpeg.wasm? It needs 30MB+ to load. We use the browser's built-in video seeking + gifenc (~50KB), covers 99% of needs.
  • vs ezgif.com: they upload to a server with 100MB / 200-frame caps and ads. We process in the browser, no upload.

💡 video.currentTime is async — we await the seeked event each frame so captures align with the requested time. 1 second at 15 fps takes ~1-2 seconds total. Video never leaves the browser.

Related tools