# PNG to ICO sample study — October 13, 2026

These original synthetic fixtures and explanatory diagrams are CC0. The samples do not contain user pictures. Browser version was not recorded. Five actual ICO downloads were inspected independently with Python struct and Pillow 11.3.0.

1. Download one of the five paired PNG/ICO samples from https://filepetal.com/png-to-ico/.
2. Select its PNG in the tool, convert, inspect the actual ICO preview and download the ICO.
3. Compare dimensions, bytes and SHA-256 with input-manifest.json and output-verification.json. A different browser encoder can produce different bytes; do not infer failure from a hash alone.
4. Download all ICOs and inspect-icons.py into the same folder. Run `python inspect-icons.py` with Pillow 11.3.0 installed. It checks every directory entry against the embedded PNG dimensions, offsets and alpha bounds.
5. Run `python generate-fixtures.py` in a scratch directory to regenerate the eight inputs. They are written into generated-png-fixtures. The original inputs reproduce byte-for-byte with the recorded Pillow version.
6. Repeat wrong-header.png, truncated.png and oversized.png in the browser. All three should show an error without a download. Neither this set nor its bounds cover all malformed images or devices.

Every tested ICO has one 256×256 PNG image at byte 22; this is not a multi-size icon package. Wide/tall pictures fit inside the square with transparent margins. Smaller images are enlarged and larger ones reduced. Existing 256×256 encoding was retained; the update adds truthful output dimensions, actual ICO preview and explanatory material.

The `*-payload.png` files are extracted from the actual ICO downloads for viewers that cannot open ICO. They are decoded/re-saved inspection copies, not separate images offered by the converter.

Untested: Windows shell integration, legacy icon editors, physical phones, exhaustive ICC/16-bit/APNG handling. No exclusive feature superiority was established. SHA256SUMS.txt identifies the archived inputs, outputs, scripts, records and this file.
