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
| Entry | Used for |
|---|---|
| 16x16 | Address bar, bookmark lists, history entries |
| 32x32 | Browser tabs on standard-density displays |
| 48x48 | Windows 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.