GIF Maker

Turn a set of images into one looping animated GIF, without uploading any of them.

Runs on your deviceMoreWorkingNo account needed

What this tool does

GIF Maker writes the images you add out as the frames of a single animated GIF. The first image sets the canvas — its own dimensions, scaled down if they exceed the maximum width you choose — and every other image is painted onto that canvas in turn. The finished sequence goes to gif.js, which reduces each frame to a palette of at most 256 colours inside Web Workers. All of that happens in this browser tab, so the images are not transmitted and no copy of them reaches a server.

The controls are the ones the format actually has. Frame delay applies to every frame alike — 200 ms is five frames a second — and is rounded to the nearest 10 ms, because GIF records timing in hundredths of a second. Colour quality is the sampling factor the quantiser uses when choosing those 256 colours: 1 inspects nearly every pixel and is slow, 20 samples sparsely and gives coarser bands. Dither, off by default, spreads the quantisation error with Floyd–Steinberg so gradients band less, at the cost of noise that compresses badly. Looping is either forever or once.

Images of different shapes are reconciled in one of two ways. Fit inside and pad centres each frame within the canvas and fills what is left with the background colour; Fill the frame and crop scales the image until both sides of the canvas are covered and discards what hangs over the edge. The background is painted before every frame either way, and that is also what becomes of transparency: a PNG with an alpha channel is flattened onto that colour, and the GIF that comes out has no transparent pixels at all. Set the background to match whatever the animation will sit on, because a white halo cannot be removed afterwards.

There are firm edges worth knowing first. Two images is the minimum and 300 the ceiling; go past the ceiling and the refusal names how many files it counted. Maximum width only ever shrinks the first image, so asking for 640 px from a 400 px photo returns 400 px. Every frame carries the same delay, so no single frame can be held longer than the rest. Anything this browser cannot decode — HEIC from a phone, a camera RAW file, a truncated download — is skipped and counted in the summary, and the job fails only if fewer than two images survive. Whichever file ends up first in the running order is the exception, since it fixes the canvas: if that one will not open, the run stops with a decoding error rather than carrying on without it. And the tool exists to animate images that already stand as separate stills: a video file is not accepted, and an animated GIF dropped in contributes only its first frame.

How to use it

  1. Add two or more images. Up to 300 files in one job, and they become a single GIF rather than one each. A folder of exported frames can go in at once.
  2. Check the order. Sort frames by file name is on by default and orders numerically, so frame2.png lands before frame10.png. Turn it off to keep the order you added them in.
  3. Set the frame delay. Anywhere from 20 to 5000 ms, applied to every frame. The default 200 ms is five frames a second, and the result reports the effective rate it worked out.
  4. Choose the width and the fit. Maximum width runs from 32 to 2000 px and is measured against the first image, which fixes the canvas. Then decide whether mismatched frames are padded with the background or cropped to fill it.
  5. Set the colour options and run it. Balanced colour quality suits most sets; add dither for photographs and gradients. The summary gives the frame count, the pixel dimensions and the finished file size.

Processing & privacy

Runs on your device. Your file is processed directly in this browser.

Common use cases

Publishing a rendered image sequence

Blender, After Effects and plotting scripts all export numbered PNGs. Sorted by file name, they go back together as a loop that plays anywhere.

Showing a before and after

Two screenshots at a slow delay — 800 ms or more — flip between the old state and the new one, and make the difference obvious without a caption.

Documenting a sequence of steps

A handful of screenshots at roughly a second each shows a settings change or a form being filled, and drops into an issue tracker or a wiki that will not take video.

Turning product stills into a turntable

Photographs of an object taken at evenly spaced angles become a rotating view; choose the cropping fit so the framing stays constant between shots.

Questions

Are my images uploaded?
No. The frames are drawn on a canvas in this tab and encoded by gif.js in Web Workers, so nothing is transmitted or stored. The page keeps working with the network disconnected, which is the simplest way to check.
Can I build a GIF from a video here?
No — GIF Maker takes still images only. Video to GIF cuts a section out of a clip and encodes it directly, and Extract Frames pulls stills out of a video if you would rather assemble them yourself.
Why does my transparent PNG come out with a solid background?
Because the background colour is painted before each image is drawn, and the output carries no transparency. Pick a background that matches where the GIF will be displayed, since the flattening cannot be undone later.
Can one frame stay on screen longer than the others?
Not here. The delay is a single setting applied to all frames alike. Adding the same image two or three times in a row is the usual way to hold a moment.
Why is the GIF so much larger than the images that made it?
Each frame is stored with its own palette and no compression between frames, so the size is roughly the frame count multiplied by the pixel area. Halve the maximum width, use fewer frames, or turn dither off. GIF Compressor and GIF Resizer shrink a finished file further.
What decides the dimensions of the result?
The first image, after the maximum width is applied — and that width only ever scales down, so a 400 px source stays 400 px however high the setting goes. The height follows the first image's aspect ratio, and later frames are padded or cropped to match.
Some of my files were left out. Why?
They could not be decoded by this browser. HEIC files from an iPhone, camera RAW formats and truncated downloads all fail this way. The summary counts what was skipped; run those through Convert Image or HEIC Converter first.

Related tools

  • Video to GIF — Turn a short clip into an animated GIF.
  • QR Code Generator — Create a QR code for a link, text, Wi-Fi or vCard.
  • GIF Compressor — Reduce GIF file size by trimming frames and colours.
  • GIF to MP4 — Convert a GIF to a much smaller MP4 video.
  • GIF Splitter — Split an animated GIF into individual frames.
  • GIF Resizer — Resize an animated GIF without losing the animation.