pngtoicotool
Browser-only conversion

PNG to ICO downloaded-file lab

PNG to ICO Test: Four Source Shapes, Three Downloaded Outputs

Using the same four local PNGs, ConvertICO.com and PNGtoICO.com each wrote uncompressed DIB layers at fixed default sizes, so all four outputs from each site had the same total byte length. TheCalcu wrote PNG-compressed layers and its file length changed with the source artwork. The tall 120 × 320 input is where those output behaviors become easiest to distinguish.

Convert a PNG to ICO

Three converters completed the four-image download matrix. ConvertICO.com returned four 370,070-byte files, each with six uncompressed 32-bit BI_RGB layers at 16, 32, 48, 64, 128, and 256 pixels. PNGtoICO.com returned four 381,038-byte files, each with nine such layers, adding 20, 24, and 40 pixels. TheCalcu returned PNG-compressed 16, 32, 48, and 256-pixel layers; its four files ranged from 2,900 to 12,489 bytes. Every frame's dimensions, encoding, payload length, and counts of alpha-positive and non-opaque pixels are in the downloadable CSV. CanDoYa's one retrieved square-image output was 5,853 bytes; the other three did not reach a locally verifiable download, so they are not presented as a full matrix.

Measured on 26 September 2026 from locally downloaded ICO files made from square-art.png (320 × 320, 1,401 bytes), narrow-art.png (120 × 320, 989 bytes), tiny-art.png (24 × 24, 168 bytes), and fully-transparent.png (320 × 320, 477 bytes). A separate 512 × 512 transparent source was not present in the project or Downloads folder, so it was not reconstructed or used. Results describe only these files and default settings on the test date.

The same input batch did not mean the same icon set

The two server-returned converters used fixed, uncompressed bitmap payload sizes. Their output lengths were therefore identical for every input image: 370,070 bytes at ConvertICO.com and 381,038 bytes at PNGtoICO.com. The second file was 10,968 bytes longer because its directory described three extra layers—20 × 20, 24 × 24, and 40 × 40—not because its source PNG carried more detail.

TheCalcu's four embedded PNG layers totaled 2,900 bytes for the empty transparent image, 5,652 bytes for the tall artwork, 5,853 bytes for the square artwork, and 12,489 bytes for the tiny artwork. These are observed file lengths from this batch. PNG payloads respond to the encoded pixels, while the two DIB sets reserve the same byte count for each selected dimension.

The tall source exposes a geometry difference

For the 120 × 320 narrow-art input, ConvertICO.com and PNGtoICO.com produced the same count of nonzero-alpha pixels at each shared size: 16,048 of 65,536 pixels at 256 × 256, down to 92 of 256 at 16 × 16. TheCalcu's decoded frames instead had 42,648 nonzero-alpha pixels at 256 × 256 and 168 at 16 × 16. At 256 pixels, its count is 2.66 times the DIB result. This is a pixel-count comparison, not a visual-quality score; the saved files and exact per-frame counts are linked in the data.

That discrepancy is a useful prompt to inspect aspect-ratio handling before converting a wordmark or tall mark. It does not by itself prove the cause or tell us what every converter does. For this run, the evidence is limited to the particular 120 × 320 source and downloaded files. The service's saved ICO is the reference here, not a preview or a marketing statement.

The fully transparent input is a byte-level check

All decoded frames from the 320 × 320 fully-transparent.png had zero pixels with alpha above zero across the three complete runs. For example, the 256 × 256 layer had 0 of 65,536 alpha-positive pixels and 65,536 pixels with alpha below 255. Every smaller frame showed the same all-transparent result. That confirms the all-clear input stayed all-clear in these downloaded files; it does not establish how a converter handles partially transparent edges in every image.

The two DIB converters had the same frame payload lengths even on the empty image: the 256 × 256 DIB payload was 270,376 bytes, and the 16 × 16 payload was 1,128 bytes. TheCalcu's matching PNG payloads were 2,364 bytes and 112 bytes. Those are the embedded frame bytes read from the ICO directory, excluding the file header and directory entries.

One CanDoYa file matched a TheCalcu file byte for byte

The retrieved CanDoYa square-art.ico and TheCalcu square-art.ico were both 5,853 bytes and had the same SHA-256 hash: 5BB98F162F8F0BB743A5DA08C7861A08F803C54B1FB2EB15F08F88ABD8538182. Their four PNG-encoded frame payloads and decoded alpha counts also match. This is one exact file-pair observation for one input and these settings. It does not show shared ownership, infrastructure, or code, and CanDoYa's other three sample outputs were not included because a local download could not be verified.

Download the evidence

The CSV has one row per saved ICO frame: source sample, whole-file bytes, number and order of frames, directory dimensions, encoding, compression, payload bytes, alpha-positive pixel count, and non-opaque pixel count. The original ICOs are available by site and filename below. ConvertICO.com and PNGtoICO.com each have four downloaded files; TheCalcu has four; CanDoYa has the square-art file only.

Downloaded file matrix

Whole-file byte counts and frame sizes below were read from local downloads. Full alpha counts and each payload's compression field are in the CSV.

ConverterSource PNGICO bytesFrames and dimensionsPayload encoding
ConvertICO.comsquare-art.png (320 × 320)370,0706: 16, 32, 48, 64, 128, 256DIB32, BI_RGB uncompressed
ConvertICO.comnarrow-art.png (120 × 320)370,0706: 16, 32, 48, 64, 128, 256DIB32, BI_RGB uncompressed
ConvertICO.comtiny-art.png (24 × 24)370,0706: 16, 32, 48, 64, 128, 256DIB32, BI_RGB uncompressed
ConvertICO.comfully-transparent.png (320 × 320)370,0706: 16, 32, 48, 64, 128, 256DIB32, BI_RGB uncompressed
PNGtoICO.comsquare-art.png (320 × 320)381,0389: 16, 20, 24, 32, 40, 48, 64, 128, 256DIB32, BI_RGB uncompressed
PNGtoICO.comnarrow-art.png (120 × 320)381,0389: 16, 20, 24, 32, 40, 48, 64, 128, 256DIB32, BI_RGB uncompressed
PNGtoICO.comtiny-art.png (24 × 24)381,0389: 16, 20, 24, 32, 40, 48, 64, 128, 256DIB32, BI_RGB uncompressed
PNGtoICO.comfully-transparent.png (320 × 320)381,0389: 16, 20, 24, 32, 40, 48, 64, 128, 256DIB32, BI_RGB uncompressed
TheCalcusquare-art.png (320 × 320)5,8534: 16, 32, 48, 256PNG, DEFLATE
TheCalcunarrow-art.png (120 × 320)5,6524: 16, 32, 48, 256PNG, DEFLATE
TheCalcutiny-art.png (24 × 24)12,4894: 16, 32, 48, 256PNG, DEFLATE
TheCalcufully-transparent.png (320 × 320)2,9004: 16, 32, 48, 256PNG, DEFLATE
CanDoYasquare-art.png (320 × 320)5,8534: 16, 32, 48, 256PNG, DEFLATE; one sample only

The one CanDoYa file and the matching TheCalcu square-art file have identical SHA-256 hashes. This does not establish shared code or ownership.

What the saved ICOs contain

  1. 01
    Keep the source dimensions visible

    The four inputs were intentionally different: square artwork, a tall 120 × 320 image, a 24 × 24 image, and an entirely transparent 320 × 320 image. Their original PNGs are linked below so the test inputs can be checked.

  2. 02
    Read the ICO directory and each payload

    The measurements come from the downloaded ICO directory entries and image payloads. DIB frames were parsed from their bitmap headers and pixel alpha bytes; PNG frames were decoded from the embedded PNG data. The page's displayed file-size labels were not used.

  3. 03
    Compare matching sizes separately

    Frame counts differ between the three complete converters, so total file bytes alone do not isolate encoding cost. Compare the exact shared dimensions in the CSV and keep the other added sizes visible as part of each site's output behavior.

FAQ

Questions about this converter matrix

Why do the four files from two converters have identical lengths?

Each of those sites wrote uncompressed 32-bit DIB payloads at fixed dimensions. A given DIB frame occupies a fixed number of bytes regardless of the artwork, so each site's four files had the same six- or nine-frame total.

Does a higher alpha-positive pixel count mean a better icon?

No. It records pixels whose alpha byte is above zero in a particular decoded frame. It does not measure recognizability, edge quality, or whether stretching was desirable.

Was the separate 512 × 512 transparent PNG included?

No. The source PNG was not present in the project or Downloads folder during this run. Existing ICO outputs are not a substitute for the original input.

Does the matching CanDoYa and TheCalcu file prove these sites share a backend?

No. The evidence is that two downloaded files for one square sample have the same bytes and SHA-256 hash. It does not identify how either file was generated.