gifski

Highest-quality GIF encoder based on pngquant. Written by Kornel Lesiński (AKA “that ImageOptim guy”)

gifski converts video frames to GIF animations using pngquant's fancy features for efficient cross-frame palettes and temporal dithering. It produces animated GIFs that use thousands of colors per frame.

(it's smooth and colorful)
This is a GIF. It's hugely inefficient like any GIF, but now at least looks fine!

Another example.

It's open-source! It's a CLI tool, but it can also be compiled as library for seamless use in other apps (ask me if you want to use it in a closed-source app).

Download GUI

App for macOS 10.13+ (source).

Download CLI

For Windows and Debian download the latest version. For macOS with Homebrew the best way is:

brew install gifski
You can also get it with cargo install gifski if you have Rust installed.

Usage

You may need ffmpeg to convert video to PNG frames first (Homebrew installation includes built-in video conversion, but other versions don't). In your favourite command line/terminal, run:

ffmpeg -i video.mp4 frame%04d.png

This command takes a file named "video.mp4" and makes files "frame0001.png", "frame0002.png", "frame0003.png", etc. from it (%04d makes the frame number. Windows may need %%04d). You can usually drag'n'drop files into the terminal window to avoid typing the paths.

and then make the GIF from the frames:

gifski -o file.gif frame*.png

This command makes file "file.gif" from PNG files with names starting with "frame" (* stands for frame numbers). It's equivalent of gifski -o file.gif frame0001.png frame0002.png frame0003.png, etc. If you get erros about files not found, try using full paths to gifski(.exe) and the frames.

See gifski -h for more options. The conversion might be a bit slow, because it takes a lot of effort to nicely massage these pixels. Also, you should suffer waiting like the poor users who will be downloading these huge files.

gifski app icon

Follow @kornelski on Twitter.

Other GIF stuff I wrote: lossy GIF encoder and GIF to video converter (which you should really do).

Logo designed by Valera Nazarov.

The example anim is from Cosmos Laundromat (CC) Blender Foundation.