ICO is not simply a renamed PNG. It is a container that can bundle several resolutions of the same icon in one file, so the correct size gets picked automatically depending on where the icon is displayed, whether that is a tiny taskbar entry or a larger shortcut. A png to ico converter has to build that container structure by hand rather than just changing a file extension, which is exactly what this tool does.
Everything happens on your device. The source PNG is drawn onto three separate canvases at the required sizes, each is encoded as a small embedded PNG, and this tool assembles the ICONDIR header and entries around them itself, so a private logo file never has to be uploaded anywhere to become an icon.
Favicon.ico still wants a seat at the table
The clearest case is building a favicon.ico for a website that still needs the legacy file alongside modern PNG and SVG favicons, since some older browsers and bookmark managers only look for that one filename. It also comes up when packaging a desktop application, since Windows executables and shortcuts expect an ICO resource rather than a PNG.
If the only destination is a modern web page, a plain PNG or SVG favicon is usually simpler and just as well supported, so reach for ICO specifically when something explicitly requires that container format rather than by default.
- Convert to ICO when a website needs a legacy favicon.ico alongside modern favicon formats.
- Convert to ICO when packaging a Windows application or shortcut icon.
- Start from a square PNG with a transparent background for the cleanest result.
- Use a simple, high contrast design, since the smallest bundled size is only 16 by 16 pixels.
- Keep the original PNG as your source file for regenerating the ICO later if the logo changes.
Why one ICO file bundles three pixel sizes
A single ICO file is a container holding several independent images, each tagged with its own width and height, rather than one image at a fixed resolution. This tool builds three entries from your PNG at 16 by 16, 32 by 32 and 48 by 48 pixels, which together cover a favicon in a browser tab, a bookmark bar and a larger shortcut icon without needing three separate files.
Each size is rendered fresh from the source PNG rather than one being scaled from another, so the 16 pixel version is drawn directly at that size instead of being shrunk from the 48 pixel version, which keeps small details as legible as the source artwork allows at each resolution.
Writing the ICO container format by hand
There is no browser API that outputs an ICO file directly, so any png to ico online tool has to construct the container itself, and this one does exactly that following Microsoft's own icon file specification. An ICONDIR header records how many images are bundled, followed by one ICONDIRENTRY per image recording its width, height, byte size and the offset where its data begins inside the file.
The image data that follows the header is not raw pixels but a standard embedded PNG for each size, which modern versions of the ICO format explicitly allow instead of the older uncompressed bitmap structure. Building the header this way keeps the output small while remaining fully compatible with how Windows and browsers read a create windows icon file today.
Preparing a PNG for the best ICO result
Start with a square image, since a non square PNG gets squeezed to fit each square icon size rather than cropped, which distorts anything that was not already square. A transparent background carries through to every bundled size, which is what lets the icon sit cleanly on a coloured tab or taskbar rather than showing a hard edged box.
Simplify the design mentally down to 16 pixels before converting. Fine text, thin strokes and subtle gradients that look fine at full size often become an indistinct smudge at the smallest bundled resolution, so a bold, high contrast mark converts far more reliably than a detailed illustration.
This png to ico converter writes its own ICONDIR header, byte by byte
The source PNG is decoded through the browser's image pipeline and drawn onto three canvases sized 16, 32 and 48 pixels, each encoded as PNG through the canvas element's own encoder. This tool then writes a 6 byte ICONDIR header plus one 16 byte ICONDIRENTRY per size, records the byte offset of each embedded PNG inside the final file, and concatenates the header with the three PNG payloads into a single .ico blob.
Because the header and entry structure are just bytes assembled in JavaScript rather than anything requiring a server library, the whole process, from decoding the source PNG to producing the final downloadable ICO, runs entirely in your browser tab with no network request involved.
| Size | Typical use |
|---|---|
| 16 x 16 | Browser tab favicon and bookmark bar |
| 32 x 32 | Taskbar and desktop shortcut |
| 48 x 48 | Larger shortcut and file explorer views |
How to convert PNG to ICO
- 1
Add your PNG file
Drag a square PNG logo or icon onto the drop area, or click it to browse. Files stay on your device.
- 2
Let it render each size
The PNG is drawn fresh onto 16, 32 and 48 pixel canvases so each bundled size stays as clear as possible.
- 3
Build the ICO container
The three sizes are packaged into one ICONDIR structured .ico file following Microsoft's icon format.
- 4
Download the ICO file
Download the finished .ico file, ready to use as a favicon or a Windows application icon.
Related tools worth bookmarking
Sources and further reading
- Microsoft: Icons specificationMicrosoft's own documentation of the ICONDIR and ICONDIRENTRY structure this tool writes.learn.microsoft.com
- MDN: HTMLCanvasElement.toBlobThe browser API this converter uses to encode each bundled size as PNG data.developer.mozilla.org
- web.dev: Choose the right image formatGoogle engineering guidance on when a dedicated icon format is the right choice.web.dev
Frequently asked questions
Common questions about the png to ico converter.
Yes. Every conversion bundles 16 by 16, 32 by 32 and 48 by 48 pixel versions of the source PNG into a single .ico file, each rendered fresh from the original rather than scaled from one another, which is what a proper multi size Windows icon file is meant to contain.
Yes. Save the downloaded file as favicon.ico in your site's root folder, or reference it directly with a link tag, and it will work as a png to favicon ico conversion the same way any traditional Windows style favicon does across current and older browsers alike.
Fine detail, thin lines and small text rarely survive being rendered at 16 by 16 pixels, regardless of which tool performs the conversion. Simplifying the source PNG to a bold, high contrast mark before converting produces a far clearer result at that smallest bundled size.
Yes. Each embedded size is encoded as its own PNG with a full alpha channel, so any transparent background in the source image carries through to every bundled resolution inside the resulting ICO file.
No. Nothing here calls a server to build the icon: the PNG is decoded and redrawn onto three canvases locally, and the ICONDIR header, entries and PNG payloads are concatenated into the final .ico file with plain JavaScript array operations. There is no step in that assembly process that could send bytes anywhere even by accident.
It is stretched to fit each square icon size rather than cropped, since cropping would need a decision about which part of the image to keep. For the cleanest result, start from a square PNG or crop it to square yourself before converting to ICO.