Online Image Shrinker
OnlineImageShrinker
Back to Guides
Tutorials

How to Convert Video to GIF (Free, No Upload)

GIFs are everywhere — Slack reactions, Reddit threads, Twitter/X replies, product demos, and tutorial snippets. But finding the perfect GIF is hard. Making your own from a video clip? That is where the magic happens.

Despite being one of the oldest formats on the web — CompuServe introduced it back in 1987 (Wikipedia) — the GIF refuses to die. It still accounts for 16.8% of all images served on the web, and that share actually grew by a percentage point between 2022 and 2024 (HTTP Archive Web Almanac, 2024). Not bad for a 38-year-old.

OnlineImageShrinker's own in-browser video tools are switched off for now: they could not run reliably in every browser, and a tool that silently gives you the wrong result is worse than no tool. This guide uses FFmpeg, the free, open-source engine that most video-to-GIF converters run under the hood. It works the same on Windows, macOS and Linux, it never uploads your clip anywhere, and it adds no watermark.


Why Make a GIF from Video?

Use CaseWhy GIF?
Slack / Discord reactionsExpress your exact mood with a custom reaction
Product demosShow a feature in action without embedding a video player
Tutorial snippetsLoop a specific step so readers can follow along
Social mediaGIFs auto-play on Twitter/X and get more engagement than static images
Email marketingVideos don't play in most email clients, but GIFs do
Bug reportsShow developers exactly what's happening with a screen recording GIF
MemesCreate original memes from your favorite movie scenes

How to Convert Video to GIF

  1. Install FFmpeg from ffmpeg.org (on macOS, brew install ffmpeg; on Windows, winget install ffmpeg). Check it works with ffmpeg -version.
  2. Find your start point and length. Play the clip and note where the moment starts (for example 5 seconds in) and how long it lasts (for example 3 seconds). GIFs under 5 seconds work best.
  3. Run one command in the folder that holds your video:
ffmpeg -ss 5 -t 3 -i input.mp4 -vf "fps=12,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse" -loop 0 output.gif
  1. Open output.gif in a browser to preview it. If it is too big, lower the fps value or the 480 width and run the command again.

What each part does:

  • -ss 5 -t 3 — start 5 seconds in and keep 3 seconds. This is the trim.
  • fps=12 — 12 frames per second. 10–15 FPS is usually enough; higher is smoother but much larger.
  • scale=480:-1 — 480 pixels wide, height worked out to keep the shape. 480px is the sweet spot for web use.
  • palettegen / paletteuse — builds a 256-colour palette from this clip instead of a generic one. This is the step that stops a GIF looking muddy and banded.
  • -loop 0 — loop forever, the way reaction GIFs normally behave.

Everything runs on your own computer, so the video is never uploaded — there's nothing for a server to log, leak, or retain. If the clip is a screen recording and you would rather not use a command line, the free Windows app ScreenToGif records your screen straight to a GIF and lets you trim and resize it before saving.

Picking the right start and end points

The single biggest mistake people make is trimming too loosely. A GIF that's two seconds longer than it needs to be can easily double in file size, because every extra frame is stored in full (more on why below). Scrub to the exact frame where the action begins, set your start point, then find the moment it pays off and set the end. Cut any dead air at the front — a logo intro, someone settling into frame. Tight trims make smaller, punchier GIFs.


Why GIFs Get So Big (and How to Keep Them Small)

GIFs can get very large very quickly. A 10-second clip at full resolution can be 20MB+. To understand why, it helps to know how the format actually works.

Unlike modern video codecs, the GIF format stores each frame as its own indexed image, with limited compression between frames. There's no real motion prediction — a codec like H.264 can describe a frame as "the same as the last one, but this corner moved," while a GIF largely re-encodes the picture frame after frame. On top of that, every frame is restricted to a palette of just 256 colors (8 bits per pixel), a limit baked into the format since 1987 (Wikipedia). That's why a gradient or a video of a face often looks banded or dithered as a GIF — there simply aren't enough colors to render it smoothly.

The flip side: because GIFs are so inefficient, every setting you trim has an outsized effect on file size.

The Size Formula

File Size = Width × Height × Frames × Color Depth

To reduce file size, reduce any of those factors:

SettingEffect on File Size
Reduce width (e.g., 480px → 320px)~50% smaller
Lower frame rate (30 FPS → 10 FPS)~66% smaller
Shorter duration (10s → 3s)~70% smaller
Fewer colors (256 → 128)~20% smaller

Recommended Settings by Platform

PlatformMax SizeRecommended WidthMax Duration
Slack50 MB (free)480px5-10 sec
Discord10 MB (free), 50–500 MB (Nitro)480px5-15 sec
Twitter/X15 MB480px3-6 sec
Reddit20 MB640px5-15 sec
Email1-5 MB320px2-4 sec

GIF vs. Video: When to Use Which

GIFs are not always the right choice. Here is the decision matrix:

FactorGIFVideo (MP4/WebM)
Auto-play✅ Yes (everywhere)❌ Often requires click
Sound❌ No audio✅ Full audio
File size⚠️ Large (10-50 MB)✅ Tiny (1-5 MB for same clip)
Quality⚠️ 256 colors max✅ Millions of colors
Email support✅ Plays in all clients❌ Most clients block video
Best forShort loops, reactionsLong content, tutorials

Rule of thumb: If it needs sound or is longer than 10 seconds, use video. If it needs to auto-play everywhere and loop endlessly, use GIF.

What about modern formats?

If your GIF is destined for your own website rather than a chat app, it's worth knowing that the web has largely moved on to more efficient formats. JPEG's share of web images fell from roughly 40% to 32% between 2022 and 2024, while newer formats picked up the slack — AVIF, despite still being around 1% of all images, saw the number of AVIF files served nearly quadruple over the same two years (HTTP Archive Web Almanac, 2024). A short, silent, auto-looping MP4 or WebM clip will almost always be a fraction of the size of the equivalent GIF while looking sharper. Reserve true GIFs for the places that genuinely require the format — Slack, Discord, email, and forums that don't accept inline video.


Creative Ideas for Custom GIFs

1. Screen Recording GIFs

Record a quick workflow on your screen (using Windows Game Bar or macOS Screenshot), then convert to GIF. Perfect for:

  • Bug reports — show the exact steps that trigger a bug.
  • Feature demos — show clients a new feature without a video call.
  • Tutorials — loop a specific step in a how-to guide.

2. Movie & TV Reaction GIFs

Clip your favorite reaction from a movie scene. Trim to the perfect 2-3 second moment. Use it as a custom Slack emoji or Discord reaction.

3. Product Photography

If you have a turntable shot of a product (rotating 360°), convert it to a looping GIF for your e-commerce listing. Products that "move" get more clicks.

4. Before & After Loops

Create a GIF that alternates between two states — before and after editing, before and after cleanup, old design vs. new design. The looping nature of GIFs makes this comparison effortless.


Common Questions

Why does my GIF look grainy or washed out? That's the 256-color limit at work. Footage with smooth gradients, skin tones, or subtle lighting suffers the most because the format can't store enough colors to render them cleanly. If quality matters more than universal auto-play, export a short MP4 or WebM instead.

My GIF is too big for Slack/Discord — what do I cut first? Trim the duration first, then drop the frame rate to 10–12 FPS, then reduce the width. In that order you'll usually shave off the most weight with the least visible damage. A 480px-wide, 3-second, 12 FPS GIF covers the vast majority of chat use cases.

Is it really private if there's no upload? Yes. FFmpeg runs on your own machine, so the video bytes are processed locally and never transmitted. There is no server-side copy to be stored or exposed, and the command works with no internet connection at all.

What's the ideal frame rate? For most reactions and screen recordings, 10–15 FPS is plenty and keeps files small. Reserve 24–30 FPS for fast motion where smoothness genuinely matters — and expect the file to balloon accordingly.


Related Guides

We use cookies to measure how this site is used. No advertising cookies are set. By accepting, you allow these uses. See our Privacy Policy and Cookie Policy.