Guides

How to Turn a Video Into a GIF in 2026: Tools and Settings That Work

GIF Download · 2026

Most GIFs worth sharing start life as video. A three-second clip from a match, a product demo, a screen recording: trim it, resize it, and you have a loop that plays everywhere without a player. The tooling in 2026 splits cleanly into three tiers, and picking the right one before you start saves an hour of fighting export settings later.

This walkthrough uses a concrete example throughout: a 12-second 1080p clip of a coffee pour that needs to become a 480-pixel-wide, 3-second looping GIF under 2 MB for a newsletter embed.

Workspace with a video timeline being converted into a short looping GIF

Three tiers of tools, one decision

Browser converters like Ezgif handle one-off jobs with zero install. Desktop apps such as ScreenToGif on Windows or Gifski on macOS and Linux give frame-level control and far better palettes. FFmpeg sits underneath most of them and wins whenever you need repeatability, batch jobs, or a pipeline.

When the browser is enough

Ezgif's video-to-GIF tool accepts uploads up to about 100 MB, lets you cut start and end points on a timeline, and shows output size before you commit. For a single clip under a minute it is the fastest path. The catch: uploads of anything sensitive go to someone else's server, and fine palette control is limited to a few dithering presets.

When you need a real editor

ScreenToGif records a region, a window, or a webcam feed, then opens a frame editor where you can delete stutters, adjust per-frame delays, and add captions. Gifski takes the opposite approach: you feed it a video file or a PNG sequence and it builds the best possible palette automatically, usually producing visibly cleaner gradients than any preset-based tool.

The FFmpeg recipe that just works

The classic mistake is converting video to GIF in one pass. Single-pass encoding uses the global 256-color default palette and everything turns grainy. The correct approach is two passes: first generate a custom palette from the actual frames, then apply it.

  • Pass 1: ffmpeg -i pour.mp4 -vf "fps=15,scale=480:-1:flags=lanczos,palettegen" palette.png
  • Pass 2: ffmpeg -i pour.mp4 -i palette.png -lavfi "fps=15,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" pour.gif
  • Trim first with -ss 00:00:04 -t 3 instead of converting 12 seconds and cutting later
  • Keep fps at 12–15 for web use; 25 fps doubles the size with no visible gain at small widths
  • Never upscale: a 480 px GIF stretched to 900 px by CSS still costs the full download
ToolPlatformBest forPalette qualityPrice
Ezgifbrowserone-off quick conversionsbasic presetsfree
ScreenToGifWindowsscreen recordings, tutorialsgood, manual controlfree, open source
GifskimacOS, Linux, Winclean gradients, quality workexcellent, automaticfree, open source
FFmpegallpipelines and batch jobsexcellent with two-passfree, open source
PhotoshopmacOS, Winframe-by-frame retouchinggood, manualsubscription

Settings that decide the final size

Three knobs do almost all the work: duration, width, and frame rate. Our coffee clip at 3 seconds, 480 px wide, 15 fps lands near 1.8 MB with a two-pass palette. Drop to 12 fps and it falls under 1.4 MB. Halve the width to 240 px and you are below 500 KB. Dithering strength matters less than people expect; the Floyd-Steinberg default in FFmpeg is fine for everything except smooth sky gradients, where Gifski's temporal dithering earns its keep.

A quick sanity check before publishing

Open the result in two browsers and one phone. Confirm the loop point is not jarring, the first frame looks acceptable as a static poster, and the file plays inline in your target platform. Some email clients and forums still proxy images through compressors that mangle GIFs above 1 MB, so when in doubt, go smaller. The optimization article on this site covers the rescue workflow when your export comes out overweight.