Skip to content

Video to GIF Converter Online Free

Turn a short video clip into an animated GIF. Set the framerate, the width, and the trim points so the output stays small.

Uploaded to our server over TLS·auto-deleted in 10 minutes.

Learn more

Optional. Leave empty for start of video.

Optional. Leave empty for end of video.

Files are processed on our secure server and automatically deleted after 10 minutes. Max file size: 1.00 GB.

About this tool

This tool converts a short video clip into an animated GIF. Drop in an MP4, WebM, MOV, AVI, or MKV, pick a start and end time, set a framerate and output width, then convert. GIF encoding genuinely needs ffmpeg with a proper two-pass palette-generation step; anything else produces banded, dithery output that looks like it was made in 1998. So the file uploads over HTTPS to a small server in Germany (Hetzner) where ffmpeg does the work. The upload and the output GIF are both auto-deleted from the server's disk within 10 minutes of conversion. No account, no email gate, no watermark on the output, no logging of file contents.

How to video to gif converter online free

  1. Upload your video

    MP4, WebM, MOV, AVI, or MKV all work. The three usual sources are phone recordings, desktop screen captures (QuickTime, OBS, Game Bar), and footage out of editing software. The file uploads over HTTPS to our server. If your file is in a format not listed, transcode it to MP4 first using HandBrake or VLC.

  2. Set start and end times

    Trim to the moment you actually want. Keep clips under about 15 seconds or the GIF balloons fast. GIF file size grows roughly linearly with duration at fixed FPS and dimensions, so a 30-second clip is roughly twice the size of a 15-second one with everything else equal. Trim aggressively. Most "demo GIFs" only need 5 to 8 seconds.

  3. Set framerate and width

    10 FPS at 480 px wide is the sane default for messaging and embedded README demos. 15 FPS at 600 px if motion smoothness matters more than the file size, useful for animation showcases or fast-paced gameplay. 8 FPS at 360 px if you are trying to squeeze under a 5 MB upload limit. Each lever has a real effect: framerate roughly linearly, dimensions roughly quadratically.

  4. Convert and download

    ffmpeg runs a two-pass palettegen and paletteuse so the colours don't look like a 1996 GeoCities page. The GIF comes back to your browser as a download. Both the input video and the GIF output are deleted from the server automatically within 10 minutes. There is no archive, no history, no copy retained on the disk.

Features

Precise trimming controls

Pick the exact start and end seconds for the segment you want. Useful when only one specific moment of a 30-second screen recording matters and you don't want to dump the whole thing on a Slack channel. Trimming server-side before encoding means the data fed to the GIF encoder is already just the segment you care about, which keeps the output size sensible and the conversion fast. The trim happens via ffmpeg's seek-then-input pattern so it's precise to the frame.

Framerate control with honest trade-offs

Choose between 5 and 30 FPS for the output. Lower FPS means smaller file size and choppier motion. Higher FPS means smoother motion and a much bigger file. For most UI demos and short reaction clips, 10 to 15 FPS is invisible in quality terms but cuts the file size roughly in half versus 24 FPS. There is a real trade-off here. I won't pretend higher is always better. For fast hand-drawn animation or fast-paced gameplay, 24 to 30 FPS does look noticeably better; for slow UI demos, 10 FPS is fine.

Output width control

Set the output width in pixels. Height scales automatically to preserve the original aspect ratio so you don't get squashed output. GIF file size scales roughly with the square of dimensions, so going from 720 px wide to 480 px wide is around a 55% size cut for the same clip at the same FPS and duration. Most messaging apps display GIFs at 400 to 500 px anyway because of their UI constraints, so going wider just wastes both upload time on your end and download time on the recipient's.

Proper palette generation

GIF only supports 256 colours per frame, which is what makes optimisation matter so much. ffmpeg runs a palettegen pass that samples the dominant colours of your clip, then a paletteuse pass with Floyd-Steinberg dithering so the dominant colours of your specific clip get the encoding budget. Lazier converters skip the palette pass entirely and your output looks like rainbow noise on gradients. This is the main reason ffmpeg can't live in the browser as WASM. The palette pass needs the full clip's frames in memory and the algorithm doesn't fit comfortably in a 50 MB WASM budget.

Frequently asked questions

Is this free, and is there any signup or quota?
Yes, free. No account, no email gate, no per-day cap. I pay for the server myself and the per-conversion cost of GIF encoding is small. If you make a hundred GIFs in a row I'm not going to send you a bill, but I will probably notice in the server logs and be mildly curious about what you're building. No ads on the page right now; if I ever add some to cover hosting, that will be obvious and disclosed up front in the privacy policy.
Where does my video go, and how long does it stay on the server?
The video uploads over HTTPS to our server, a small FastAPI service hosted in Germany. ffmpeg there extracts the trimmed segment, builds an optimised palette, and writes the GIF using Floyd-Steinberg dithering. Both the uploaded input video and the GIF output file are deleted from the server's disk automatically within 10 minutes of conversion. There is no database keeping a copy, no S3 bucket, no off-site backup, no inspection of file contents, and no analytics on what people are converting. If you want to audit the auto-delete behaviour, the API code is in the project repo and the deletion job is a simple cron + tmpfile pattern.
How do I keep the output file size down?
Three levers, in order of impact. First, shorter duration: GIF size is roughly linear in clip length. Second, smaller output width: size is roughly quadratic in dimensions, so 480 px is dramatically smaller than 720 px even for the same content. Third, lower framerate: going from 24 FPS down to 12 FPS roughly halves the file size. If you want a 3 MB output from a 10-second clip, try 480 px wide at 10 FPS as a starting point and dial up or down from there. Heavy motion blows up size faster than still scenes because ffmpeg has less room to compress with the GIF format's limited toolkit.
When should I use a GIF instead of just sending the MP4 file?
Only when the destination autoplays GIFs but not MP4s, or strips out video tags. The list of places where that matters is real but specific: Slack messages, GitHub README files and PR comments and issue comments, Notion pages embedded as image, Discord image embeds (when not using the upload-as-attachment path), the README of any open-source repo on GitHub or GitLab. In every other context (email attachments, websites you control, any HTML where a `<video>` tag works) MP4 is dramatically smaller, higher quality, and supports audio. Don't put a 12 MB GIF on a webpage when a 1 MB MP4 in a video tag plays better.
What are the duration and input size limits?
Input video up to 200 MB. For the output GIF, you control the duration via the trim points, but practically anything over 15 to 20 seconds at usable framerates and dimensions produces files too big for most messaging apps. If your source clip is 5 minutes long and you only need one moment, set the trim points to grab just that moment rather than uploading the whole thing through. You'll save upload time and the conversion will be faster because ffmpeg only has to process the trimmed segment for the palette pass.