Inspect the Chunks in a PNG
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
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.