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
- Choose a GIF, or drop one on the page.
- Every frame appears as a thumbnail, with the canvas size and the animation's total length.
- 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.