GIF Maker

Create animated GIFs from video files for free. Set custom frame rate, size, and duration. No signup, no watermarks — everything processes in your browser.

Drag & drop a video or

Supports MP4, MOV, AVI, WebM, MKV

Your GIF

Generated GIF
File Size

Picking a clip that makes a good GIF

The GIF format dates from 1987. It's capped at a 256‑colour palette per frame, which is why photographic GIFs look posterised and banded, and why text and flat‑colour clips look fine. That one technical constraint explains almost every choice you'll make with this tool. Good GIF source material is short (2–5 seconds), loops cleanly, has simple colours, and comes from a segment of video where the camera doesn't move much — movement forces the palette to redraw each frame, bloating the file.

The four knobs and what they do

  • Start time — where in the source video to begin, in seconds. Use your video player to scrub and find the frame first.
  • Duration — how long the GIF runs. Capped at 30 s because beyond that, a video file would be both smaller and better.
  • Width — the output width in pixels; height is scaled to match. 480 px is a sensible default for chat; 320 px for small reaction GIFs; 720 px if it's going on a blog post.
  • FPS — frames per second. 12 fps is a reasonable default — higher than that and file size balloons for diminishing returns.

File size scales roughly with width × height × duration × fps. A 480 × 270, 5‑second, 12 fps GIF of a talking‑head clip lands around 1–2 MB. Doubling any dimension roughly doubles the file.

When a GIF is the wrong choice

If the destination platform supports video (Twitter/X, Reddit, Discord, Slack, iMessage, WhatsApp all do), an MP4 will usually be 5–10× smaller than the equivalent GIF for the same content. Modern messaging apps even display MP4s with the same "click to play, then loop" behaviour as GIFs. The only places where GIF is still the right format are old forums, email signatures, and small decorative animations in product docs. For everything else, video wins.

How this tool builds the GIF

The video is loaded into a hidden <video> element, seeked to your start time, and played frame‑by‑frame onto a canvas. Each canvas snapshot is quantised to a 256‑colour palette and appended as a frame using gif.js. When all frames are collected, gif.js assembles the LZW‑compressed GIF bytes and hands them back as a blob URL. Nothing is uploaded.

Privacy

The video stays in your browser's memory for the life of the tab. No server touches the file. Reloading or closing the tab releases it.