Switching
Practical guide

Which favicon sizes do you actually need — 16 through 512

What goes inside favicon.ico, where each size is actually used, and which sizes have to live outside the ICO as separate PNGs.

September 14, 2026

ICO is a container that holds several resolutions in one file, so a single favicon.ico carrying 16, 32 and 48 covers browser tabs, bookmarks and Windows desktop shortcuts. ICO tops out at 256 pixels per side, so the iPhone home screen (180) and Android/PWA icons (192 and 512) have to be separate PNGs.

Favicons are easy to make and confusing to size. One source says 16, another says 512, and both are right — because they are talking about different places the icon shows up.

ICO is a box, not an image

A JPG or PNG file holds one picture. ICO does not. It stores several resolutions side by side in one file, and the operating system or browser picks whichever fits the slot it is filling. That is how a single favicon.ico can look crisp at 16 pixels in a tab and at 48 on a desktop shortcut.

A single size does work. But include only 16 and it turns soft anywhere larger; include only 256 and browsers downscale it into mush wherever it is small, because thin strokes do not survive scaling.

Where each size is used

SizeWhere it appearsWhere it lives
16x16Browser tab, address barfavicon.ico
32x32Tabs on high-DPI screens, bookmark listsfavicon.ico
48x48Windows desktop shortcutfavicon.ico
64 / 128 / 256Large icon views, some extensionsfavicon.ico (optional)
180x180iPhone and iPad 'Add to Home Screen'PNG + apple-touch-icon
192x192Android 'Add to Home Screen'PNG + web manifest
512x512PWA install prompt and splash screenPNG + web manifest
ICO cannot exceed 256 pixels per side, which is why anything from 180 upward is kept as a separate PNG.

A realistic minimum is 16, 32 and 48 inside favicon.ico. Add a single 180 PNG and you have covered mobile home screens too. Only bother with 192 and 512 if you intend the site to be installable as a PWA.

Not every logo survives 16 pixels

Shrink a logo straight down and at 16 pixels it usually becomes a smudge — especially a wide wordmark. It helps to treat a favicon not as a miniature of the logo but as **a separate drawing whose only job is to be recognisable at 16 pixels**.

  • If you use letters, use one. Two already run together.
  • Thin strokes disappear. Exaggerate the weight so something remains.
  • Leave a little padding. Artwork touching the edges looks clipped in a tab.
  • Prefer a transparent background — tab backgrounds change in dark mode.

So, the order of operations

Start with one square PNG, generously sized at 256 or 512, ideally on a transparent background. Convert it to ICO with 16, 32 and 48 bundled in, then export a 180 PNG from the same source. If your source is not square, crop it square first — favicon slots always are, so anything else gets squashed.

Browsers look for `/favicon.ico` even with no markup pointing at it, so putting the file at the site root under that exact name is the simplest thing that works. If a change does not show up, it is almost always caching: try a hard refresh or a private window.

Frequently asked questions

Isn't a PNG favicon enough these days?
For browsers, yes — modern ones read PNG favicons fine. Two reasons to keep favicon.ico anyway: browsers request /favicon.ico even without markup, so it acts as a safety net, and places outside the browser such as Windows shortcuts still expect ICO.
Can I just ship one 512 icon?
Not inside an ICO — 256 pixels per side is the ceiling. And a single large image means the browser downscales it for the 16-pixel slot, which is exactly where thin strokes fall apart. Carrying small sizes explicitly is the whole point of ICO.
Does transparency survive?
Yes. Each size inside an ICO can be stored as PNG, and PNG keeps its alpha channel. If your source is a JPG there was no transparency to begin with, so it goes in with whatever background colour it already had.
I replaced the favicon and still see the old one.
Favicons are cached aggressively. Try a hard refresh, a private window, or open the file's URL directly. If it still sticks, link it with a version query such as `favicon.ico?v=2`.

Explore related tools