Skip to main content

Free Animated GIF Maker

Combine multiple images into an animated GIF. Adjustable frame delay, output width, looping, and quality. Encoded entirely in your browser.

Drop files here, or click to browse

JPG, PNG, WebP, HEIC, HEIF · processed on your device

or press Ctrl+V to paste from your clipboard

You can drop multiple files at once

Browse files

Your files never leave your device. All processing happens locally in your browser.

Optimize for your platform

Common uses

  • Animate Tutorial ScreenshotsTurn a sequence of screenshots into an animated GIF showing a step-by-step workflow.
  • Product Demo GIFs for Landing PagesCreate animated GIFs that show your product in action — embed in landing pages, READMEs, or social posts.
  • Make Memes and Reaction GIFsCombine images into shareable meme GIFs for Twitter, Discord, Slack, or group chats.
  • Stop-Motion AnimationsBuild stop-motion animations from a series of photos of objects, clay, drawings, or hands.

How It Works

GIF encoding runs entirely in your browser via gif.js — a pure-JavaScript GIF encoder with a Web Worker for performance. Your images never upload.

  1. 1
    You drop multiple images
    Each image is loaded into your browser's memory and decoded by the browser's built-in image decoder. They appear in the frame list in upload order.
  2. 2
    Each frame is drawn to a canvas at the chosen width
    Aspect ratio is preserved from the first frame. The canvas pixel data is passed to gif.js as a sequence of frames with your chosen delay.
  3. 3
    A Web Worker encodes the GIF in the background
    gif.js spawns a worker to encode without blocking the UI. The worker handles color quantization (reducing each frame to 256 colors) and outputs LZW-compressed GIF bytes.
  4. 4
    The finished GIF is offered for download
    When encoding completes, you can preview the animation and save it locally. The Blob is held only in your browser memory.

Your photos never upload anywhere. The gif.js worker runs in your browser. Suitable for personal photo collages, memes from screenshots, or sensitive content.

Guide

Worked example

Drop three pictures that are all 1600×1000 pixels. The list says "3 frames — drag-reorder by using ↑/↓". With the defaults, "Output width (480px)" gives a 480×300 GIF, "Frame delay (200ms)" shows "5.0 FPS", and "Loop the GIF" is ticked. Move the slider until it reads "Frame delay (500ms)" and "2.0 FPS". In the box beside frame 3 type 1500, so the last picture is held longer. Type Day 1 in "Caption (optional)" and leave it on "Bottom". Press "Create GIF". The button counts "Encoding 60%…", then a preview appears with "Download" and the size in brackets. The frames show for 0.5, 0.5 and 1.5 seconds, 2.5 seconds in all, then repeat. The file is saved as animation.gif. If you now change the width, the page says "Frames or settings changed — encode again to update the GIF." until you press "Encode again".

Which settings to use, and the limits

  • Add the frames, then put them in order. The tool takes JPEG, PNG and WebP pictures; an iPhone HEIC photo is converted to PNG when you add it. Drop, browse or paste several at once, and add more later: new pictures are appended to the list. The list says "3 frames — drag-reorder by using ↑/↓", with "Move up" and "Move down" arrows and a "Remove frame" cross on each row. The first frame in the list sets the shape of the whole GIF. An animated GIF is not accepted as a frame.
  • Set the speed for all frames, then override single ones. "Frame delay" runs from 50 to 1000 ms in steps of 50 and starts at 200 ms. The line under it shows the frame rate: "5.0 FPS" at 200 ms and "20.0 FPS" at 50 ms. The small box on each row overrides the delay for that frame only. Leave it empty to use the global value, which it shows as a grey hint. Its arrows start from 20 ms and move in steps of 10. Give the last frame a longer delay to hold the end of the animation.
  • Choose the width and the fit. "Output width" runs from 100 to 1200 px in steps of 20 and starts at 480. The height follows the first frame's shape, so 1600×1000 pictures at 480 give 480×300. "Frame fit" decides what happens to pictures of another shape. "Contain" (the default) shows the whole picture and fills the gaps with the "Background color", white to start with. "Cover" fills the frame and crops the edges. "Stretch" fills it and distorts the picture. Transparent areas of a PNG show the background colour too.
  • Trade file size against quality. A GIF stores every frame, so its size grows with the number of frames and with the width, and lowering "Output width" saves the most. The "Quality" slider runs from 1 to 30 and starts at 10. The page says "Lower = better quality, bigger file", so 30 gives the smallest and roughest file. "Loop the GIF" is ticked, which repeats the animation forever; untick it to play it once. The encoder uses two background workers while the bar counts "Encoding 40%…".
  • Add a caption to every frame if you need one. "Caption (optional)" draws the same line of text on every frame. Choose "Top" or "Bottom" (Bottom is the default) and a text colour, white to start with. The text always has a black outline so it stays readable. The text size is one twelfth of the GIF width, never below 12 px, and the line is not wrapped: a long caption is squeezed to fit within 94% of the width. Keep it short.
  • Check the preview before you download. After "Create GIF", the preview appears under the buttons and the "Download" button shows the size in brackets. The file is always saved as animation.gif. "Encode again" runs the current settings once more. If you change a setting, reorder frames or change a frame delay after encoding, the old GIF stays on screen with a note, and a download would give the old animation. Adding or removing a frame clears it instead. The encoder script is served from this site, and nothing is uploaded.

Common problems and how to fix them

It says "GIF generation failed"
The tool loads every frame before it starts, and one picture the browser cannot decode stops the whole run. The page does not say which one. Remove frames with the cross, a few at a time, until "Create GIF" works, then re-save the bad picture as JPEG or PNG. A different message, "Canvas is not available in this browser", means the browser would not give the page a 2D drawing surface, which the tool needs for every frame. Try another browser.
It says "banner.gif is a GIF file, which this tool can't open."
The drop zone checks what a file really is, not only its name. JPEG, PNG and WebP are accepted, plus HEIC, which is converted. GIF, AVIF and BMP are refused, so an animated GIF cannot be used as a frame. Save the picture as one of the accepted types first; the Image Format Converter can do that. A file the checker cannot identify gets "File type not supported" with its name instead.
Some frames have bars at the sides, or are cut off.
That is "Frame fit" at work, and the GIF's shape comes from the first frame in the list. With "Contain", a picture of another shape gets bars filled with the "Background color". Choose "Cover" to fill the frame and crop the edges. "Stretch" removes the bars but distorts the picture. To change the overall shape, move a picture of the right shape to the top with "Move up" and press "Encode again".
It says "Frames or settings changed — encode again to update the GIF."
You changed a setting, reordered the frames or changed a frame delay after the GIF was made. The preview and the "Download" button still hold the old GIF, so a download now gives the old animation. Press "Encode again" to build a new one. Adding or removing a frame clears the old GIF instead, so you do not see this note then.
The GIF file is several megabytes.
Size comes from the number of frames, the width and the "Quality" setting. Lower "Output width" first (480 is the starting value), then move "Quality" towards 30, then use fewer frames. For a GIF you already have, the GIF Compressor on this site can shrink it.

How it compares

This tool builds an animated GIF from still pictures only. For a clip, use Video to GIF. It has one "Quality" slider, a width and a frame delay, and no palette, dithering or optimisation settings. Every frame is painted on the background colour, so transparency is not kept. It cannot draw, trim or edit inside a frame, and a caption is one line of text on all frames. A desktop animation program offers finer control over the palette and the file size. GIFs are large for what they show, so the GIF Compressor can help afterwards. In exchange nothing needs installing, and the pictures are encoded in your browser.

Related Tools

Frequently Asked Questions