What a chunk walk can tell you
A PNG is a sequence of typed chunks, each one carrying its own CRC-32 checksum. That makes the file unusually answerable: a checksum either agrees with the bytes in front of it or it does not, so this page can say with certainty which chunk changed after the file was written, and at which byte offset a chunk claims more data than the file contains. Everything in the findings table is measured from your file rather than guessed at.
The save keeps what survives and nothing else. Chunks that check out are copied as they are; the image data runs up to the last whole IDAT chunk, plus whatever arrived of the one after it; and a correct IEND is written at the end. The result is decoded once to count the rows that survive, and that count is printed beside the save.
What a checksum cannot repair
- A failing CRC proves a chunk changed. It does not reveal what the original bytes were.
- An IDAT chunk whose checksum fails is left out, with everything after it, because a decoder cannot know which of its bytes are wrong.
- A cut-off final IDAT is kept to the last byte that arrived; it is not trimmed to a deflate block boundary, so a strict decoder may stop a few rows earlier than a browser does.
- Animated PNGs are recovered as files, but the preview shows the single frame the browser exposes.
- Orientation is not normalised on this route, because the diagnostic has to run on files the workbench's decoder would refuse outright.
Questions about broken PNGs
What does the saved PNG contain?
Is anything re-compressed?
What does “Rewrite checksums only” do?
Why is the bottom of my recovered PNG blank?
Does the PNG get uploaded?
Other kinds of restoration
- Repair a corrupted JPEGName the byte where it broke and save the surviving original bytes with an end marker, not a re-encode.
- RepairImageDetection, an editable mask and the fill, on one column.
- Restore an old photographOpens on fade correction, for a print that has gone pale and warm.
- What restoration cannot bring backSilvering, mould, missing faces, and the honest end of the list.


