Make an animated GIF from pictures
This GIF maker turns a set of still pictures into one animated GIF. You put the frames in order, decide how long each one stays on screen, pick the size and how often it loops, and download the file. The pictures are read and the GIF is written inside your browser tab, so nothing is uploaded.
- Step by step: show a process, a before and after or a short how-to as a sequence of screenshots.
- Slideshows: cycle through product photos or a few holiday pictures in one small file that plays in chats, emails and READMEs without a video player.
- Stop motion and sprites: drawings or photos taken one after another become a short flip book animation.
Starting from a video instead? The video to GIF converter takes a clip from an MP4, MOV or WebM file. To make the finished GIF much smaller for a website, the GIF to MP4 converter turns it into a video that loops the same way. To scale the pictures themselves first, use the image resizer.
Frame delay, speed and frame rate
A GIF has no frame rate of its own. Each frame carries a delay, the time it stays on screen before the next one appears, and the GIF89a specification stores it in hundredths of a second. That is why a delay you type is rounded to two decimals: 0.333 seconds is saved as 0.33. The frame rate shown in the stats is the number of frames divided by the length of one play.
| Delay per frame | Stored value | Frames per second | Feels like |
|---|---|---|---|
| 0.05 s | 5 | 20 | Smooth motion, large file |
| 0.1 s | 10 | 10 | Stop motion, flip book |
| 0.2 s | 20 | 5 | Quick sequence |
| 0.5 s | 50 | 2 | Step by step, readable |
| 1 s | 100 | 1 | Slideshow |
| 2 s | 200 | 0.5 | Slow slideshow with text |
Worked example: four frames with the default 0.5 seconds play for 4 × 0.5 = 2 seconds, which is 4 ÷ 2 = 2 frames per second. Give the last frame its own delay of 2 seconds, so it pauses before the loop starts again, and one play takes 3 × 0.5 + 2 = 3.5 seconds, or 4 ÷ 3.5 = 1.14 frames per second on average.
Very short delays do not play faster. Chrome and Safari show a frame that asks for 0.01 seconds or less for 0.1 seconds instead, following Firefox, according to their source code. That is why the shortest delay here is 0.02 seconds, which is 50 frames per second.
Size, shape and pictures that do not fit
Every frame of a GIF has the same width and height. Set the width, and the height follows from the shape: the shape of the first frame, square, 4:5 portrait, 16:9 wide or 9:16 tall. Pictures with a different shape are handled in one of three ways:
- Fit inside scales each picture by the smaller of width ÷ picture width and height ÷ picture height, centers it and fills the rest with the background. Nothing is cut off.
- Crop to fill scales by the larger of the two factors, so the frame is covered, and trims the overflow evenly from both sides.
- Stretch pulls the picture to the frame size and distorts it.
Worked example, computed with this tool: a 1,200 × 800 photo in a square 480 × 480 GIF. Fit inside scales it by 480 ÷ 1,200 = 0.4 to 480 × 320 and leaves bands of 80 pixels above and below. Crop to fill scales it by 480 ÷ 800 = 0.6 and keeps the middle 800 × 800 pixels of the photo, cutting 200 pixels from the left and from the right.
Colors, transparency and file size
Each GIF frame uses a color table of at most 256 colors. The encoder, gifenc, picks the colors for your pictures and maps every pixel to the nearest one. Its own documentation says it does not dither and suits flat graphics better than photographs, so expect visible steps in smooth gradients. One per frame gives every frame its own best table. One for all builds one table from up to 12 frames and uses it everywhere, which keeps shared colors from shifting between frames and saves a little space when the pictures look alike.
With Transparent ticked, one entry of the table is kept for the transparent index of the GIF format and the empty areas stay see-through. A GIF pixel is either transparent or not, so the tool treats pixels that are less than half opaque as transparent and draws the others fully. Each frame is cleared before the next one appears, so earlier frames do not show through.
A GIF stores every frame as a full picture, compressed without loss, so the file grows with the pixels per frame and the number of frames. A 480 × 480 frame has 230,400 pixels; at 960 × 960 it is four times as many. When the file gets too big, lower the width first, then the number of frames, then the colors. The exact size appears as soon as the GIF is made.
Loop forever or play a few times
Loop forever writes a loop count of 0 into the file, which means endless repetition. Play once leaves the loop block out. Play 3 times writes a loop count of 2, because the stored number counts the repeats after the first play, which is how the Wuffs GIF decoder reads it. The preview above follows the same setting.
How to make a GIF from images
- 1Drop your pictures on the box or tap it to choose them. You can add more later, up to 50 frames.
- 2Put the frames in order by dragging the handles or with the arrows, and remove the ones you do not need.
- 3Set the delay for all frames, and type a delay next to any frame that should stay longer.
- 4Choose the width, shape, background, loop and colors, and watch the preview.
- 5Press Make GIF, check the file size and press Download GIF.
Open-source library
The GIF is written with gifenc (MIT), which picks the colors and compresses the frames, in a background thread so the page stays responsive.
Sources
- GIF89a specification: delay time in hundredths of a second, transparency index, disposal methods, color tables of up to 256 entries
- Wuffs GIF decoder: the stored loop count means repeats after the first play, 0 loops forever
- Chromium source and WebKit source: frames of 10 ms or less are shown for 100 ms
- gifenc README: color quantizer without dithering, best suited to flat graphics, transparency options
Frequently asked questions
Are my images uploaded?
No. Your browser opens the pictures, draws the frames and writes the GIF on your own device. Nothing is sent to a server, so private photos stay with you.
How many images can I add?
Up to 50 frames in JPG, PNG, WebP, GIF, AVIF or HEIC. Large photos are scaled down to about 1.5 megapixels when you add them, which is enough for the largest GIF here (1,000 pixels on the longer side) and keeps memory use low on phones.
How do I make the GIF faster or slower?
Change Delay for all frames. A shorter delay plays faster: 0.1 seconds per frame is 10 frames per second, 1 second is one frame per second. To hold a single frame longer, type its own delay in the field next to it. The GIF format stores delays in hundredths of a second.
How do I change the order of the frames?
Drag a frame by its handle on the left, or use the up and down arrows. A focused handle also moves with the arrow keys. Reverse order flips the whole list, which is handy for a back and forth effect when you add the same pictures twice.
Can a GIF have a transparent background?
Yes. Tick Transparent under Background and the empty areas, plus any transparent parts of PNG or WebP pictures, stay see-through. A GIF pixel is either fully transparent or fully opaque, so soft edges of a cut-out turn into hard edges. Pixels that are less than half opaque become transparent.
Why do the colors look banded?
Each GIF frame can use at most 256 colors. A photo has many thousands, so the encoder picks the 256 that represent it best and maps every pixel to the nearest one. The encoder used here does not dither, so smooth gradients like a sky show steps. Flat graphics, screenshots and illustrations come out cleanest.
Why is my GIF file so large?
A GIF stores every frame as a full picture, compressed without loss. The size grows with the width times the height and with the number of frames. Halving the width cuts the pixels of each frame to a quarter. Fewer colors also help a little.