Video to GIF

A clip as an animated GIF, with the size warned about before you make it.

Drop a video here, or click to choose

MP4, MOV, WebM or MKV. Frames are decoded on your own machine and nothing is uploaded.

What video to GIF is

Sampling frames from a video and writing them into a GIF. GIF stores each frame as a separate 256-colour image compressed with LZW, with no motion prediction, no transform coding and no modern entropy coder — which is why the same clip as an MP4 is roughly a tenth the size.

What this tool does that others do not

  • Three trade-offs, all priced on screen

    The frame count, the real playback rate and an estimated size stay in view as you move width, frame rate and window. Width is the cheapest saving because file size scales with area; frame rate is next; length is last, because a shorter GIF is a worse GIF and the other two are usually free.

  • Only the frame rates GIF can actually store

    The format stores the delay between frames in hundredths of a second, so 30 fps needs 33.3 ms, which cannot be written — a file claiming 30 fps really holds 30 ms and plays at 33.3. 15 becomes 14.3 and 12 becomes 12.5. Those errors compound for anyone lining a GIF up against a soundtrack or a screen recording, so the menu offers 5, 10, 12.5, 20 and 25 and prints the delay in milliseconds underneath.

  • Frames requested by timestamp, in order

    H.264 and its successors use bidirectional frames, so decode order and presentation order differ for most real footage. An encoder that appends frames as the decoder produces them ships as "the animation is jumbled, but only on iPhones" — a defect that survives for months because nobody on the team can reproduce it.

    Safari up to version 26.3 returns decoded frames in the wrong order; WebKit fixed it in the Safari 27 beta, leaving a long tail of devices that have not updated.

  • The estimate is labelled as loose

    LZW’s ratio depends entirely on the picture — flat interface footage packs several times tighter than a handheld shot of leaves — so the figure tells you which order of magnitude you are heading for rather than the answer. The results panel prints the estimate next to the real number afterwards, so you can see how far off it was.

How to use it

  1. Set the window first

    Everything else is cheaper on fewer seconds, and the window is the only setting that cannot be recovered by re-encoding.

  2. Halve the width before touching anything else

    Going from 640 to 320 pixels cuts the output by roughly three quarters, for a change most people will not notice in a chat window.

  3. Pick a frame rate from the list

    They are the rates GIF can keep exactly. Anything else drifts, and the drift only shows up later.

  4. Read the estimate, then encode

    It is there to stop the surprise happening in your downloads folder.

Worked examples

Real input, real figures.

Halving the width

You give it

A clip exported at 640 pixels wide, then at 320.

You get

Roughly a quarter of the output size, because file size scales with area. That is a far larger saving than any palette or frame-rate change, and a far less visible one.

A frame rate the format cannot express

You give it

30 frames per second requested.

You get

GIF’s finest step is 10 ms, so 33.3 ms cannot be written. The file holds 30 ms and plays at 33.3 fps. The menu here offers only rates that divide cleanly into the 10 ms grid, and prints the delay each one produces.

Against an online video-to-GIF converter

AspectThis toolA typical converter
SizeEstimated before encoding, from your footageDiscovered after the download
Frame rates offeredOnly those GIF can store exactly12, 15, 30 — none of which it can
Frame orderRequested by ascending timestampTaken in decode order
UploadNoneThe whole video

Guide

What it will not do

  • Firefox on Android cannot run this page: it has no WebCodecs at all and therefore no way to decode a video frame. The tool says so rather than spinning. Video to MP3 does work there, because audio decoding never needed WebCodecs.

GIF is a 1987 format, and it shows in the file size

A GIF stores each frame as a separate 256-colour image compressed with LZW. There is no motion prediction, no transform coding, and no modern entropy coder — three of the four things that make an MP4 of the same clip roughly a tenth the size. Nothing about that is fixable by a better encoder, which is why every GIF tool on the internet is really a tool for deciding how much to give up.

The three settings above are exactly those trade-offs, and the panel keeps the frame count, the real playback rate and an estimated size in view as you move them. Width is the cheapest saving, because file size scales with area: going from 640 to 320 pixels wide cuts the output by roughly three quarters. Frame rate is next. Length is last, because a shorter GIF is a worse GIF and the other two are usually free.

The size figure is an estimate, and a loose one — LZW's ratio depends entirely on the picture, so flat interface footage packs several times tighter than a handheld shot of leaves. It is there to tell you which order of magnitude you are heading for before you spend twenty seconds finding out. The results panel prints the estimate next to the real number afterwards, so you can see how far off it was.

Why 12, 15 and 30 fps are not on the menu

GIF stores the delay between frames in hundredths of a second. That is the whole resolution available: 10 ms steps, no finer. 30 fps needs 33.3 ms, which cannot be written, so a file claiming 30 fps actually holds 30 ms and plays at 33.3. 15 fps becomes 14.3. 12 fps becomes 12.5.

Those are small errors that compound. Anyone lining a GIF up against a soundtrack, a screen recording or another animation will find the drift eventually, and by then the cause is three steps removed from the symptom. So the menu here offers only the rates a GIF can keep — 5, 10, 12.5, 20 and 25 — and prints the delay in milliseconds underneath, which is the number actually written into the file.

Frames are asked for by timestamp, not taken as they arrive

Modern video is not stored in the order it is shown. H.264 and its successors use bidirectional frames, which reference pictures both before and after themselves, so decode order and presentation order differ for most real footage. Safari up to version 26.3 returns decoded frames in the wrong order because of it; WebKit fixed it in the Safari 27 beta, which leaves a long tail of devices that have not been updated.

A GIF encoder that simply appends frames as the decoder produces them ships as "the animation is jumbled, but only on iPhones" — a defect that survives for months because nobody on the team can reproduce it. This tool asks the decoder for an explicit list of timestamps in ascending order instead, so the sequence is its own property rather than the decoder's. The same choice is what makes the frame rate exact regardless of the source file's own rate.

The one browser this page cannot serve is Firefox on Android, which has no WebCodecs at all and therefore no way to decode a video frame. It says so rather than spinning. The video-to-MP3 tool does work there, because audio decoding never needed WebCodecs. More in video & audio tools.