Get every frame out of an animated GIF
You need one still from an animated GIF — for a thumbnail, an edit, or documentation. Here is how to split it into PNGs correctly.
Tools used in this guide
The job
Animated GIFs store frames as diffs — most frames only paint the pixels that changed. Naïve extraction gives you a ghost of partial pixels, not the picture you saw. Proper splitting composites each frame the way a player does.
Split it
Drop the GIF in and run. The decoder composites each frame with its disposal handling (restore-to-background and keep; restore-to-previous is treated as keep) so every output PNG shows the full composited image — then grab them individually or as a ZIP.
Worked example
A UI walkthrough GIF loops 24 frames over 4 seconds. Splitting gives frame-001.png through frame-024.png at the screen size; frames 8 and 16 are the two screens you want for the docs page. The rest stays in the ZIP for reference.
Limits
Strict parsing — corrupt or truncated GIFs are rejected, no partial output. Up to 25 MiB, 300 frames, 4096 px per side, and a 256 MB decoded-data budget — huge canvases with many frames are refused before they can exhaust memory. PNG export covers up to 20 frames or 128 MiB of output. GIFs with a tiny logical screen and offset frames composite onto that full canvas, which is the correct rendering.