finds.dev← search

// the find

sindresorhus/Gifski

★ 8,453 · Swift · MIT · updated Jun 2026

🌈 Convert videos to high-quality GIFs on your Mac

Gifski is a polished macOS app that wraps the gifski Rust encoder to produce high-quality GIFs from video files. It sits on top of pngquant's cross-frame palette optimization and temporal dithering, which is what separates its output from anything FFmpeg produces with default flags. Aimed at designers and developers who need shareable screen recordings or demos that don't look like they were made in 2003.

The underlying gifski/pngquant pipeline genuinely produces better output than most alternatives — thousands of colors per frame via adaptive palettes instead of the standard 256-color-per-frame limit. The Metal-based live preview renderer (compositePreview.metal, PreviewVideoCompositor) shows GIF output in real time as you scrub, which is rare. The Rust library is vendored as a submodule with a proper C API and bridging header, so the Swift layer isn't doing anything weird with FFI. The bounce/yo-yo mode and crop overlay are real features, not afterthoughts — the crop implementation has its own coordinate math module (CropRect.swift).

WebM is not supported at all because it falls outside what macOS's AVFoundation handles, which is a real gap since WebM is common in browser-captured recordings. Batch conversion is only available through Shortcuts, not the app UI directly — the in-app batch flow is commented out in the README. Tests/Tests.swift is almost certainly thin given the complexity of the video pipeline; the test directory is a single file. Building from source requires Rust installed separately and the README doesn't mention that the gifski-api submodule needs to be compiled, which will trip up anyone who just clones and opens Xcode.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →