One PNG, every icon Windows wants

The dev shop ticket is a single sentence: 'Icon needs to be .ico with the usual sizes.' The usual sizes. You have a beautiful 1024-pixel PNG of the logo, and somewhere between that file and 'the usual sizes' lies a container format from the 1990s that bundles multiple images into one — a format your image editor may not even export without a plugin, and that half the online converters handle by wrapping your single PNG unchanged, producing an .ico that renders blocky at 16 pixels because it contains nothing but a big image.

The failure is invisible until it isn't. The favicon looks fine on your retina laptop, where the 256-pixel entry downsamples smoothly. Then someone opens the site on Windows, and the taskbar icon is a smear; the browser tab shows a gray blob. The file was valid .ico. It was just empty — one size pretending to be four.

This converter does the real job: true multi-size packing, in the browser. Give it a PNG, choose your entries — the classic 16/32/48 favicon trio, the full 16/32/48/256 application set, or any combination — and it resizes the source properly for each, encodes them, and writes a well-formed icon directory around them. Individual per-size PNGs come alongside, because the modern web wants those too.

Converting PNG to ICO in six steps

  1. Load your source PNG

    Square is strongly preferred — the icon world is square by convention. Transparent background is the professional default; a logo with baked-in white corners will carry those corners into every icon size.

  2. Check the source resolution

    The tool reports your PNG's dimensions. At least 256 pixels on a side means every standard icon size can be generated by clean downsampling. Smaller sources upscale for the bigger entries — legal, but soft.

  3. Choose your size set

    The favicon preset packs 16, 32, and 48. The application preset adds 256. Custom selection is there for the odd cases — a 24-pixel entry for legacy toolbars, a 64 for high-density taskbars.

  4. Review the per-size previews

    Each entry renders at its true size, side by side. This is where a 16-pixel icon either survives or dies — check that the mark still reads before shipping it.

  5. Convert and download

    The .ico assembles locally: resized entries, encoded, indexed in a proper icon directory. The per-size PNGs are available in the same download, for the link-tag setup modern sites use alongside the .ico.

  6. Deploy

    Drop favicon.ico at your site root, or wire the link tags from the Favicon Generator's snippet. For app projects, the .ico lands in your build's resource pipeline as-is.

Inside the ICO container

An .ico file is a table of contents plus a stack of images, and the layout is small enough to hold in your head. It starts with a six-byte header: two bytes reserved, two bytes declaring the file type as icon, and two bytes counting the images. Then comes one sixteen-byte directory entry per image — width, height, color count, reserved byte, color planes, bit depth, the image's byte size, and its offset from the start of the file. The image data itself follows, in order.

Two details in that directory encode the format's history. First, width and height are single bytes — 0 to 255 direct — with zero standing in for 256, the format's ceiling. That is why no .ico anywhere holds a 512-pixel image: the field cannot express it. Second, the entries store each image's byte size and file offset, which is how a renderer can jump straight to the 16-pixel entry without reading anything else — a genuinely elegant design for 1990s memory constraints.

The image payloads themselves come in two flavors. The classic flavor is a Windows BMP structure — a 40-byte bitmap header, pixel rows, and an AND mask, a 1-bit-per-pixel transparency layer that predates alpha channels by a decade. The modern flavor, supported since Windows Vista, embeds a complete PNG file as the entry's payload. A 256-pixel PNG entry is typically five to six times smaller than the equivalent BMP data, and every current Windows and browser renderer reads it. This converter writes PNG entries — the byte savings are the whole argument — while emitting BMP-style entries only where a specific legacy target demands it.

Transparency travels through the alpha channel of 32-bit entries, identical in meaning to PNG's alpha. The ancient AND-mask mechanism is still written by some tools for compatibility; modern renderers ignore it when 32-bit data is present, so a well-formed converter sets it to all-visible and lets alpha do the work. The practical upshot for you: transparent regions of your PNG come through transparent at every icon size, no mask debugging required.

Header:   00 00 01 00 04 00            reserved 0 · type 1 (icon) · 4 entries
Entry 1:  10 10 00 00 01 00 20 00 A8 04 00 00 46 00 00 00
          16×16 · 1 plane · 32 bpp · 1,192-byte payload · data starts at byte 70
Entry 2:  20 20 00 00 01 00 20 00 60 09 00 00 EE 04 00 00
          32×32 · 2,400-byte payload · data starts at byte 1,262 (70 + 1,192)
Entries 3 and 4 follow the same 16-byte shape, offsets accumulating through the file

Reading it byte by byte: the directory values are little-endian, so a 1,192-byte size appears as A8 04 rather than 04 A8, and the 32-pixel width is a single 20 byte — 0x20 in hexadecimal. Entry 1's payload offset of 70 is the header (6 bytes) plus four directory entries (64 bytes), and every later offset is the previous one plus the previous payload size. Sixteen bytes of accounting per image is the entire index — small enough to verify by hand, which is exactly what a suspicious engineer should do.

Packing four sizes, counted byte by byte

Run the arithmetic on the standard application set — a 1024×1024 source PNG packed into 16, 32, 48, and 256 entries — and the format's economics become visible:

EntryPNG payload (typical)Uncompressed 32-bit BMP equivalent
16×16≈ 1.2 KB1,024 B pixels + header and mask
32×32≈ 2.4 KB4,096 B pixels + header and mask
48×48≈ 3.8 KB9,216 B pixels + header and mask
256×256≈ 42 KB262,144 B pixels + header and mask
Directory overhead70 bytes total70 bytes total
Whole file≈ 50 KB≈ 285 KB
PNG-in-ICO packing versus classic BMP entries — same images, roughly one-fifth the bytes
The favicon bundle

Input

1024×1024 transparent logo PNG, favicon preset

Output

favicon.ico at roughly 7 KB containing 16, 32, and 48 entries — small enough that the file is effectively free to serve, and readable by everything from current browsers to decade-old bookmarking tools that fetch /favicon.ico by default

The 70 bytes of overhead deserve their moment: six bytes of header plus three or four sixteen-byte directory entries. That is the entire cost of multi-size packaging — the reason bundling sizes is not a optimization decision but a formatting one. The images dominate; the container is noise.

Maskable icons: the PWA circle your logo was not designed for

Install a web app on Android and the launcher does something no favicon pipeline prepares you for: it crops your icon to a shape — a circle on stock Pixels, a rounded square or squircle on other OEMs — and if your manifest only ships a regular icon, Android pastes it onto a white disc first, so the logo floats in a white circle smaller than every native app beside it. The fix is a maskable icon: a manifest entry declared with purpose "maskable", designed so its content survives any mask the launcher applies.

The geometry is a published safe zone: a centered circle with a diameter of 80% of the icon's width — a radius of 0.4 times the icon size. Anything inside that circle survives every known launcher mask; anything outside is at the mercy of the shape. The standard design recipe follows from it: a solid background color or gradient bleeding to all four corners, and the mark itself drawn to occupy roughly the central 70–75% of the canvas, comfortably inside the zone with enough weight to read at launcher sizes.

Manifest setupWhat Android showsVerdict
Only purpose 'any' iconsThe logo shrunk onto a white discThe white-circle look every PWA review notices
Dedicated 'maskable' variant, padded designBackground fills the mask; mark sits inside the safe zoneThe professional setup
One icon, purpose 'any maskable'Same padded design everywhere, browser tabs includedWorks when the design tolerates its own padding at small sizes
The maskable safe zone: a centered circle, 80% of the icon's width. Background may bleed to the corners; the mark may not.

The one trade-off worth weighing before shipping a single 'any maskable' file: browser tabs and bookmark lists display the same padded icon at 16 to 32 pixels, where generous padding reads as a shrink-wrapped logo. Large-traffic sites usually ship both variants — the unpadded mark for 'any' destinations and the padded one for 'maskable' — at 192 and 512 pixels each, four small PNGs that cost less than 20 KB combined and settle every launcher on the device.

Transparency, masks, and the 256-pixel ceiling

The format's constraints are few but firm, and every one of them eventually surfaces in a support thread:

  • The 256 ceiling. Width and height live in single bytes; 256 is encoded as zero. Nothing larger fits, period — larger marks belong to PNG files in web app manifests, declared separately.
  • Tiny-size legibility. A logo that reads at 1024 can dissolve at 16. Inspect the small entries at 100 percent before shipping; a simplified variant for the smallest sizes is the professional fix when detail vanishes.
  • Upscaled sources. A 128-pixel source generating a 256 entry is interpolated — legal, soft, and noticeable. Start from at least 256 pixels, ideally 512 or 1024.
  • Non-square inputs. The format technically allows rectangular icons; the ecosystem practically does not. Pad to square with transparency and every renderer stays happy.
  • Legacy compatibility. PNG entries require Windows Vista or later — which is to say, everything still running. Only genuinely ancient software needs BMP entries, and the converter can emit them when you meet it.
  • Entry order. Renderers generally pick the best match regardless of order, but writing entries small-to-large is the convention tools and checkers expect. The converter follows it; so should any custom packing you do later.

What dies at 16 pixels

The smallest entry is where icon design succeeds or fails, and the failures follow predictable arithmetic rather than taste:

  • Sub-pixel strokes. A stroke four pixels wide on a 1024-pixel master covers 0.4% of the canvas; scaled to 16 pixels it becomes 0.06 pixels — not thin, but mathematically absent. To survive at 16, an element must hold at least one full pixel: roughly 6% of the canvas width, which is 64 pixels on the master. Most logos' fine detailing fails that test by an order of magnitude.
  • Wordmarks. Five letters across 16 pixels allocates about three pixels per letter, which is not reading — it is texture. The professional move is a dedicated small mark: the initial, the container shape, or the simplified glyph.
  • Dark-taskbar contrast. Windows 11 defaults to dark mode, and an icon tuned against white can float there as a pale smudge. Preview every size on both a light and a dark background before shipping; at true-size previews, it is a ten-second check.
  • Trusting the automatic downscale. Resampling produces a technically valid 16-pixel entry that is optically mush. Applications with real design budgets ship hand-tuned small variants; everyone else should at least run the squint test on the preview — if nothing reads at arm's length, simplify the source and reconvert.

Who ships ICO files in the 2020s

More people than the format's age suggests, because two ecosystems still require it:

  • Web developers — the /favicon.ico root file that browsers request by default, alongside modern PNG and SVG declarations
  • Windows application developers — .exe and shortcut icons remain .ico territory, with 256-pixel entries for high-DPI desktops
  • Electron and Tauri app teams — packaging cross-platform builds whose Windows target needs a proper multi-size icon
  • Brand and identity designers — delivering the icon bundle as part of a complete brand asset kit
  • IT admins — favicon and shortcut icons for internal tools rolled out across fleets of Windows machines
  • Game developers — Windows builds of indie titles, where the shortcut icon is often the last asset finished

The web side of that list is largely belt-and-suspenders now — link-tagged PNG and SVG favicons cover the modern browsers — but the application side is current, not legacy. Windows remains an .ico world whenever an executable needs an icon, and the 16-through-256 bundle is still what the platform's shell wants. The Favicon Generator covers the web-specific half of the job, head tags included; this converter is the container specialist.

ICO, PNG, and SVG favicons — the honest ranking

Three ways to declare an icon, each with a real constituency:

FormatSizes per fileBrowser supportBest role
ICO (multi-size)Several, up to 256Universal, including legacy fetchersThe compatibility floor — serve at /favicon.ico
PNG (per-size files)One per fileAll current browsersThe modern workhorse — declared with link tags
SVG (scalable)Infinite, one fileChrome and Firefox; Safari does not support itThe future, held back by one holdout
The standard setup uses all three: SVG where supported, PNGs for the rest, ICO at the root for everything else

The strategy that mature sites converge on is the trio: an SVG favicon for the browsers that render it, a set of PNGs at 32 and 180 — the latter doubling as the apple-touch-icon — declared in the head, and the multi-size favicon.ico at the root for the long tail of default-URL fetchers. Generating all three from one source is exactly the Logo Resizer into this converter, with the Favicon Generator writing the tags. One upload, three formats, every requester satisfied.

The one holdout worth a sentence: Safari does not support SVG favicons, which is the single fact keeping PNG and ICO files in every serious setup. When that changes — and eventually it will — the ICO's role narrows to Windows application icons. Until then, the format born in the Windows 3.0 era remains part of the standard kit, and knowing what is actually inside one puts you ahead of most of the tooling that generates them carelessly.

Conversion without a server in sight

The entire packing operation — resizing each entry, encoding PNG payloads, writing the icon directory, assembling the file — is browser-local work. Your PNG is read by the File API, drawn to canvases at each target size, encoded, and the resulting bytes are concatenated into the .ico structure in memory. The download appears; the tab closes; nothing persists.

For app icons in active development this is more than a comfort feature. Icons ship in unreleased software, carry brand marks under embargo, and pass through plenty of pre-launch hands. A converter with a server-side stage — and most of them have one — becomes another entry in the vendor audit. This one never appears on that list, because there is nothing to audit: no upload, no storage, no processing on anyone's hardware but yours.

ICO questions, answered

What is an ICO file?

A Windows icon container. Unlike PNG, which holds one image, an .ico file is a bundle: a small header followed by several images at different sizes — typically 16, 32, 48, and 256 pixels — packed into a single file. Windows picks the size it needs at render time: 16 for a browser tab, 32 for the desktop, 256 for large icon views. That multi-size packaging is the entire reason the format still exists.

Can a PNG file contain multiple sizes?

No. A PNG holds exactly one image at one resolution. This is the core difference between the formats and the reason conversion is not just a rename: an .ico with four sizes is a container holding four images, each of which must be generated from your source PNG — resized, re-encoded, and indexed in the icon directory.

What sizes should my .ico contain?

For a website favicon, 16, 32, and 48 pixels cover tabs, shortcuts, and taskbar uses. For a Windows application icon, extend to 16, 32, 48, and 256 — the 256-pixel entry serves large icon views in Explorer. The converter presets reflect both bundles; pick the one matching your destination, or choose sizes individually.

Does ICO support transparency?

Yes — 32-bit icon entries carry a full 8-bit alpha channel, same as PNG, and the converter preserves your source transparency through every size. The historical 8-bit and 4-bit palette modes, with their 1-bit transparency masks, still exist in the format for compatibility with ancient software, but modern tools write 32-bit entries and modern renderers expect them.

Why does my 512-pixel PNG not convert to a 512-pixel icon?

Because the ICO format tops out at 256×256 — the width and height are stored in single bytes, where 256 is encoded as zero. A 512-pixel icon is not representable in .ico at all; that size belongs to PNG files in web app manifests. The converter downsizes a 512-pixel source to your chosen entries and, if you need 512 for a manifest, hands you the PNG alongside the .ico.

Do browsers still need favicon.ico, or is a PNG favicon enough?

Modern browsers happily use a PNG favicon declared with a link tag, and that is the cleaner setup for new sites. But browsers also still request /favicon.ico from the site root by default, and a range of legacy tools, bookmark managers, and older integrations only look there. Shipping both costs one small file and closes the gap — which is exactly the workflow this converter supports.

Is my PNG uploaded anywhere during conversion?

No. The resizing, re-encoding, and icon-directory packing all run in your browser on an in-memory canvas, and the .ico downloads from your machine. There is no server-side conversion step, which keeps unreleased brand assets and app icons exactly where they started.

Why does my new favicon still show the old one?

Cache layers. Browsers cache favicons aggressively and often ignore normal refresh signals for them; hard-refreshing the root, clearing the site's data, or fetching the file's URL directly with a cache-busting query usually shows the new file is being served fine. Windows adds a second layer for applications — Explorer keeps its own icon cache, so a rebuilt executable can display its old icon until that cache clears. Both produce 'the converter didn't work' reports that are cache reports.

Can one .ico file serve as both my favicon and my app icon?

It can, but the bundles want different entries. The favicon wants 16, 32, and 48 and stays around 7 KB; the app icon wants those plus 256, pushing the file toward 50 KB. Serving the app bundle as a favicon means every visitor downloads roughly 43 KB of 256-pixel artwork that no browser tab will ever display. Two small files beat one wrongly sized one.

How do I verify my .ico is correctly packed?

Open the file in a hex-capable viewer and read the first six bytes: 00 00 01 00, then the entry count as two little-endian bytes. Confirm the count matches what you intended, and that total file size roughly equals six bytes plus sixteen per entry plus the payload sizes. The lazier check: drag the file back into the converter — the preview shows every contained entry at true size, and a single big image masquerading as a multi-size icon announces itself instantly.

What is a maskable icon, and do I need one?

A maskable icon is a web app manifest entry declared with purpose "maskable" and designed with its content inside a centered safe-zone circle covering 80% of the icon's width. Android launchers crop installed PWA icons to circles, squircles, and rounded squares; a maskable variant lets your background fill the shape instead of floating on Android's default white disc. If your site is installable and Android users matter, you need one — typically at 192 and 512 pixels.

What size should my source PNG be before converting to ICO?

512 or 1024 pixels square, with transparency. The largest entry an .ico can hold is 256 pixels, so anything at or above that converts entirely by clean downsampling. Powers of two are deliberately ideal: each halving step — 1024 to 512 to 256 to 128 — lands exactly on a standard icon size with no interpolation drift. A 300-pixel source technically works but leaves the 256 entry slightly upscaled, and a 128-pixel source produces visibly soft large entries.

The icon toolkit around it

Three tools complete the icon pipeline:

  • Favicon Generator — the full favicon kit with the HTML head snippet to declare it
  • Logo Resizer — the square, transparent, right-sized master that conversions should start from
  • PNG to JPG Converter — the format workhorse for every non-icon destination in the asset kit

The production sequence, one more time: master logo at 1024, resized and padded to square, packed here into a multi-size .ico, declared in the head, served at the root. Six steps, four of them automated, and the icon works everywhere from a 2026 browser to a Windows 7 taskbar — which, somewhere, somebody is still running.

Sources and further reading

Sources and further reading

We cite primary sources (standards bodies, government agencies, official documentation) wherever they exist so you can verify every number on this page yourself.