ALL IMAGE TOOLS56
ICO to PNG
Convert ICO to PNG Online — Every Size Inside the File
Read the icon directory and save any size the file holds as its own PNG — byte for byte wherever the icon was already a PNG.
About ICO to PNG
An .ico is not one picture — it is a container holding several, typically 16 × 16, 32 × 32 and 48 × 48, sometimes a 256 × 256 as well. That matters because a browser handed the whole file decodes exactly one image out of it and never says which; the decoders in Chromium and WebKit prefer the largest size, then the greatest colour depth, and nothing in the platform lets a page ask for a different one. So the usual one-line convert quietly throws away most of what you gave it. This page reads the icon directory instead — six bytes of header and sixteen per entry — lists every image the file actually contains with its size and bit depth, and lets you take the ones you want. The directory also tells the page how each icon is stored, which decides what can honestly be claimed about it. An entry stored as a PNG is copied straight out as a byte slice: no decode, no canvas, no re-encode, so the file you get is byte for byte the one that was inside, and that is genuinely lossless. An entry stored as a bitmap cannot be, because a bitmap is not a PNG; it is decoded and written out again. Each icon is badged with which of the two it is, read out of the directory rather than guessed from the file's name, because one .ico can carry both kinds side by side. Files made by this site's own PNG to ICO tool store every entry as a PNG, so they round-trip through here untouched. Cursor files (.cur) use the identical container and work the same way, with the caveat that the hotspot coordinates a cursor carries are not part of a PNG and are dropped. If the directory declares images the file does not actually contain — a common symptom of a truncated download — the page counts them and says so instead of silently listing fewer icons than the file claims. Everything runs in this tab; nothing is uploaded.
Questions
Does this give me every size in the .ico, or just one?
Every size. The page reads the icon directory itself, so it can list all of them and let you choose; each one you pick comes out as its own PNG named after its dimensions. This is the difference between this tool and dropping an .ico onto a canvas: hand the whole file to a browser and it decodes exactly one image and does not tell you which. Chromium and WebKit both prefer the largest entry and then the greatest colour depth, so a 16 × 16 you specifically wanted is the one you are least likely to get that way.
Is the PNG I get identical to what was inside the file?
For some entries, yes — and the page tells you which. An .ico may store each image either as a complete PNG or as a headerless bitmap, and the two can appear in the same file. A PNG entry is copied out as a byte slice with no decode and no re-encode, so it is byte for byte what was in the container. A bitmap entry has to be decoded and written out again to become a PNG, so it is a re-encoding; nothing is quantized and no quality setting applies, because a bitmap in an .ico is uncompressed, but it is not the original bytes. Each icon carries a badge saying which of the two it is, taken from the directory rather than inferred.
Why are some icons in my file stored as bitmaps?
History. The .ico format predates PNG, and its original payload was a bitmap with no file header, stored upside down with a separate transparency mask stacked underneath it. PNG entries were added later and are now the norm for anything 256 × 256, because a 256 × 256 bitmap is a quarter of a megabyte. Windows icon editors still write small sizes as bitmaps, so a real favicon.ico frequently mixes both. This site's own PNG to ICO tool writes every entry as a PNG, which is why files made there come back through here untouched.
Can I open a .cur cursor file here?
Yes. A cursor uses the identical container — the same six-byte directory header and the same sixteen bytes per entry — with only the type field distinguishing the two, so every image inside one comes out the same way. The page reads that field and tells you when the file you dropped is a cursor rather than an icon. The one thing that does not survive is the hotspot: the coordinates that say where the click actually lands are stored in the directory, and a PNG has nowhere to put them.
The page lists fewer images than my file is supposed to have. Why?
Because the directory and the file disagree, and the page will not invent the missing images. Every entry lists where its payload begins and how long it is; when that runs past the end of the file — the usual sign of a truncated or interrupted download — or when the payload starts with neither a PNG signature nor a bitmap header, there is nothing to extract. Those entries are counted and reported above the icons rather than dropped in silence, so the count you see is what the file can actually deliver.
Is my file uploaded to a server?
No. Transmute processes everything locally in your browser using JavaScript and WebAssembly. Your files never leave your device — there is no server, no upload, no cloud processing.