APNG to Frames
Take an animated PNG apart. Each frame comes out as its own image — composited the way a browser plays it, not as the partial rectangle actually stored in the file — together with a list of how long each one is on screen. The reverse of PNG to APNG, and the way to edit an animation you only have as a finished file.
Drop an animated .png here
Several files allowed · each produces its own set of frames
How to extract the frames
- Drop the animated PNG in. It has to be a real APNG — a still PNG has no frames to extract, and the status line will say so rather than silently handing you one image.
- Choose composited or as stored. Composited is almost always what you want; see below for when it is not.
- Extract. With ZIP on you get one archive per input, containing the numbered frames and a
-delays.txtlisting how many milliseconds each frame is shown. With it off, each frame appears as its own download, labelled with its delay.
Composited or as stored
An APNG rarely stores whole frames. To save space, each frame after the first usually holds only the rectangle that changed, together with an offset and instructions for how to combine it with what is already on screen. Extract those rectangles directly and you get a set of small, oddly-cropped images that look nothing like the animation — which is what most extractors hand you.
Composited replays the animation onto a canvas the way a viewer does, honouring each frame's dispose operation (leave it, clear it, or restore what was underneath) and blend operation (replace the rectangle, or alpha-composite over it), and saves the canvas after every frame. Every image comes out full size and looks like the corresponding moment of the animation.
As stored gives you those raw rectangles instead, byte-for-byte as they are in the file. That is the mode for understanding how an animation was built, or for checking whether an optimiser did what you expected — the frames it hands you are also the answer to "why is this file so small when the animation is so long".
Delays
Each frame carries its own delay as a fraction — a numerator and a denominator — so an APNG is not limited to the 10-millisecond steps GIF uses. The delays file lists the milliseconds each frame is shown, in order, and the status line reports the total duration and the average frame rate. A frame with a delay of zero means "as fast as possible", which different browsers interpret differently; if the animation runs at a different speed in two browsers, that is usually why.
Things worth knowing
- The first frame may not be part of the animation. An APNG can carry a still image for viewers that do not animate, and that image is separate from frame one. When the file does that, the still is skipped here — you get the frames the animation actually plays.
- JPG loses the transparency. An APNG usually has an alpha channel; saved as JPG the transparent areas turn black. Keep PNG unless you are certain the frames are opaque.
- A GIF is not an APNG. They are unrelated formats that happen to do the same job. Convert first with GIF to PNG.
- Rebuilding is lossless in one direction only. Extract and re-encode with PNG to APNG and you get an animation that looks identical, but the byte layout will differ — the optimiser makes its own decisions about what to store.
FAQ
Nothing happens and it says "this is a still PNG".
The file has no acTL chunk, so it is an ordinary PNG. Some tools name a still image .apng, and some social platforms strip the animation on upload and hand back the first frame. Check the file with the chunk viewer — if there is no acTL, the animation is genuinely gone.
Can I get the frames as one sprite sheet instead?
Extract them here, then feed the ZIP contents to sprite sheet, which lays them out on a grid and writes the CSS.
Is anything uploaded?
No. The file is parsed and the frames are drawn in your browser. Nothing leaves the machine, which also means a 200 MB animation is limited only by your memory.