ICO to PNG Converter
Drop a Windows .ico file and get every image inside it back as a separate PNG — each size named and downloaded in your browser, never uploaded.
- Free
- No account
- Runs in your browser
- Nothing uploaded
Runs entirely in your browser — your input is never uploaded, logged, or stored.Privacy policy
What is ICO to PNG Converter?
This tool pulls the images out of a Windows .ico file and saves each one as its own PNG. An .ico is a container that can hold several icon images — usually different sizes like 16 × 16, 32 × 32, 48 × 48, 256 × 256 — and sometimes different colour depths. The tool looks inside the .ico, lists every image it finds, and extracts each one. For PNG entries stored inside the .ico (a feature added in Windows Vista) the original PNG bytes are copied out exactly, no re-encoding. For older-style bitmap entries, the browser decodes each bitmap and saves it as a PNG — a small, honest re-encoding by the browser.
A browser would usually decode an .ico as a whole and show only one of its frames. To give you every size, the tool parses the .ico's directory and, for each entry, either slices out the stored PNG or builds a single-entry .ico around that bitmap and lets the browser decode that single image. The result is one PNG per directory entry, named after the icon and its size (e.g. `icon-16x16.png`, `icon-256x256.png`). Windows stores a 256 px image as 0 in the one-byte width/height fields; the tool uses 256 for naming and display.
An .ico can hold any combination of PNG and bitmap entries — some real files mix them. The page is explicit about which is which: PNG entries are copied as stored (lossless), and bitmap entries were decoded by your browser and re-encoded. Transparency is preserved where possible. Bitmaps below 32 bits per pixel use a 1-bit AND mask for transparency; 32-bit bitmaps can carry an alpha channel.
Everything happens in your browser. Nothing is uploaded. The file is read locally, the directory is parsed, and output PNGs are created in-memory for you to download individually or as a ZIP.
1. Read the 6-byte ICONDIR: `reserved` (0), `type` (1 for icons), `image count` (uint16 LE). A count of 0 is refused. The count is also capped to stop an absurdly long list of images from exhausting memory in a browser tab. 2. Read one 16-byte ICONDIRENTRY for each image: `width` (byte; 0 means 256), `height` (byte; 0 means 256), `colour count` (byte), `reserved` (byte), `colour planes` (uint16 LE), `bits per pixel` (uint16 LE), `byte size of the image data` (uint32 LE), `offset of the image data` from the start of the file (uint32 LE). The tool uses the directory's width and height for naming and for rendering. 3. Check that the directory fits in the file, and that every entry's `offset + size` fits in the file, naming the first offending entry. Also reject entries that are neither a PNG nor a bitmap that begins with a known BITMAPINFOHEADER-family size. 4. Classify each entry: if the data at `offset` starts with the PNG signature (`89 50 4E 47 0D 0A 1A 0A`) → `kind: png` and the PNG bytes are copied out byte for byte. Otherwise, if the first four bytes form a recognised DIB header size (12, 40, 52, 56, 64, 108 or 124) → `kind: bmp` and the browser will need to decode it. Anything else is not image data and is refused. 5. For each entry, produce a PNG named `<name>-<w>x<h>.png`. For PNG entries this is lossless extraction. For bitmap entries the widget wraps only that entry in a minimal single-entry .ico (rewriting the data offset to the new position) and passes it to the browser's image decoder; the decoded bitmap is drawn onto a canvas at the entry's size and encoded as a PNG.
| Stored as PNG | Stored as bitmap (DIB) | |
|---|---|---|
| What comes out | The stored PNG, copied byte for byte | A PNG re-encoded by your browser from the bitmap it decoded |
| Transparency | Full 8-bit alpha as stored in that PNG | Full alpha at 32 bits per pixel; below that, a 1-bit AND mask (fully transparent or fully opaque) |
| Colour depth | Whatever the stored PNG holds | The entry's bits-per-pixel (1, 4, 8, 24 or 32) |
| Quality trade-off | Lossless — exactly the same bytes, so no quality loss | Re-encoded — pixel values may be rounded slightly by the browser's decoder; generally very close |
Worked examples
- An ICO holding a 16 × 16 PNG entry and a 32 × 32 bitmap entry → two PNGs: `icons-16x16.png` (copied byte for byte from the stored PNG) and `icons-32x32.png` (decoded from the bitmap by your browser).
- A stored width or height of 0 means 256 — the tool names that image `icons-256x256.png`.
- An ICO with only PNG entries → every size is copied out byte for byte; the tool reports no bitmap warnings.
- An ICO with only bitmap entries → your browser decodes each one and saves it as a PNG. A bitmap below 32 bits per pixel marks transparency with a 1-bit mask instead of an alpha channel.
- An ICO with both kinds → `2 of 3 images in "icon.ico" are Windows bitmaps rather than PNGs, so your browser decoded each one and it was saved as a PNG. A bitmap below 32 bits per pixel marks transparency with a 1-bit mask instead of an alpha channel."
- "icons.ico" is 21.00 MB, over the 20.00 MB limit for this tool. Everything runs in your browser's memory, so very large files can crash the tab.
- "icons.ico": This file is not an ICO file: an .ico begins with the six bytes 00 00 01 00 and an image count, and this one does not. These bytes are actually PNG data. Check that you picked the .ico file itself, not the PNG or JPG it was made from.
- "icons.ico": This ICO file is damaged: image 2 of 2 is stored at byte 54 and is 48 bytes long, which runs past the end of the file (60 bytes). Download the file again — it may not have finished downloading.
How to use ICO to PNG Converter
- Click "Choose ICO files", drop a .ico onto the box, or paste it with Ctrl+V (Cmd+V on a Mac).
- Click "Convert to PNG" — the tool parses the .ico and extracts every image it contains.
- Download each PNG, or use "Download all (.zip)" for several files.
- If the page says an image was stored as a bitmap, that's because it couldn't be copied losslessly and had to be decoded by your browser.
Common errors
- "icons.ico" is 21.00 MB, over the 20.00 MB limit for this tool. Everything runs in your browser's memory, so very large files can crash the tab.
- "icons.ico": This file is not an ICO file: an .ico begins with the six bytes 00 00 01 00 and an image count, and this one does not. These bytes are actually PNG data. Check that you picked the .ico file itself, not the PNG or JPG it was made from.
- "empty.ico": This ICO file holds no images: its 6-byte header says the image count is 0, so there is nothing inside to extract. The file is empty or damaged.
- "icons.ico": This ICO file is damaged: its header says it holds 4 images, but a directory for 4 images needs 70 bytes and the file is only 20 bytes long. Download the file again — it may not have finished downloading.
- "icons.ico": This ICO file is damaged: image 2 of 2 is stored at byte 54 and is 48 bytes long, which runs past the end of the file (60 bytes). Download the file again — it may not have finished downloading.
- "icons.ico": This ICO file is damaged: image 1 of 1 is 16 bytes of data that is neither a PNG nor a Windows bitmap, so it is not an image.
- "icons.ico": This ICO file claims to hold 513 images — more than the 512-image limit for extracting them in a browser tab. A normal .ico holds a handful of sizes, so this file is probably damaged.
- "icons.ico": 1 of the 2 images in "icons.ico" is a Windows bitmap rather than a PNG, so your browser decoded it and saved the result as a PNG. A bitmap below 32 bits per pixel marks transparency with a 1-bit mask instead of an alpha channel.
- "icons.ico": image 1 of 2 (32 × 32 px) is stored as a Windows bitmap, and your browser could not decode it — your browser could not decode this image. The file may be damaged.
FAQ
How do I convert an ICO to PNG?
Drop the .ico file onto this page and click "Convert to PNG". Every image inside the icon — each size it contains — comes out as its own PNG, downloaded in your browser with nothing uploaded.
Does this extract every size in the ICO?
Yes. The tool reads the .ico's directory and produces one PNG per directory entry, in directory order. That means every size the icon actually stores is extracted. For icons that mix PNG and bitmap entries, you get a PNG for each.
Are PNG entries copied losslessly?
Yes. When the .ico stores an image as a PNG (common since Windows Vista), the tool slices those exact bytes out and saves them as a PNG with no re-encoding. Bitmap entries cannot be copied as PNGs, so your browser decodes them and re-encodes to PNG; the page makes that distinction clear.
Why does the page say a bitmap was decoded by my browser?
Older .ico files store images as Windows bitmaps (DIBs). A bitmap is not a PNG, so it has to be turned into one. The tool builds a one-image .ico containing just that bitmap and asks the browser to decode it, then draws it to a canvas and encodes a PNG. That's how you get a usable PNG.
Will an ICO with bitmap entries keep full transparency?
For 32-bit bitmaps, the alpha channel is kept. For bitmaps below 32 bits per pixel, transparency comes from a 1-bit AND mask, so pixels are either fully transparent or fully opaque. PNG entries keep whatever transparency they already had.
What does it mean when the name ends in `-256x256.png`?
The .ico format stores 256 px as 0 in the one-byte width and height fields. The tool detects that and names the file `-256x256.png` so it's human-readable and sorts correctly.
Related tools
- PNG to ICO ConverterDrop a PNG, JPG, WebP or SVG, tick the icon sizes you need, and download one favicon.ico containing all of them — made on your device.
- Image ConverterDrop any common image — JPG, PNG, WebP, HEIC, AVIF, GIF, BMP, SVG or ICO — choose JPG, PNG, WebP or ICO, and download the converted files.
- Favicon GeneratorDrop one image and get the whole favicon set — six PNGs, a multi-size favicon.ico and the HTML to paste — made on your device, never uploaded.
Prefer AllUtil on Google
One click adds AllUtil to your Google preferences. You'll see our tools highlighted with a Preferred badge in Search and AI answers.