Favicon ToolsVerifyBuild
Formats

favicon.ico: What It Is and Whether You Still Need One

favicon.ico is the icon file browsers request from the root of your domain at /favicon.ico when a page declares no icon of its own. It is an ICO container, so a single file can hold several bitmaps at once — usually 16x16, 32x32 and 48x48 — and the client picks the size it needs. You still want one, because crawlers, feed readers and link-preview bots request that exact path without reading your HTML.

A convention, not a standard

The path /favicon.ico was never specified by anyone; Internet Explorer 5 requested it, and the rest of the web followed. That is why it works with no markup at all — a browser that finds no icon link tag on your page will simply ask the server for that path and use whatever comes back.

The knock-on effect is that the request happens whether or not you have the file. If it is missing, the server logs a 404 for every visitor, and any tool that only checks that path shows a blank placeholder for your site.

What is inside a typical favicon.ico

EntryUsed for
16x16Address bar, bookmark lists, history entries
32x32Browser tabs on standard-density displays
48x48Windows shortcuts and higher-density tabs

Where the file goes

  • public/
    • favicon.icoaddServed at /favicon.ico
    • favicon-32x32.pngPrimary tab icon
    • apple-touch-icon.pngiOS Home Screen

It has to resolve at the site root, not in a subdirectory. Most frameworks map a public or static directory to the root for exactly this reason; some, including recent Next.js, also accept an app/favicon.ico and wire the tag up for you.

Declaring it explicitly

<link rel="icon" href="/favicon.ico" sizes="any">

Optional, since the path is requested anyway, but worth adding: it makes the icon set visible in the markup and lets you cache-bust with a query string when the icon changes.

favicon.ico FAQ

Can favicon.ico actually be a PNG?

Browsers sniff the content rather than trusting the extension, so a PNG served at /favicon.ico usually works. It is still a bad idea — you lose the multi-size behaviour that is the only reason to use the path, and stricter consumers may reject it.

How do I stop the 404s in my logs?

Ship the file. Suppressing the log line hides the symptom while every tool that requests the path still gets nothing back.

Does the file have to be at the root?

For the automatic request, yes — clients ask for /favicon.ico specifically. You can serve an icon from any path if you point at it with a link tag, but the root file is what covers clients that never parse your HTML.

Related terms