CompressVideoOnline

Video to GIF Converter

Pick the seconds, set the size — a looping GIF with a palette built for your clip, made on your device.

Runs entirely in your browser. Your videos never leave this device.

This video to GIF converter turns a few seconds of any MP4, MOV or WebM — iPhone footage included — into a looping GIF on your device; nothing is uploaded. Drag the filmstrip handles to the seconds you want, pick a width, frame rate and colour count, or set a size target — under 20 MB for Discord (verified Sep 2026) — and the tool compresses, measures the real file and adjusts, up to 5 passes. Every frame is re-encoded with a palette computed for your clip rather than a fixed one. The caveat is physics: a GIF stores every frame whole, so 10 seconds at 480 px came out at 1.7–8.6 MB in our tests depending on content, and a single second at full 1080p ran 1.8–8.6 MB. No watermark, no signup, no duration cap, no artificial size cap.

How do I make a GIF from a video?

Pick a few seconds of the video rather than the whole thing, and convert that range at a reduced width and frame rate. The reason is physics: a GIF stores every frame as a complete indexed image with no inter-frame prediction, so 10 seconds of 1080p at its own frame rate comes out in the tens of megabytes, while 10 seconds at 480 px and 15 fps came out between 1.7 and 8.6 MB in our tests, depending on content. In this tool you drop the MP4, MOV or WebM, drag the two handles on the filmstrip to the seconds you want (the first 5 by default), keep the defaults of 480 px wide, 15 fps and 256 colours, and convert; a 3-second range of 1080p footage takes about 3 seconds and the result is a GIF that loops forever. Dropping to 128 or 64 colours saves space at the cost of banding on gradients, so treat colours as a size lever rather than a default. If the GIF has to fit a limit — 20 MB for Discord, 10 MB for GitHub, 5 MB for X on mobile (verified Sep 2026) — set it as a target and the tool compresses, measures the real file and re-encodes from the source at lower settings, up to 5 passes, telling you if it cannot get there. Everything runs in your browser, so the video is never uploaded.

The facts that matter

InputOne video — MP4, MOV (iPhone footage included), WebM, MKV, AVI, 3GP, MTS, WMV, anything FFmpeg reads; files the browser can’t play still convert, without preview or timeline — type the range instead
OutputAnimated GIF that loops forever, from the range you pick on a filmstrip timeline — first 5 s by default, soft warning past 15 s, no duration cap
LeversWidth 128 / 320 / 480 (default) / 640 / original, never upscaled · 10 / 15 (default) / 20 / 25 fps · 256 (default) / 128 / 64 colours
QualityEvery frame quantised with a palette computed for your clip (up to 256 colours), ordered dithering tuned for compressibility, frame-difference optimisation on
Target sizeOptional — 20 / 15 / 10 / 8 / 5 MB or a custom number; encode, measure the real file, re-encode from the source at lower settings (colours → frame rate → width), up to 5 passes; a miss is reported, the smallest result kept and a shorter range suggested
SpeedAbout 0.7× realtime for 1080p — a 3 s range in ~3 s, 10 s in 14–25 s depending on content; 4K sources roughly 4× slower; only the selected range is decoded
Not includedText or captions, cropping, reverse or boomerang, speed change, GIF → other formats — this version does one job
Limits & privacyNo watermark, no signup, no artificial size cap — browser memory (~1–2 GB) is the practical ceiling; the engine (~32 MB) downloads once and is cached; the video never leaves your device

Get a better result

Frequently asked questions

Why is my GIF 10–50× bigger than the MP4 it came from?

Because a GIF has no video compression: an MP4 stores one full picture and then mostly the differences between frames, while a GIF stores every frame as a complete indexed image with no inter-frame prediction — the most the format can do is skip pixels that did not change. That is why 10 seconds of 1080p at its own frame rate comes out in the tens of megabytes — we measured 53 MB for just 5 seconds at 1920 px, and 1.8–8.6 MB for a single second at 1080p and 15 fps — while the same clip as MP4 is a fraction of that. The only real levers are duration, pixel count, frame rate and colours, size tracks frame rate almost exactly (15 → 10 fps removed about 31 %) and grows a little more slowly than pixel count as width goes up (doubling the width quadruples the pixels but multiplied the file by about 3.3× in our tests) — which is why the defaults here are 480 px, 15 fps and 256 colours. Content matters as much as settings: at those defaults, 10 seconds came out at 1.7 MB for a flat screen recording and 8.6 MB for gradient-heavy footage, because smooth gradients and camera noise leave the format little repetition to exploit. Size cannot be predicted reliably before encoding, so the tool shows the real figure afterwards.

How many fps should a GIF be — and why does a 60 fps GIF play at 10 fps?

10–15 fps for most GIFs — 15 is the default here and is smooth enough for most reactions and screen recordings; 20–25 only when motion has to look fluid and size matters less. Frame rate is one of the biggest size levers: a GIF’s size is roughly linear in fps, so 25 fps is about two and a half times the size of 10 fps for the same clip. Higher rates are also partly wasted: GIF frame delays are stored in hundredths of a second, and browsers play any delay under 2 hundredths at 10 hundredths, so a “60 fps GIF” actually plays back at 10 fps and 50 fps is the format’s ceiling. This tool offers 10, 15, 20 and 25 fps; when a size target is set, frame rate is the second thing it lowers, after colours.

What width should a GIF be?

480 px wide for most uses — it is the default here and in the same range as GIPHY’s 480p upload recommendation (verified Sep 2026); 320 px for chat reactions; 128 px for custom emoji, the usual size for those slots; 640 px when text or fine detail must stay readable, such as a screen recording. Width costs a little less than pixel count suggests: doubling it quadruples the pixels but multiplied the file by about 3.3× in our tests, so 640 px lands around 1.7× a 480 px GIF and 320 px around half. Only choose “original” when the source is 720 px or narrower: the tool warns above that, because at full 1080p a second of GIF ran 1.8–8.6 MB depending on the footage. Height follows the aspect ratio automatically, and nothing is upscaled — a source narrower than the width you pick stays at its own size.

How do I convert MP4 to GIF in high quality — 256, 128 or 64 colours?

Keep 256 colours, stay at 480 or 640 px, and use a converter that builds the palette from your clip instead of a fixed one — that choice is a large part of what separates a clean GIF from a speckled, colour-shifted one. A GIF frame holds at most 256 colours, so every conversion from video throws colour information away; this tool computes one palette from the frames you selected (255 colours plus one transparent slot) and applies ordered dithering — a regular pattern chosen because it compresses well, at the cost of a faint texture on flat gradients. 128 colours is the gentler step down; 64 can show visible banding on skies and gradients but is a legitimate lever for a hard size limit — which is why the target loop tries fewer colours first, then a lower frame rate, then a smaller width. Nothing is upscaled and the source video is never modified.

How do I make a GIF under 20 MB for Discord, or under any size limit?

Pick the 20 MB chip (or 15, 10, 8, 5 MB, or type your own) before converting: the tool encodes your range, measures the real file and, if it is over, re-encodes from the source video at lower settings — colours first, then frame rate, then width — up to 5 passes, stopping at the first that lands under the target and showing the settings it used. If five passes still miss, it says so, keeps the smallest result and suggests a shorter range; it never quietly hands you an oversize file. Discord’s free upload limit is 20 MB as of August 2026 (raised from 10 MB; 50 MB with Nitro Basic, 500 MB with Nitro; verified Sep 2026), which most converter pages still list as 8 or 10 MB. Other useful targets: 15 MB for X on the web and 5 MB in the X mobile app, 10 MB for GitHub, 8 MB as GIPHY’s recommendation, 5 MB for Notion’s free plan.

How long can a GIF be, and why do other converters cap the duration?

As long as you like here — there is no duration cap, because the work runs on your device rather than a server, whereas some server-based converters stop at 30 seconds at 10 fps, or 60 seconds only at 5 fps, presumably because every second costs them compute. Long GIFs are still a bad idea: size and conversion time both grow with every second, which is why the default is the first 5 seconds and a soft warning appears past 15 — 30 seconds costs roughly three times what 10 does. The GIF platforms agree: GIPHY accepts up to 15 seconds, Tenor up to 14 (verified Sep 2026). If you need 30 seconds of motion, a compressed MP4 is usually 85–95 % smaller.

Which platforms need a real GIF, and which convert it to video anyway?

You need a real GIF where only images are accepted: custom emoji (Discord and Microsoft Teams under 256 KB, Slack under 128 KB and 50 frames or fewer, Twitch animated emotes 512 KB and 60 frames or fewer), GitHub READMEs and issues (10 MB), Notion (5 MB per file on the free plan) and email (Gmail and Outlook.com take 25 MB attachments). Telegram, X, Facebook and Mastodon (up to 16 MB) convert an uploaded GIF to video on their servers, Shopify converts it to animated WebP, and WhatsApp and Reddit are widely reported to convert as well, though we have not verified that — on those, a GIF gains little over a short MP4, which is usually 85–95 % smaller with full colour. The same goes for web pages, where Lighthouse flags any animated GIF over 100 KiB and recommends video. Two Discord details trip people up: GIF attachments are fine up to 20 MB on the free tier, but Discord stickers are APNG at 320×320 and 512 KB — a GIF is not accepted there. Limits verified on the official pages, September 2026.

Can I convert an iPhone or Mac .mov to a GIF?

Yes — drop the .mov in and it converts like any other video, on your device, so the footage is never uploaded and the original is never modified. When your browser can play the file you get the preview and filmstrip to pick the range; when it cannot, the file still converts and you type the start and end instead. The same goes for WebM, MKV, AVI, 3GP, MTS and WMV — anything FFmpeg reads. One note for phone footage: 4K decodes roughly 4 times slower than 1080p, so keep the range short; the output is a standard looping GIF at the width you choose.

Is my video uploaded, and how long does it take?

Nothing is uploaded: the converter is FFmpeg compiled to WebAssembly, about 32 MB that downloads once and is cached, and after that every frame is decoded, quantised and written on your own device — open the browser’s network tab while converting and see that no request carries your video. Only the selected range is decoded, so time follows the selection, not the file: a 3-second range takes about 3 seconds, and 10 seconds of 1080p takes 14–25 seconds depending on content, roughly 0.7× realtime; 4K sources are about 4 times slower, and a size target can add up to four more encodes. That is also why there is no artificial file-size cap — browser memory, roughly 1–2 GB, is the practical ceiling, and the file itself still has to fit in it.

Related tools