Four files and four lines of HTML: favicon.ico, an SVG icon, the Apple touch icon and a web app manifest with two PNGs in it. That set is what our favicon generator makes, and on 24 September 2026 we checked it against what Chromium 153 actually downloads. With those four lines in place, Chromium fetched exactly one icon file, the SVG. It never touched favicon.ico, the Apple icon or the manifest.
So why ship the other three? Because they are for other browsers and for moments we couldn’t reproduce on a desktop: an older browser without SVG icons, an iPhone adding the site to its home screen, an Android phone installing it. The request log shows what one browser does; the rest of this page says which parts come from our tests and which from the makers’ own documents.
What Chromium asked for
We served eleven versions of one test page from a local server, each on its own address so nothing could be remembered between them, and logged every request the browser made in the 2.5 seconds after the page loaded. We ran each page four times: with and without a visible browser window, on a normal screen and on a high-density one. All four runs of every page matched.
| What the page links | What Chromium requested |
|---|---|
| Nothing at all | /favicon.ico |
| Only the Apple touch icon | /favicon.ico |
| Only a web app manifest | /favicon.ico |
| favicon.ico | /favicon.ico |
| icon.svg | icon.svg |
favicon.ico with sizes="32x32", then icon.svg, Apple icon, manifest (our set) | icon.svg only |
| favicon.ico, then icon.svg, no sizes | icon.svg, then favicon.ico |
| icon.svg, then favicon.ico, no sizes | favicon.ico only |
icon.svg, then favicon.ico with sizes="32x32" | icon.svg only |
| PNG icons at 16×16 and 32×32 | 32×32 only, even on the 1× screen |
| An icon link to a file that doesn’t exist | That missing file, and nothing else |
Three things in that table changed how we write the tags. First, a page with no icon link still costs a request: Chromium asks for /favicon.ico at the top of the site on its own. The HTML standard allows exactly this when a page links no icon. An Apple touch icon or a manifest on its own doesn’t count as linking an icon, so those pages got the same request. If you have no favicon.ico there, your server logs fill with 404s for it.
Second, order matters when the links don’t say a size. With the SVG listed first and the ICO second, Chromium took the ICO and ignored the SVG. That follows the standard too: when several icons are equally suitable, the browser must use the last one. The fix is the sizes="32x32" on the ICO line. With it, Chromium fetched only the SVG in both orders we tried. Our generator writes the tags in that form.
Third, a broken icon link isn’t rescued. For the page that linked a missing file, Chromium requested that file and nothing else; it did not fall back to /favicon.ico. We had half expected it to.
One result we can’t fully explain: with the ICO first and the SVG second, both unsized, Chromium fetched both files. We don’t know which of the two it ends up showing.
The files, and what they weigh
We made the full set from four public SVGs with the generator’s defaults. favicon.ico holds three PNG images, 16, 32 and 48 pixels across.
| Source SVG | SVG | favicon.ico | apple-touch-icon (180) | icon-192 | icon-512 |
|---|---|---|---|---|---|
| SVG logo | 4.1 KB | 4.1 KB | 6.5 KB | 7.4 KB | 23.5 KB |
| Brazil flag | 4.1 KB | 1.8 KB | 3.7 KB | 4.4 KB | 15.3 KB |
| Tux, the Linux penguin | 48.8 KB | 4.2 KB | 14.1 KB | 16.2 KB | 62.2 KB |
| Inkscape logo | 22.5 KB | 5.6 KB | 20.3 KB | 24.1 KB | 103.3 KB |
The whole set for a simple logo comes to under 50 KB, and a Chromium visitor downloads only the SVG from it. The 512 pixel PNG is the heavy one, and desktop Chromium didn’t fetch it in any of our tests.
Starting from the SVG pays off even inside the ICO. We made the same favicon.ico from a 1024 pixel PNG of each logo instead. It came out 28 to 75% larger (4.1 KB to 5.8 KB for the SVG logo, 1.8 KB to 3.2 KB for the Brazil flag), because an SVG is drawn fresh at 16 and 32 pixels, with crisp edges that compress well, while a large picture scaled down carries soft in-between shades. If you only have a PNG of your logo, the tool still works; give it 512 pixels or more.
Apple and Android, from their own documents
Desktop Chromium never asked for the Apple icon or the manifest, so for those two we rely on first-party docs. Apple’s Safari guide, last updated in 2016, says a link with rel="apple-touch-icon" sets the home screen icon, lists 180×180 for the iPhone, and says that without a link the system looks in the site’s top folder for a file named apple-touch-icon.png. That is why the generator uses that exact name and tells you to put it at the top level. The same guide says Safari on iOS 7 adds no effects to the icon, so any shine or effect has to be in your picture. The generator fills its see-through areas with a colour of your choice.
For Android and installed web apps, web.dev says Chromium needs at least a 192 pixel and a 512 pixel icon in the manifest. Those are the two the generator lists. We left out “maskable” icons, the kind Android crops into circles and rounded squares: they need a wide safe margin around the logo, and one that looks right depends on your design.
Already have an icon file and need a size out of it? ICO to PNG saves every image inside it. To build an ICO with sizes of your own choosing, use PNG to ICO.