Utilia

GIF Frame Extractor

Split an animated GIF into individual PNG frames, see each frame's delay and disposal, and download one frame or all of them as a ZIP. Free, no upload.

How to extract the frames of a GIF

  1. Drop a GIF on the drop zone, or click it to choose one. Animated and still GIFs both work.
  2. The tool reads the file and shows the Original animation next to its Dimensions, number of Frames, Total duration and Loop setting.
  3. Every frame appears in the grid with its number, its delay and its disposal method. Transparent areas are shown over a checkerboard.
  4. Choose what the Frames option extracts: Full frames (as displayed) gives each frame exactly as a browser shows it at that moment; Raw frame patches (changed area only) gives the small rectangles stored in the file.
  5. Click PNG under a frame to save that frame alone, or Download all (ZIP) to get every frame in one archive, with numbered file names such as cat-frame-007.png.

Why “full frames” matter

A GIF animation rarely stores a complete picture for every frame. To keep files small, most encoders save the first frame in full and then only the rectangle that changed, often with transparent pixels where nothing moved. A naive extractor that saves those rectangles gives you torn, half-empty images.

This tool rebuilds each frame the way a viewer does. It keeps a canvas the size of the logical screen, draws each frame’s rectangle at its position, and then applies the frame’s disposal method before drawing the next one:

  • none or keep (methods 0 and 1): the picture stays as it is, and the next frame is drawn on top.
  • clear (method 2, “restore to background”): the frame’s rectangle is cleared. Like current browsers, the tool clears it to transparent rather than to the background colour stored in the file.
  • restore previous (method 3): the canvas goes back to how it looked before the frame was drawn.

The result is a set of PNG images that match what you see when the GIF plays. PNG keeps transparency and never loses quality, so the colours are exactly the ones stored in the GIF palette.

The raw patches are useful in other cases: to inspect how an encoder optimised a file, to recover the exact pieces of a sprite, or to debug an animation that flickers.

Frame delays and duration

Each frame stores its delay in hundredths of a second, shown here in milliseconds. Many GIFs use a delay of 0 or 10 ms; browsers don’t play frames that fast and show them for 100 ms instead. The grid marks those frames as “played at 100 ms”, and the Total duration adds up the delays as browsers actually play them.

The Loop value comes from the NETSCAPE extension: Forever for an endless loop, a number of repeats, or Plays once when the file has no loop block.

Limits and privacy

The GIF is decoded entirely in your browser; nothing is uploaded. Very large animations (hundreds of frames at high resolution) need a lot of memory: above 400 million pixels in total, the tool asks you to use a smaller file. Frames are saved as PNG without metadata.

Frequently asked questions

Why are some extracted frames only partly drawn?

That happens with the Raw frame patches (changed area only) option: GIF encoders often store only the part that changed. Switch to Full frames (as displayed) to get complete images.

Can I get the frames as JPG?

The tool saves PNG to keep transparency and the exact colours. If you need JPG, convert the PNG files afterwards with an image format converter.

Why does the total duration differ from other programs?

The duration uses browser timing, where delays of 0 and 10 ms are played at 100 ms. Some editors show the raw stored values instead, which gives a shorter total.

Does it work with still GIFs?

Yes. A still GIF has one frame, which you can save as a PNG.

How do I turn the frames back into an animation?

Edit the frames if needed, then load them into a GIF maker in the right order and set the delay of each frame.