Favicon ToolsVerifyBuild
Reference

Where Does favicon.ico Go? The Root-Path Convention

By long-standing convention, browsers and many crawlers request /favicon.ico from the root of your domain even with no link tag pointing at it. So a favicon.ico served at the site root is the one file that satisfies everything asking by path. Where you physically place it varies by stack (public/ for most frameworks, the app directory for Next.js), but it must end up answering at /favicon.ico.

The root request nobody declares

Even if your head has no icon link at all, browsers, feed readers, and crawlers will still ask for /favicon.ico at the very root of the domain. It's an implicit request that predates the link tag, and plenty of clients rely on it.

That's why the file has to resolve at the root path. Your link tags cover everything else (SVG, PNG sizes, apple-touch-icon), but this one URL is requested whether you point at it or not.

Where the file goes by stack

StackPut the file in
Plain HTMLThe site root, served at /favicon.ico
Vite / React / Vuepublic/, copied to the root
Next.js App Routerthe app directory (app/favicon.ico)
WordPressthe Site Icon setting, not a file you upload
Angularpublic/, or listed in angular.json assets

Favicon path FAQ

Where do I put favicon.ico?

Somewhere that serves it at /favicon.ico: the site root for plain HTML, public/ for most frameworks, the app directory for Next.js App Router. WordPress and Shopify handle it through a setting instead of a file.

Does the favicon really have to be at the root?

For the implicit request, yes. Clients that ask for /favicon.ico by path won't find it anywhere else. Additional icons can live elsewhere as long as your link tags point at them.

Do I still need favicon.ico if I have link tags?

Yes. Link tags serve browsers, but path-based requests from crawlers and older clients bypass your HTML and go straight to /favicon.ico.

Related terms