Video to GIF Converter

Choose the seconds worth keeping, set a frame rate and a width, and this page writes the GIF for you. Your browser reads the file; it never leaves the machine.

All tools

Pick a video to convert

Drop a file here, or browse for one. MP4, WebM and MOV, up to 200 MB.

Everything runs in your browser. Nothing is uploaded.

Where a GIF still beats a video file

A GIF plays where a video file will not. Drop one into a pull request description, a README, a release note or an issue comment and it starts on its own, inline, with no player to embed, nothing to host and no click to spend. That makes it the right format for showing a reviewer the three seconds that matter, or for putting a short demonstration at the top of a feature's documentation. The trade is real, though: no sound, a coarse palette and a file heavier than the video it came from, so keep it to the part that has to be seen.

Width and frame rate decide the size, not the seconds

A GIF stores every frame as a full image, so the file grows with the number of frames and with the pixels in each one. Width is the strongest lever, because halving it quarters the pixels in a frame, and 480 pixels wide instead of 640 is already a little over half the bytes. The frame rate is the other one and it is linear, so 10 frames per second costs a third less than 15 while still reading as motion. Seconds matter least of the three, which is why narrowing a clip usually helps more than shortening one that is already short.

Why the range is capped

The range stops at 30 seconds or 300 frames, whichever runs out first. Each frame is seeked to, drawn, reduced to its own 256-colour palette and appended before the next one starts, so a longer range costs both waiting and bytes in the finished file. At 15 frames per second the 300-frame ceiling arrives first, at 20 seconds; at 10 it is the 30-second one that stops you. A clip longer than that is usually two GIFs rather than one.

Questions about writing a GIF

No. The file is opened with an object URL, decoded by the browser's own video decoder and drawn frame by frame onto a canvas in this page, and the GIF is assembled in the same tab. Nothing is sent to a server, which is also why the work takes as long as it does and why closing the tab ends it.

A GIF carries at most 256 colours in a frame, so every frame is reduced to a palette of that size before it is written. Smooth gradients and anti-aliased text suffer most, because the shades they rely on are merged into the nearest palette entry. A screen recording of a flat interface survives this far better than photographic video does.

A GIF has no audio track at all, so there is nothing for the sound to be carried over into. If what is being said is the point of the clip, a video file is the right format and a GIF is not.

Whichever ones the browser already plays, because the decoding is the browser's own. WebM and MP4 open almost everywhere; a MOV depends on the codec inside it, and a file straight off a camera may use one no browser has ever shipped. If the page reports that it could not open the file, re-save it as WebM or MP4 and try again.

Take the width down first, because every frame shrinks with it and the saving is the largest of the three. The frame rate is next, and 10 frames per second instead of 15 removes a third of the frames without making the motion look broken. Trimming seconds is the last resort, since it is the only one of the three that costs you part of what you were showing.

Start creating your next app now