Turn a sequence of JPG, PNG, or WebP images into an animated GIF entirely in your browser — reorder frames, set a per-frame delay, choose infinite or fixed looping, control output size, preview before export, and download. No upload, no server, no file size limit imposed by a server.
Drag and drop images here, or click below to browse. Each image becomes one frame.
This tool uses gif.js, a genuine LZW-based GIF encoder compiled to run in JavaScript, executing inside a background Web Worker so the actual encoding — color quantization, dithering, and frame compression — never blocks your browser tab's main thread. Each uploaded image is drawn onto an HTML5 canvas at your chosen output size to become one frame, and the encoder assembles the full sequence of frames into a standard, universally compatible animated GIF file, all without a single byte of your image data ever being sent to a server.
An animated GIF is nothing more than a sequence of complete images, each displayed for a specified duration before advancing to the next — there's no interpolation, tweening, or motion blur between frames the way video codecs handle motion, which is exactly why frame order and per-frame delay are the two settings that entirely define how an animation looks and feels. The same five source images can read as a snappy, energetic loop or a slow, deliberate reveal purely based on how you order them and how long each one holds.
GIF is a genuinely old format — designed in 1987, long before digital cameras or modern displays — and carries real technical limitations worth understanding rather than fighting: a hard 256-color palette per frame, delay timing quantized to 10-millisecond steps, and no native support for partial transparency (only fully transparent or fully opaque pixels). None of these are bugs in this tool; they're inherent to the GIF specification itself, and understanding them helps set the right expectations for what kind of source material converts cleanly (flat colors and simple graphics) versus what will show visible compromises (photographic gradients and subtle color transitions).
File size and generation time scale with the product of output dimensions, frame count, and image complexity — doubling the output width roughly quadruples the pixel area to encode per frame, while doubling the frame count roughly doubles both the file size and the encoding time. For most everyday uses (reaction GIFs, simple UI demos, short looping animations for a README or social post), an output width in the 400-600px range with 10-20 frames strikes a good balance between visual quality, file size, and how long you'll wait for it to generate.
Because every part of this process — loading your images, drawing them to a canvas, running the GIF encoder, and assembling the final file — happens inside your browser's own JavaScript engine and Web Worker, there is no upload step to skip and no server-side processing to trust. You can verify this yourself by watching your browser's network tab while generating a GIF: no image data is transmitted anywhere.
GIF Maker pairs naturally with these image tools for preparing and optimizing frames before and after animating them.