Category: Image tools

GIF Maker

System ideaMissing a tool?

Turn a sequence of images into an animated GIF locally

Choose still images, put them in order, set how long each frame shows and whether the animation loops, then encode an animated GIF entirely in your browser with a bundled encoder. Images never leave your device.

No frames yet. Choose images to add them.

0 of 60 frames used · Plays for 0.0s per loop

Choose still images to start building a GIF.

Every frame is drawn and encoded in your browser using a bundled encoder. Images are never uploaded.

Everything on this page is processed in your browser. Nothing is uploaded.

What this tool does

This tool builds a GIF frame by frame: each image you choose is drawn onto a canvas at a shared output size, quantized to a color palette, and written as one GIF frame with its own delay, using the open-source gifenc encoder bundled with this page. Reordering frames, changing a single frame's delay or changing them all at once, and choosing whether the result loops are all handled before encoding starts, so you can preview the plan before spending the time to build the file. Frame count and output width are capped to keep encoding responsive in a browser tab.

How to use it

  1. Choose two or more still images to use as frames.
  2. Reorder frames and set each one's delay, or apply one delay to every frame at once.
  3. Choose an output width and whether the GIF should loop, then generate and download it.

Privacy

This tool runs entirely in your browser. Your input is never uploaded, stored or shared — closing the tab removes it.

Frequently asked questions

Are my images uploaded to build the GIF?
No. Every frame is drawn and encoded in your browser with a bundled encoder; images are never sent to a server.
Can each frame have a different delay?
Yes. Set a delay per frame, or use "apply to all" to set every frame at once.
Why is there a limit on frame count and width?
Encoding a GIF in a browser tab uses the visitor's own CPU and memory, so this tool caps frame count and output width to keep the page responsive rather than let it hang on an oversized job.