APNG Frames Extractor

Reads an uploaded APNG's real chunk structure (acTL, fcTL, IDAT/fdAT), decompresses every frame's scanline data, and reassembles each one as a standalone RGBA image you can preview and download separately, entirely in your browser. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-26

Overview

Introduction

This tool takes an animated PNG apart, frame by frame, so you can inspect, reuse, or edit any single moment of the animation as an ordinary still image.

Decoding happens entirely in your browser using the same chunk-parsing and DEFLATE-decompression logic a full APNG-aware viewer uses.

What Is APNG Frames Extractor?

An APNG decoder that walks the uploaded file's PNG chunk stream, reads its IHDR dimensions and acTL frame/loop counts, and for every fcTL control chunk inflates and unfilters the paired IDAT/fdAT scanline data back into RGBA pixels.

Each decoded frame is rendered as its own downloadable PNG, alongside the delay it was shown for in the original animation.

How APNG Frames Extractor Works

The tool reads the uploaded file's raw bytes and confirms both the PNG signature and the presence of an acTL chunk before treating it as animated.

For each fcTL chunk it finds, it collects the following IDAT (frame 0) or fdAT (later frames) chunks, inflates their zlib-compressed payload with DecompressionStream, reverses PNG's per-scanline filtering, and places the resulting pixels onto a full-canvas RGBA buffer at that frame's declared offset.

When To Use APNG Frames Extractor

Use it when you need one specific frame from an animation as a plain image — a thumbnail, a still preview, or an asset for further editing.

It's also a quick way to inspect exactly how many frames an APNG has and how its timing is distributed before working with it further.

Often used alongside APNG Creator, APNG Player and APNG Checker.

Features

Advantages

  • Decodes real APNG chunk data rather than approximating it, so extracted frames are pixel-accurate.
  • Shows each frame's original delay alongside its image, useful for reconstructing or retiming the animation later.
  • Runs entirely client-side; the uploaded file never leaves your device.

Limitations

  • Only supports 8-bit grayscale, RGB, RGBA, and grayscale+alpha color types, not palette-indexed (color type 3) PNGs.
  • Doesn't composite partial-frame dispose/blend operations across frames, so a minority of APNGs built around layered partial updates may extract with visible gaps.

Examples

Four-frame loading spinner

Input

A 4-frame, 64x64 APNG, 250ms delay each

Output

Four separate 64x64 PNG files, each labeled 'Frame N (250 ms)'

Every frame decodes to its own full-canvas image regardless of how the original animation was authored.

Non-animated PNG upload

Input

A plain PNG with no acTL chunk

Output

Error: "This PNG has no acTL chunk, so it isn't an animated PNG (APNG)."

The extractor only works on genuinely animated files and says so clearly rather than guessing.

Best Practices & Notes

Best Practices

  • Check the frame count and delays first with the APNG Checker tool if you just need the numbers, not the pixels.
  • Download only the frames you actually need — each is a full, independent PNG file.

Developer Notes

Chunk parsing, zlib inflation (via DecompressionStream), and PNG's four scanline filter types (Sub/Up/Average/Paeth) are all implemented as pure, unit-tested functions over Uint8Array bytes with no DOM dependency; the component's only job is reading the uploaded File's bytes and rendering each decoded PixelBuffer through the shared preview panel.

APNG Frames Extractor Use Cases

  • Pulling a single still thumbnail out of an animated PNG
  • Auditing an APNG's frame count and per-frame timing before reusing it
  • Extracting frames to re-edit individually and rebuild with the APNG Creator tool

Common Mistakes

  • Uploading a regular, non-animated PNG and expecting frames back — only files with an acTL chunk qualify.
  • Assuming extracted frame delays are in seconds; they're reported in milliseconds, matching the fcTL chunk's units after conversion.

Tips

  • Frame numbering matches playback order, so frame-1.png is always what's shown first.
  • If you only need to reverse or retime an animation rather than inspect individual frames, the dedicated APNG Reverser/Speed Changer tools skip the manual re-assembly step.

References

Frequently Asked Questions