Create GIFs from imagesNew
Turn PNG, JPEG or WebP images into an animated GIF โ set the order, delays and loop.
Learn how โGIFmeta is a free, open-source desktop app, Rust CLI and library for animated GIFs: fix loops and timing, delete, insert, duplicate and re-order frames safely โ or turn a stack of images into a new GIF.
Free forever ยท MIT license ยท No account needed ยท Works offline ยท ๐ฆ GitHub
The problem
Each frame usually only stores the pixels that changed since the previous one โ that's what keeps files small. But it means you can't just remove a frame or tweak a delay in isolation: every frame after it gets drawn on top of the wrong picture, and the animation falls apart.
A full image. All the pixels it needs are stored with it, so it can be edited safely on its own.
Only the changed pixels are stored, drawn on top of the previous frame โ inheriting its timing and pixels. Edit carefully, or rebuild.
GIFmeta understands how frames depend on each other โ so your edits stay safe.
How it stays safe
GIFmeta replays the original animation and the modified one side by side. For every frame that stays, it compares the canvas the frame would be drawn on: if it matches the original, the frame is copied as-is โ lossless. If it doesn't, because a frame it depended on was deleted, the frame is written as a full image of exactly how it looked before.
Usually only one or two frames need rebuilding. Rebuilt frames get an exact palette whenever possible; only frames with more than 256 colours are colour-reduced, with a warning.

60 + 60 cs
gifmeta mod crab.gif --delays 1=30 -o crab-fixed.gif ยท delays 60 + 30 csFeatures
Small, focused and built with Rust speed. The same safe engine powers the desktop app, the CLI and the library.
Turn PNG, JPEG or WebP images into an animated GIF โ set the order, delays and loop.
Learn how โAdd an image as a new frame anywhere, or copy a frame to hold it longer.
Learn how โDrag frames into a new order or play a GIF backwards โ even in optimized GIFs.
Learn how โDelete frames without breaking the rest โ dependent frames are rebuilt, the delay moves to the previous frame.
Learn how โSet one delay for all frames or override specific frames. Delays are in centiseconds (1 = 10 ms).
Learn how โLoop forever or play a fixed number of times. "Plays once" GIFs stay that way.
Learn how โSee which frames are full images (๐ keyframes) and which are delta frames (ฮ).
Learn how โRender any frame exactly as it plays โ disposal-aware โ or view just the raw pixels it stores.
Size, frame count, duration, palette, transparency and loop setting โ also as JSON for scripts.
Convert selected frames to full images, or unoptimize the whole GIF into flat full frames.
Render or export all frames in a single fast pass โ 15โ56ร faster than frame by frame.
Notarized by Apple with native Apple Silicon builds, and a signed Windows installer.
Learn how โGet it
Pick the interface that fits you โ the Rust crate underneath is always the same, always safe.
$ gifmeta mod animation.gif --infinite --delay 8 -o animation-fixed.gif
โ 12 frames ยท loop: infinite
โ delay: 80 ms
$ gifmeta create title.png walk-*.png the-end.png -o crab.gif --delay 12
โ
Created 10 frames (480ร300) โ crab.gifFor developers, terminal lovers and automation ยท v0.7.0
cargo install gifmetaOr a prebuilt binary (macOS signed & notarized):
macOS ยท Windows ยท Linux โ works offline. Signed & notarized on macOS.
For embedding GIF editing in your own tools.
cargo add gifmetaGIFs are still everywhere โ messaging, memes, UI loaders. Fix the timing, rearrange the frames or make a brand-new one, without breaking the optimization. It's free, it's open source, and it's built with love.