🌀 Video to GIF
Turn a clip into an animated GIF
Drag the start position and the preview jumps to that frame, so you can see exactly where the clip begins.
ℹ️ GIF is limited to 256 colours, so gradients and real photography will band. That is the format itself, not the tool. Encoding happens in your browser; the video is never uploaded.
🔒 Everything runs inside your browser — your files are never uploaded to our servers and we never see them. Close the tab and nothing is left behind.
Step-by-step
- Pick a video MP4, WebM, and MOV all work. The video is never uploaded — reading, frame extraction, and encoding all happen in your browser.
- Set the start point and length The preview jumps to that frame so you can see where the clip begins. Two to four seconds is the practical range — GIF has no compression between frames, so every frame is a full image and the file grows in proportion to duration.
- Choose fps and width These are the main dials for file size. 10 fps at 480px is a good starting point. If the result is too heavy, reduce the width first (it has the largest effect), then the frame rate.
- Press start Frames are extracted in sequence, a shared 256-colour palette is computed, and the GIF is encoded. Progress appears in the status line — with many frames this takes a moment, which is normal.
- Download You get a GIF ready to drop into a chat, a social post, or an article. If it is too large, go back and reduce the width rather than trying to compress a finished GIF — it is far more effective.
When you would use this
Memes and reaction clips
Cut an amusing moment out of a video and it drops straight into chat, Discord, or a forum. This is the main reason GIF has never gone away — it plays everywhere with nothing to click.
Demonstrating steps in an article
When a tutorial needs to show "click here, then drag like this", one GIF beats five screenshots. It also plays automatically in the article, so nobody has to press anything. Record your screen and convert it here.
Demos in GitHub and documentation
GIFs in READMEs and technical docs are practically a convention — no video player required, and they animate anywhere Markdown is rendered. Keep the width at 640 or below; GitHub's content column is not wide.
Places that will not take video
Some platforms, newsletters, and internal systems accept images but cannot embed video. GIF is the one format that animates while still counting as an image.
Two hard limits of GIF
Understanding why GIFs are large and often ugly is what lets you set the options sensibly.
256 colours, maximum. That is a 1987 design decision: each frame can use at most 256 distinct colours. Real video may contain hundreds of thousands, and compressing that down makes continuous areas — skies, skin, shadows — step into visible bands.
No compression between frames. Modern video codecs store only what changed since the previous frame, so a static background costs almost nothing. GIF has no such mechanism: every frame is a complete image. That is why a 5-second video clip of 500KB can become an 8MB GIF.
Getting it small and still watchable
The three dials differ enormously in effect. Adjust in this order:
- Width — by far the biggest lever. Halving the width leaves a quarter of the pixels. Going 480 → 320 often cuts more than half the file.
- Duration — a linear effect. Half the time, half the file. Most GIFs only need the 2–3 seconds where something actually happens.
- Frame rate — also linear, but drop it too far and you get a slideshow. 10 fps is the usual floor; 8 fps is visibly choppy.
What material suits GIF
Works well: screen recordings, UI demonstrations, illustration and animation, anything with flat blocks of colour. Such material has few colours to begin with, so 256 is ample and compression works well.
Works badly: live-action footage, landscapes, close-ups of people, anything with heavy gradients or noise. These hit both problems at once — visible banding and a huge file.
If your material is in the second group and the destination supports video, seriously consider just using MP4. GIF's value is compatibility, not quality.
Frequently asked questions
Why do the colours look banded and odd?
Why is the file so large?
Is there a better option?
Is the video uploaded?
<video> element and a canvas, and the palette computation and LZW encoding are done by this page's own JavaScript — no external library, and no network requests at all.What you might need next
Image work rarely ends in one step. These pair up with Video to GIF most often:
- 🎬 Video Frame Grab — Grab any frame as a cover image
- 📐 Resize Image — By width, percentage, or exact size
- 🎯 Compress to Size — Say 2MB and it lands under 2MB
Want to share the result? Upload turns images, photos, or videos into a short link with optional password, expiry, and view limits. Or head back to all 12 tools.
More tools
Compress Image
Shrink file size while keeping quality
Compress to Size
Say 2MB and it lands under 2MB
HEIC to JPG
iPhone photos into a format everything reads
View & Remove EXIF
See what your photo reveals, then strip it
ID Photo Sizes
Passport and ID sizes, print sheet included
Resize Image
By width, percentage, or exact size
Upscale Image
Enlarge up to 4× the original size
Crop Image
Drag to select the area to keep
Rotate Image
Batch rotate and flip
Add Watermark
Text watermark with position & opacity
Blur & Redact
Hide faces, plates, and personal data
Convert to JPG
PNG, GIF, and WebP to JPG
JPG to PNG
Convert to lossless PNG or WebP
PNG to WebP
Typically 30%+ smaller files
Split into Grid
Cut into a 3×3 Instagram grid
Merge Images
Join several images into one long strip
Favicon Generator
Every size plus a real .ico file
Extract Colours
Pull the key colours with HEX and CSS
SVG to PNG
Vector to raster at any size you want
Image to Base64
Data URI, CSS, and HTML snippets
Video Frame Grab
Grab any frame as a cover image
Remove Background
For white and green-screen product shots
Image to Text (OCR)
Pull the text out of a screenshot
Images to PDF
Merge multiple images into one PDF
PDF to Images
Every page as a JPG or PNG