This is a macOS app for the gifski
encoder, which converts videos 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.
Gifski supports all the video formats that macOS supports (.mp4
or .mov
with H264, HEVC, ProRes, etc). The QuickTime Animation format is not supported. Use ProRes 4444 XQ instead. It's more efficient, more widely supported, and like QuickTime Animation, it also supports alpha channel.
Requires macOS 10.13 or later.
Gifski includes a system service that lets you quickly convert a video to GIF from the Services menu in any app that provides a compatible video file.
In the width/height input fields in the save panel, press the arrow up/down keys to change the value by 1. Hold the Option key meanwhile to change it by 10.
To build the app in Xcode, you need to have Rust and GCC 8 installed first:
curl https://sh.rustup.rs -sSf | sh
brew install gcc@8 SwiftLint
xcode-select --install
No, we're not interested in localizing the app.
- gifski library - High-quality GIF encoder
- Defaults - Swifty and modern UserDefaults
- CircularProgress - Circular progress indicator for your macOS app
- DockProgress - Show progress in your app's Dock icon
MIT (the Mac app) + gifski library license
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.
You may need ffmpeg to convert video to PNG frames first (Homebrew installation includes built-in video conversion, but other versions don't). If you don't have ffmpeg, run: brew install ffmpeg
.
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.