pngtoolskit.org
PNG and image utilities, in the browser
Say hi →

Inspect the Chunks in a PNG

every chunk decoded · sizes · offsets · CRC check · nothing uploaded

A PNG is a signature followed by a list of typed chunks. This reads them all and tells you what each one is, how many bytes it costs, where it sits in the file, and whether its checksum matches — which is how you find out why a "simple" 40 KB icon is 40 KB.

Drop PNG files here

Real PNGs only · multiple allowed

    no files
    Ready.

    The chunks you'll actually see

    IHDR comes first and always holds 13 bytes: width, height, bit depth, colour type, compression, filter and interlace method. The colour type is the interesting one — 6 means RGBA, 2 means RGB with no alpha, 3 means an indexed palette. IDAT holds the compressed pixels and is usually split into several chunks. IEND closes the file and is always empty.

    Everything else is ancillary and safe to remove. tEXt, iTXt and zTXt are comments — software names, copyright strings, and occasionally whole XMP blocks of several kilobytes. tIME is a modification timestamp. pHYs carries the resolution, decoded here into dpi. iCCP is an embedded ICC colour profile and is frequently the single largest non-pixel item in a small file. eXIf is a full EXIF block, sometimes including camera and location data.

    A useful convention: a chunk type starting with a lower-case letter is ancillary, upper-case is critical. Unknown types are labelled accordingly rather than guessed at.

    Reading the CRC column

    Every chunk carries a CRC-32 of its type and data, and this recomputes each one rather than trusting it. "ok" means the bytes are intact. "BAD" means real corruption — the file was truncated in transfer, damaged on disk, or edited by something that didn't update the checksum. Decoders vary in how strictly they enforce this, which is why a file can open in one viewer and fail in another. For a full structural audit, PNG validator checks chunk order and header legality too.

    FAQ

    My PNG is huge and it's all IDAT. Now what?

    Then it's genuinely the pixels. Reduce dimensions with Resize, cut the colour count with Reduce colors, or move to WebP.

    How do I remove the metadata chunks?

    Remove metadata strips every ancillary chunk while copying the pixel data through byte for byte.

    Why does it reject my JPG?

    JPEG has a completely different container — marker segments, not chunks. This parser is PNG-specific.

    Can it decompress zTXt or read the ICC profile?

    No — it reports the keyword and the profile name but doesn't inflate compressed payloads or parse ICC internals. That's a job for pngcheck or exiftool.

    What does "bytes after IEND" mean?

    Extra data appended past the end of the image. Sometimes harmless padding from a bad export; occasionally a deliberately hidden payload. Either way, Remove metadata discards it.