Video to GIF Converter

Turn a few seconds of an MP4, MOV or WebM video into a looping GIF. Nothing is uploaded: the frames are decoded and encoded in your browser.

Convert a video to GIF

Free. Your video stays on your device: the GIF is made by your browser.

or drop it here

MP4, MOV, WebM, MKV. Pick the seconds you want after it opens.

ffmpeg command

The same GIF settings, from a terminal

Run it in the folder of the video, with ffmpeg installed. It updates with your settings.

To convert a video to a GIF, open the video above, drag the handles to the seconds you want, pick a width (480 px is a good start) and a frame rate (10 to 15 fps), then press Convert to GIF. The page builds one palette for the whole clip, encodes the frames in your browser and shows the GIF with its exact size before you download it.

How to convert a video to GIF

  1. Open the video. Choose a file or drop it on the box: MP4, MOV, WebM and MKV are accepted. You can also paste a https:// link to a video file.
  2. Pick the seconds. Drag the two handles under the preview, type the start and end in seconds, or pause the preview on a frame and press Start here or End here. Play clip plays only the selection, at the chosen speed.
  3. Set the size and motion. Width from 240 to 800 pixels (never wider than the video), 5 to 25 frames per second, and a speed from 0.5x to 2x.
  4. Set the colors. 64, 128, 192 or 256 colors, with or without dithering, looping forever or playing once. The estimated size updates as you change anything.
  5. Convert and download. The progress bar shows the frame being encoded and where the size is heading. Cancel stops at once. When it is done, the GIF plays on the page with its final size and a download button.

What makes a good GIF

A GIF is a stack of full pictures, so every pixel of every frame costs bytes. The best GIFs are short, small and focused on one movement. Four settings decide almost everything:

Speed is the hidden fifth setting: at 2x, a 6-second action fits in a 3-second GIF with half the frames. At 0.5x, a quick gesture becomes readable but the GIF has twice as many frames.

File size vs quality

The estimate shown before converting is a range: the first frame is a full picture, and each next frame only stores the pixels that changed, so a still camera costs far less than a moving one. While the GIF is being encoded, the progress line projects the final size from the frames already done, which is much closer.

ChangeEffect on sizeEffect on quality
Width 480 to 320 px51 to 56% smaller in our testsSofter, still fine in chats
15 to 10 fpsAbout a third fewer framesSlightly less fluid motion
256 to 128 colors15 to 30% smaller in our testsMore banding in gradients
Dithering off12 to 25% smaller in our testsVisible steps in smooth areas
Shorter clipProportional to the seconds removedNone

When a GIF ends above 8 MB, the page lists the setting changes that would make it lighter. A GIF in a README, an email or a help article is best kept under a few megabytes, because it is downloaded in full before it plays.

GIF vs MP4 and WebM for the web

GIF is from 1987. It stores each frame as up to 256 indexed colors with lossless LZW compression, and it has no sound. MP4 (H.264) and WebM (VP9, AV1) compress the changes between frames with a video codec and keep millions of colors. On the same 4-second, 480-pixel clip at 12 fps, our tests gave:

FormatSizeColorsSoundPlays in
GIF (this page, 256 colors, dithering)3.2 MB256 per frameNoEverywhere an image works: chats, email, READMEs, forums
MP4, H.2640.23 MBMillionsOptionalEvery browser and phone, as a video
WebM, VP90.16 MBMillionsOptionalCurrent browsers, as a video

So use a GIF where only an image is allowed: a GitHub README or issue, an email, a forum or chat that does not autoplay video, a slide. On your own website, a muted looping video does the same job at a tenth of the weight:

<video src="clip.mp4" autoplay muted loop playsinline></video>

Making the GIF with ffmpeg instead

ffmpeg makes good GIFs in two steps: palettegen computes the best 256 colors for the clip, then paletteuse maps every frame to that palette. Doing both in one filter chain looks like this:

ffmpeg -ss 2 -t 4 -i "input.mp4" -vf "fps=12,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen=max_colors=256[p];[b][p]paletteuse=dither=bayer:bayer_scale=3" -loop 0 "output.gif"

-ss 2 -t 4 takes 4 seconds from the 2-second mark, fps=12 and scale=480:-1 set the frame rate and width, dither=bayer picks ordered dithering like this page, and -loop 0 loops forever (-loop -1 plays once). To change the speed, add setpts=PTS/2, at the start of the filter for 2x. The command box under the converter writes this command with your file name and your settings.

Without the palette step, ffmpeg uses a fixed generic palette and the GIF looks blotchy. ffmpeg is the better choice for batches, for very long clips, and for codecs your browser cannot decode.

How this converter works

Nothing leaves your device. The video is read from your disk; a pasted link is downloaded by your browser, up to 500 MB, and nowhere else. Then:

The sound track is ignored: a GIF cannot carry it. If the video is a stream you only have as an .m3u8 link, turn it into an MP4 first with the M3U8 to MP4 converter.

Need the video first?

Vidora is a Chrome extension that saves the video playing on a page as one MP4 with picture and sound, HLS streams included. Save the clip, then turn it into a GIF here.

Frequently asked questions

How do I convert a video to a GIF?
Drop the video on the box at the top of this page, drag the two handles to the part you want, choose a width and a frame rate, then press Convert to GIF. The page decodes the frames on your device, builds a palette and encodes the GIF in your browser. Download it when the preview appears.
How do I make a GIF smaller?
Cut the clip first: every second adds frames. Then lower the width (480 to 320 pixels removes more than half of the pixels), the frame rate (10 fps is enough for most clips) and the number of colors. Turning dithering off saves a little more but shows steps in gradients.
Is a GIF bigger than the MP4 it comes from?
Almost always. A GIF stores up to 256 colors per frame with lossless LZW compression, while MP4 and WebM use video compression across frames. In our tests, a 4-second 480-pixel clip made a 3.2 MB GIF and a 0.23 MB MP4 at 12 frames per second.
What frame rate should a GIF use?
10 to 15 frames per second looks smooth for most clips and keeps the file small. Use 20 to 25 fps only for fast motion. GIF delays are counted in hundredths of a second, so this page rounds them on the running total to keep the GIF as long as the clip, to the nearest frame.
Does a GIF have sound?
No. The GIF format holds pictures only, so the sound of the video is left out. If you need sound, share a short MP4 instead.
Is my video uploaded?
No. The video is read from your disk by your browser, and the GIF is made on your device by web workers. Vidora receives nothing. The only download the converter makes is a https:// link that you paste yourself.
How long can the GIF be?
The page accepts a selection of up to 60 seconds of video and 1,500 frames, and warns above 15 seconds. At 0.5x the GIF lasts twice as long as the selection. Long GIFs grow fast: most good GIFs last 2 to 6 seconds.
Can I convert MOV, WebM or MKV to GIF?
Yes, when your browser can decode the video inside. H.264 in MP4 or MOV and VP8, VP9 or AV1 in WebM work in current browsers. HEVC and some MKV files depend on the browser and the computer; when they fail, the page says so and the ffmpeg command still works. A WebM with a transparent background is placed on white, because GIF transparency is all or nothing and this page uses it for unchanged pixels.

Romain Gouraud, RGC Digital LLC

Updated 2026-10-09. The encoder was tested on frames decoded by ffmpeg from an H.264 MP4 with smooth gradients and full-frame motion, a VP9 WebM and a flat-color test clip: every GIF had the planned number of frames, size and duration in ffprobe, decoded without errors, and its PSNR was 1.6 to 5.5 dB higher than a GIF made by ffmpeg's palettegen and paletteuse with the same settings, for a file between 28% smaller and 10% larger. Decoding uses Mediabunny 1.61.3 (MPL-2.0) and encoding gifenc 1.0.3 (MIT), both served from this site.