GIF Maker

Turn your photos into an animated GIF free — add up to 50 images, reorder frames, set speed and size, and download with no watermark. Made entirely in your browser.

GIF Maker
The pictures
Drop your images here, or click to choose them PNG, JPG, WebP, GIF or anything else your browser opens. Up to 60 frames. They are sorted by file name, so frame_2 lands before frame_10.
How it should look
Movement

Captions

Type the words under each thumbnail. Long captions wrap to fit, and the outline keeps them readable over a busy picture.

Encoding happens on this device, in this tab. A long GIF at 1200 px with dithering is real work for your processor and can take a few seconds — that is your machine doing it, not a queue somewhere.

Your GIF
The animated GIF you just made
Nothing leaves your device, and nothing is fetched to make it work. The images are read from your disk, and the GIF is built by code that is part of this page. The version this replaces downloaded a 29 KB encoder from a content network every time, and stopped working entirely when that was blocked.

Turning a stack of pictures into an animation

1. Drop your images in

Anything your browser can open — PNG, JPG, WebP, even existing GIFs — up to sixty frames. They are sorted by file name as they arrive, so frame_2 lands before frame_10 rather than after it.

2. Put them in the right order

Each thumbnail is numbered in playing order. The arrows under it move that frame earlier or later, and the cross removes it. Nothing is re-uploaded when you reorder; it is all still on your machine.

3. Give each frame the time it needs

The box under every thumbnail is that frame’s own hold time in milliseconds. Set a title card to two seconds and the rest to a tenth, or use the button to apply one value to all of them at once.

4. Choose the size and the repeat

Widths from 240 to 1200 pixels; the height follows the first image’s proportions. Loop forever, play once, or repeat a set number of times.

5. Add captions, a crossfade or a boomerang

Type a caption under any frame and it is drawn into the picture, wrapped to fit and outlined so it stays readable. Crossfade blends each picture into the next; boomerang plays the whole thing forwards then back.

6. Make it and save it

The GIF appears on the page, playing, with its size and length listed. If it is not right, change a setting and make it again — each attempt takes a fraction of a second for a short animation.

The encoder is part of this page now

Until 29 August 2026 this tool did not contain a GIF encoder. Every time you pressed the button it fetched one from a public content network: gif.js at 13.1 KB and a separate worker file at 16.2 KB, then re-fetched the worker a second time and re-served it from a local blob URL, because a browser will not run a worker from another domain.

If any of that was blocked — an office network, a university firewall, a privacy extension, or simply a bad connection — the tool produced one message: “The GIF engine could not be loaded or encoding failed.” It could not tell you which of those two very different things had happened, and there was nothing you could do about either.

The encoder is written into this page now. The palette builder, the compressor and the file writer are all here, so once the page has loaded, making a GIF needs no network at all. It is also faster: three 480 pixel frames were encoded in 57 milliseconds during testing, with no download first.

Captions that stay readable over any picture

Every frame has its own caption box under the thumbnail. Type into it and the words are drawn into the picture itself before the file is written — not laid over the top as a separate thing, which is why the caption survives being sent through a chat app, pasted into a document, or saved by whoever you send it to.

Three details do most of the work here, and they are the ones cheap tools skip. Text wraps by measurement, so a long caption breaks onto as many lines as it needs instead of running off the side of the frame. An outline sits behind the letters, which is what keeps white text legible over a pale sky or a busy photograph — without it, captions disappear exactly where they matter. And for the cases where even that is not enough, a shaded band can sit behind the text.

The lettering, size, position, colour, outline weight and capitalisation are all yours to set, and they apply to the whole animation. Impact with a black outline is the classic meme look and is the default; a clean sans serif suits a tutorial or a product demonstration better. If every frame should say the same thing, type it once on frame one and press the copy button.

Crossfade and boomerang, and what they cost

Two effects that change how the animation reads, both built from the pictures you already have.

Crossfade blends each picture into the next instead of cutting straight to it, which turns a stack of photographs from a slide-flip into something that looks made on purpose. You choose how smooth the blend is — two frames for a gentle touch, eight for silk — and how long it lasts.

Boomerang plays the animation forwards and then straight back again, so the loop returns to where it started with no jump. There is a subtlety worth knowing: a naive boomerang repeats the first and last frames at the turnaround, which produces a small stutter at each end. This one leaves them out, so the reversal is smooth.

Both work by adding frames, and GIF stores every frame as a complete picture. Three photographs with a four-frame crossfade become fifteen frames; add boomerang and it becomes twenty. That is why the tool tells you the frame count and the running time before you press the button, rather than surprising you with a file five times the size you expected.

Why a GIF can only hold 256 colours

This is the single fact that explains almost everything about how GIFs look and how large they are.

A GIF frame does not store a colour for each pixel. It stores a palette of at most 256 colours, and then, for each pixel, the number of the palette entry to use. That is why the format is so good at flat graphics — a logo with eight colours packs down to almost nothing — and so awkward with photographs, which routinely contain tens of thousands of distinct colours that have to be squeezed into 256 slots.

Choosing those 256 is the interesting part. This tool samples the frame, then repeatedly splits the colours into groups along whichever axis is most spread out, and takes the average of each group. That gives more palette slots to the colours that actually occupy the picture, rather than spreading them evenly across a cube of colour space that your image may barely touch. Measured on a gradient with fine noise — close to the hardest case there is — the average channel was within 2.7 of 255 of the original, a little over one per cent.

What the colour setting actually costs youThe same two photographic frames, measured256 colours226 KBaverage colour error 2.7 of 25532 colours87 KBerror 4.83A little over a third of the size, for roughly double the colour error. On flat graphics thesaving is free, because there were never 256 distinct colours to lose. On photographs it shows.Measured on a gradient-and-noise test frame at 480 px, 29 August 2026.
Start at 256. Drop to 64 or 32 only when the file has to be smaller and the picture is not a photograph.

Dithering: smoother to look at, larger to download

When a smooth gradient is forced into a small palette, it breaks into visible stripes. Dithering hides those stripes by scattering the error into neighbouring pixels — the Floyd–Steinberg method used here pushes each pixel’s rounding error onto the four pixels ahead of it, so the eye blends what the palette could not represent.

It is worth being straight about the trade, because most tools present dithering as free quality. Measured here: turning it on made the file 226 KB instead of 193 KB, and slightly increased the average per-pixel error. Both are expected. Dithering deliberately makes individual pixels less accurate to make the picture as a whole look right, and the fine speckle it adds is exactly the sort of detail that compresses badly.

So: dithering on for photographs and gradients, where banding is the thing you notice. Off for logos, screenshots, line art and anything with flat areas of colour, where it just adds noise and weight.

Timing, and the floor nobody mentions

Each frame carries its own delay, stored in the file in hundredths of a second — which is why 500 ms and 1500 ms survive exactly, while oddly-specific values get rounded to the nearest 10 ms.

There is a floor. Browsers have historically treated very short frame delays inconsistently, so anything under 20 milliseconds is raised to 20 here rather than written into the file and quietly ignored later. In practice 20 ms is fifty frames a second, which is smoother than any GIF needs to be.

The tool adds up your frame delays and tells you how long the finished animation runs, which is more useful than it sounds when you are aiming at a platform with a length limit.

Pictures that are not all the same shape

A GIF has one size for the whole animation, so images of different proportions have to be reconciled. The first image sets the shape; the rest are fitted into it, and you choose how:

  • Fit it all in keeps every image whole and fills the leftover space with the edge colour you pick. Nothing is lost, but you get bars.
  • Fill the frame scales each image until it covers the whole frame and crops what hangs over. No bars, but the edges of some images are cut.

The edge colour is worth setting deliberately. White is right on a white page and obvious on a dark one; matching it to the background of the page where the GIF will live makes the bars disappear.

When a GIF is the wrong answer

Worth saying plainly on a page whose job is making them.

GIF is a format from 1989, and its compression was designed for flat graphics on slow modems. For anything photographic or more than a few seconds long, an MP4 or WebM video will be dramatically smaller for the same quality — often by a factor of ten or more — and every platform that matters plays video inline now.

Use a GIF when you need something that behaves like an image: it plays automatically everywhere, needs no player, drops into a chat window, an email, a README or a bug report, and loops without anyone pressing anything. Use video when the file size matters more than that convenience. If you have a video already, our MP4 to GIF converter does the other direction of this same job.

The order your files arrive in

A small thing that used to cause real irritation. When you select twenty files at once, the browser hands them over in whatever order it likes, which is often not the order they are named in. Frames arrived shuffled and had to be walked back into place with the arrows.

Files are now sorted by name as they are added, and sorted the way a human reads numbers — frame_2 before frame_10, not after it, which is what a plain alphabetical sort would do. If your frames are numbered, they will simply be in order.

Questions people ask when making a GIF

Are my pictures uploaded anywhere?

No. They are read from your disk into this page, and the GIF is built here. Nothing is sent, which is also why there is no size limit imposed on you, no account, and no watermark.

Why is my GIF so large?

Because GIF stores every frame as a full picture with its own palette. Length, width and number of colours all multiply. Halve the width and you roughly quarter the file; dropping to 64 colours takes a large bite out of it too.

How many pictures can I use?

Sixty. Beyond that the file becomes unwieldy and the encoding starts to strain what a browser tab is allowed to hold in memory.

Can I make a GIF from a video?

Not on this page — this one takes still images. The MP4 to GIF converter takes video.

My iPhone photos will not load. Why?

They are probably HEIC files, which most browsers cannot open. Convert them to JPG or PNG first and they will work. The tool names this as the likely cause rather than failing silently.

Can I have a transparent background?

Not yet. Every frame is written on a solid edge colour, which you choose. GIF does support one fully transparent palette entry, but combining that with frame disposal reliably across browsers is a larger job than it looks.

Why do the colours look slightly different from my originals?

Because 256 colours had to be chosen to stand in for however many your images contained. On flat graphics you will not see any difference; on photographs you may see slight shifts. More colours, or dithering, will reduce it.

Can I put text on the frames?

Yes — each frame has its own caption box. The words are drawn into the picture, wrapped onto as many lines as they need, and outlined so they stay readable over a busy photograph. Choose the lettering, size, position and colours once and they apply to the whole animation.

How do I make the pictures fade into each other?

Set the crossfade to anything other than Off. The tool generates blended frames between each pair, so the change is gradual rather than a cut. More blend frames means smoother, and a larger file.

What does boomerang do?

It plays the animation forwards and then backwards, so it returns to the start without a jump. It deliberately does not repeat the first and last frames at the turnaround, which is what causes the small stutter you see in a lot of boomerangs.

Why did my frame count jump from 3 to 20?

Crossfade and boomerang both add frames. GIF stores every frame as a full picture, so the file grows with them. The line above the button always tells you how many frames will be written and how long the result runs before you commit to it.

Does it work offline?

Once this page has loaded, yes — the encoder is part of the page. The version this replaced could not, because it fetched its encoder at the moment you pressed the button.

Can I set a different speed for just one frame?

Yes. The number under each thumbnail is that frame’s own hold time. Change one and only that frame changes; use the apply-to-all button when you want them uniform.

Other tools people use alongside this one