Boneyard Tools

APNG (Animated PNG) Detector

Drop in a PNG to find out if it is an animated PNG (APNG). The tool validates the 8-byte PNG signature, reads the dimensions from the header, and looks for the acTL animation chunk to report the frame count and how many times the animation loops. The file is read entirely in your browser and never uploaded.

How to detect an animated PNG

  1. Drag a .png or .apng file onto the box, or click browse to pick one.
  2. Read the badge that tells you whether the file is animated or static.
  3. Check the frame count, loop count, and dimensions shown alongside it.

Examples

An animated sticker

sticker.png (an APNG exported from an animation tool)
Animated, 12 frames, loops forever, 320 x 320

A normal screenshot

screenshot.png (a flat single-frame PNG)
Static PNG, 1 frame, 1920 x 1080

Frequently asked questions

Is my PNG uploaded anywhere?

No. Nothing is uploaded. The file is read and parsed entirely in your browser using JavaScript, so the image never leaves your device.

What is an APNG?

APNG (Animated PNG) is an extension of the PNG format that stores a short animation while staying backward compatible with regular PNG viewers. It adds an acTL control chunk plus fcTL frame chunks and fdAT frame data, so an old decoder simply shows the first image and ignores the rest.

How does the detector know a PNG is animated?

It walks the PNG chunk stream and looks for the acTL (animation control) chunk. A PNG is treated as animated only when that chunk is present. The acTL data also carries the number of frames and the number of times the animation should play.

What does a loop count of zero mean?

The acTL chunk stores num_plays. A value of zero means the animation loops forever, which is why the tool shows 'Loops forever' for zero. Any positive number is the exact count of times the animation plays before stopping.

Why does the frame count sometimes differ from the number of fcTL chunks?

The acTL chunk declares num_frames, while each rendered frame has its own fcTL chunk. They normally match. The tool shows both so you can spot a malformed or truncated file where the declared count and the actual fcTL count disagree.

Is the default image part of the animation?

It depends on chunk order. If the first fcTL comes before the IDAT image data, the default image is the first animation frame. If IDAT comes first, the default image is only a static fallback for non-APNG viewers and is not counted in the loop.

Related tools