Photos and frames in, animation out
Drop a handful of images above and turn them into an animated GIF: reorder the frames, give individual frames their own timing, choose how differently-sized images fit the canvas, and pick loop-forever or play-once. The live preview shows the animation before you commit to encoding, and the finished file downloads with its size shown up front. Everything runs on your device — nothing is uploaded.
This tool is the inverse of our GIF frame extractor: extract frames from an existing GIF there, edit the ones you want, then reassemble them here — the extractor's zero-padded filenames keep your frame order intact. For preparing frames, the image resizer gets mismatched photos to a common size, and the image compressor slims heavy source photos before they ever hit the 256-color palette.
Common uses: turning a burst of phone photos into a mini timelapse, assembling UI screenshots into a bug-report walkthrough, or building a simple animated banner from design exports. Because iPhone HEIC photos decode right in the browser, "camera roll to GIF" needs no conversion step first.
Frequently asked questions
Why do colors look slightly different in the finished GIF?
The GIF format allows at most 256 colors per frame, so each frame is palette-quantized during encoding. Photos and gradients lose a little fidelity; screenshots, drawings, and UI captures usually look identical. This is a property of the format itself — every GIF encoder does this.
What is the minimum frame delay?
This tool clamps delays to at least 20ms. Browsers treat GIF delays of 10ms or less as 100ms (a compatibility rule from the era of encoders writing 0 to mean "as fast as possible"), so anything below 20ms would not play the way it was saved anyway.
Which image formats can I use as frames?
PNG, JPG, WebP, and HEIC (iPhone photos) — HEIC is decoded in your browser automatically. Frames can be different sizes: the output canvas matches your first frame (or a custom width), and later frames are letterboxed or cropped to fit, your choice.
How do I control the size of the output GIF?
Three ways: keep frame delays reasonable (fewer frames per second = smaller file), use the custom width option to scale the whole animation down, and prefer flat-color images over photos — palette compression is far more effective on them. The size readout appears next to the download button after encoding.
Can I set a different duration for one specific frame?
Yes — every thumbnail has its own delay field. Leave it blank to use the global delay, or type a value in milliseconds to hold that frame longer (great for pausing on a title card or the last frame). Values are clamped between 20ms and 10 seconds.
Are my images uploaded anywhere?
No. Decoding, resizing, palette quantization, and GIF encoding all run in your browser — the encoder library loads on demand the first time you click Create GIF. Your images never leave your device.
What happens to transparent PNGs — do they keep their transparency?
No — each frame is composited onto a solid black background before encoding, so a transparent PNG comes out with a black backdrop instead of transparency. GIF only supports 1-bit (all-or-nothing) transparency, which this tool does not currently expose, so it flattens every frame instead of producing patchy, jagged edges. If you need a specific background, flatten your source images onto that color in your image editor first, then drop the flattened files in here.