An 8,653 byte ICO with 16, 32, 48, and 256 pixel entries produced a 5,453 byte 256×256 PNG.
Smaller icon entries
Lost
The 16×16, 32×32, and 48×48 renditions were not exported as separate PNG files.
Transparency
Kept
The output opened as RGBA, preserving the transparent background around the test icon mark.
Container metadata
Lost
ICO directory information and the list of available icon sizes are not represented in a single PNG file.
Pixel shape
Kept
The square 256×256 source entry stayed square with the same transparent canvas geometry.
Browser favicon intent
Changed
The PNG can be edited or previewed easily, but it no longer behaves like an ICO bundle for legacy browsers.
Largest icon image Kept
An 8,653 byte ICO with 16, 32, 48, and 256 pixel entries produced a 5,453 byte 256×256 PNG.
Smaller icon entries Lost
The 16×16, 32×32, and 48×48 renditions were not exported as separate PNG files.
Transparency Kept
The output opened as RGBA, preserving the transparent background around the test icon mark.
Container metadata Lost
ICO directory information and the list of available icon sizes are not represented in a single PNG file.
Pixel shape Kept
The square 256×256 source entry stayed square with the same transparent canvas geometry.
Browser favicon intent Changed
The PNG can be edited or previewed easily, but it no longer behaves like an ICO bundle for legacy browsers.
Sample conversions
Generated multi-size favicon
Input
8,653 byte ICO generated from a 512×512 transparent PNG with 16, 32, 48, and 256 pixel entries.
Output
5,453 byte PNG at 256×256, RGBA. The large rendition was clean, but smaller hand-tuned icon entries were absent.
Legacy site favicon
Input
ICO intended for browser tabs and Windows shortcuts with multiple embedded bitmap sizes.
Output
One editable PNG extracted from the icon. It worked for design review, not as a full replacement favicon.ico.
A real ICO → PNG run
We converted our ICO sample (12 KB) with Image engine on 2026-10-20. It took 30 ms and produced a 11 KB PNG file, about the same size as the input. The engine raised 1 warning, listed below.
Input · sample.ico · 12 KB
256 × 171 px, 1 size: 256×171
Width
256
Height
171
Encoding
1 size: 256×171
Output · sample.png · 11 KB
256 × 171 px, 8-bit, colour type 6
Width
256
Height
171
Encoding
8-bit, colour type 6
△Image metadata stripped from output.
Options and when to change them
width
Resize the extracted PNG if you need a small preview rather than the largest embedded icon.
height
Set height with width to force an exact PNG box after the icon entry has been decoded.
fit
Use contain when padding an extracted icon onto a required canvas size is better than stretching it.
Do it yourself
Pillow 11
bash
from PIL import Image
im = Image.open("favicon.ico")
im.save("favicon.png", optimize=True)
Pillow opens one selected icon image by default; inspect im.ico.sizes() when smaller entries also matter.
ICO to PNG by API or MCP
The HTTP API and the MCP server run the exact engine this page uses (Image engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=ico&to=png.