APNG Checker

Walks a PNG/APNG file's chunk stream, verifying every chunk's CRC-32 checksum and confirming IHDR/IEND bookend the file, then — if an acTL chunk is present — reports the animation's frame count, loop count, canvas size, and total per-cycle duration, without decompressing a single pixel. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-26

Overview

Introduction

This tool answers the basic question of whether a PNG file is structurally valid and, if it's animated, gives you its key facts at a glance without a full decode.

It's a fast first check to run before feeding a file into any of this category's other APNG tools.

What Is APNG Checker?

A structural PNG/APNG validator that walks the file's chunk stream, verifying each chunk's length, type, and CRC-32 checksum against what's actually stored in the file.

If it finds an acTL chunk, it also reports the declared frame count, loop count, canvas dimensions, and the sum of every frame's delay as the total duration of one playback cycle.

How APNG Checker Works

Starting right after the 8-byte PNG signature, the tool reads each chunk's 4-byte length and 4-byte type, computes the CRC-32 over that chunk's type-and-data bytes, and compares it against the 4-byte checksum stored immediately after.

It tracks whether IHDR and IEND were seen, collects width/height from IHDR, and — only when an acTL chunk is present — reads every fcTL chunk's declared delay to build the frame/loop/timing summary.

When To Use APNG Checker

Use it to quickly confirm a file you received (or one this category's Creator, Reverser, or Speed Changer tool just produced) is structurally sound before relying on it.

It's also useful for distinguishing a genuinely animated PNG from a plain one when the file extension alone doesn't tell you.

Features

Advantages

  • Very fast even on large animations, since it never decompresses pixel data.
  • Catches real structural problems (bad checksums, missing required chunks, mismatched frame counts) that a naive 'does it open in a browser' check would miss.
  • Runs entirely client-side; the file is never uploaded anywhere.

Limitations

  • Doesn't catch corruption inside a chunk's own compressed (zlib) payload, since that would require fully decoding it.
  • Doesn't validate palette-indexed (color type 3) PNGs any differently than other types, since chunk-level checks don't depend on color type.

Examples

Healthy 6-frame APNG

Input

A well-formed APNG with acTL numFrames=6 and 6 fcTL chunks

Output

isValidPng: true, isAnimated: true, frameCount: 6, no issues

All chunk CRCs match and the declared frame count agrees with what's actually present.

Truncated download

Input

A PNG file cut off partway through an IDAT chunk

Output

Issues: ["Chunk \"IDAT\" at byte 41 is truncated."]

The checker stops and reports exactly which chunk ran out of bytes.

Best Practices & Notes

Best Practices

  • Run this check first on any APNG from an untrusted or unknown source before processing it further.
  • If issues are reported, re-export or re-download the file rather than trying to salvage a structurally broken one.

Developer Notes

The CRC-32 table, chunk walk, and issue collection are all pure, synchronous functions over a Uint8Array, so the entire checker is unit-testable without any DOM or async dependency; the component's only job is reading the uploaded File's bytes and formatting the result object into a readable report.

APNG Checker Use Cases

  • Verifying a downloaded or received APNG isn't corrupted before using it
  • Confirming a file this category's other tools generated is structurally valid
  • Quickly telling animated PNGs apart from plain ones in a batch of files

Common Mistakes

  • Assuming a file that opens fine in one viewer has no structural issues — some viewers tolerate CRC mismatches that stricter decoders reject.
  • Expecting this check to catch a corrupted animation frame's actual pixel data, which requires a full decode instead.

Tips

  • If the checker reports a frame-count mismatch, the file was likely edited by a tool that updated acTL without adding/removing the matching fcTL chunks.
  • Pair this with the APNG Frames Extractor when you need to confirm the pixel data itself, not just the structure, is intact.

References

Frequently Asked Questions