gifski — highest-quality GIF converter

Gifski uses pngquant for the best palettes with temporal dithering. It can achieve thousands of colors per frame.

Gifski lets you resize animations and tweak compression levels, so you can make your GIF s fit within upload file size limits.

Share your clips in their full quality, not a bland dithered mess.

Gifski makes smooth GIF animations using advanced techniques that work around the GIF format’s limitations.

Command-line version download

Download CLI binaries for Linux, macOS, and Windows (all releases).

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

Usage

The CLI version must be run from a command line (a terminal, cmd.exe).

gifski --fps 10 --width 320 -o anim.gif video.mp4

The above example converts “video.mp4” file to GIF (replace the path with your video’s actual path. Most terminals allow you to drag’n’drop the file!), with max resolution of 320 pixels and 10 frames per second. If you get erros about command not found, use full absolute path to gifski(.exe).

You may need ffmpeg to convert video to PNG frames first. 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.

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.

Large file sizes

By default Gifski maximizes quality at cost of file size, so it is expected that the GIF files will be massive. If you need smaller files:

  • Use smaller pixel dimensions of the animation, e.g. --width 320 on the command line. This helps the most!
  • Use lower framerate. When converting from video, use lower fps, e.g. --fps 10. This helps a lot too.
  • Use lower quality, e.g. --quality 70. This may help for movie-like content, but may not do anything for screencast content. Videos with shaky camera may compress better with --motion-quality=50 and noisy content may compress better with --lossy-quality=30.
  • Or don’t use GIF and use a modern video codec like AV1 and the <video> element if you can.