GIF Frame Extractor

Runs in your browser. This tool does not upload your file.

What this tool does

It takes the frames out of an animated GIF and hands each one to you as a PNG, in order, at the GIF's own canvas size. Each PNG holds the frame exactly as a viewer composites it: disposal methods, transparency and interlacing are applied, so what you see in the file is what you get in the image. The pixels are not approximated in any way.

Download frames one at a time, or take everything at once as a ZIP. The ZIP also carries frames.txt: the canvas size, the frame count and each frame's delay in milliseconds, ready to rebuild an animation somewhere else.

What it does not do

  • It does not change the GIF. Nothing about the source is edited or re-compressed; the file is only read.
  • It does not make the GIF smaller. The PNGs are a different output, not a smaller version of the file — for size, use the GIF compressor.
  • It does not make a sprite sheet, and it does not put frames back together into a GIF.
  • It does not change the timing. The delays are reported, never applied — for speed, use the GIF speed changer.

How to extract frames from a GIF

  1. Choose a GIF, or drop one on the page.
  2. Every frame appears as a thumbnail, with the canvas size and the animation's total length.
  3. Download a single frame with its PNG button, or take all of them as one ZIP.

Want only part of each frame? Crop the GIF first with the GIF cropper, then extract. Big file? The extractor reads what you give it — the cropper and the compressor both work on a copy first.

The frames.txt manifest

Inside the ZIP, frames.txt lists the canvas size, the frame count, the total length, and every frame's delay. The delays are the values stored in the file itself, in milliseconds; a stored zero is reported as zero, because that is what a rebuild would want to know. Some viewers treat very small delays differently — that is a viewer's choice, not something this file can change.

When it says no

Some files are refused outright, and the refusal names the rule it hit: E1, a frame not governed by its control block or a plain-text block between a frame and its control block; E2, a file with no global colour table; E3, an extension from an unrecognised application; or a truncated file. Files over 25 MB, canvases with a side over 4096 pixels and files with more than 600 frames are refused too, with the number that was hit.

Limits of this version

  • Every frame's PNG has to fit in memory together to build one ZIP. Past 256 MB of PNGs the single ZIP is not built; the page says so, and single frames keep working.
  • The 600-frame and 4096-pixel limits exist so the page cannot run a phone out of memory. The largest allowed files take minutes to decode, and the page shows progress while they do.
  • Output is PNG only. A JPEG option would have to drop transparency, and this tool would rather hand over the pixels as they are.

Questions

What exactly do I get?

One PNG per frame, each the size of the GIF's canvas, in order. A single ZIP holds all of them plus frames.txt, a small text file listing the canvas size, the frame count and each frame's delay in milliseconds.

Are the frames the original pixels?

Each PNG holds the frame exactly as a viewer composites it, including disposal, transparency and interlacing. Nothing about the pixels is approximated: no colour reduction, no resizing. Note that this is the composited frame, so it can differ from the raw patch stored in the file.

Why is the single ZIP missing for some files?

The ZIP is assembled in your browser, so every frame's PNG has to fit in memory at once. When the frames together pass 256 MB, the tool does not build a single download; the page says so and every frame still downloads on its own. That ceiling is a backstop: it has not come up on our own test files.

Which GIFs are refused?

Frames not governed by their control block or a plain-text block between a frame and its control block (E1), files with no global colour table (E2), extensions from unrecognised applications (E3), and truncated files. Files over 25 MB, canvases with a side over 4096 pixels and files with more than 600 frames are refused too. Each refusal names the rule or the number it hit.

Do the delays in frames.txt change the GIF?

No. The file is only read. The delays are the values stored in the control blocks, in milliseconds; a stored zero is reported as zero. Viewers may treat very small delays differently, so the file reports what is stored rather than what a particular viewer does with it.

Can it make a sprite sheet, or put the frames back into a GIF?

No, and this page does not pretend otherwise. It extracts frames as PNGs. Rebuilding an animation from images is what the typing tool does for text; a sprite sheet tool is not built yet.

Does extraction make my GIF smaller?

No. The PNGs are a different output, not a smaller version of the file: nothing about the source changes. If the size is the problem, the GIF compressor on this site redraws the file with fewer colours.

Does my file get uploaded?

The extractor runs in your browser, and this tool does not upload your file. The page itself is downloaded from a server like any other web page.

Does it need an account, and is there a watermark?

No account, no sign-up, and nothing is added to the frames. What you download is what the file contained.