Favicon not showing? Here's how to fix it
Uploaded a favicon and it still won't show? It's almost always one of six things. Work through them in order.
Open the favicon generator →1. It's cached — force a real refresh
This is the most common cause by far. Browsers cache favicons independently of the page itself, sometimes for weeks, so a perfectly correct new icon can look "broken" purely because the old one is still cached. Open the site in a private/incognito window, or hard-refresh with dev tools open and caching disabled, before assuming anything else is wrong.
2. The path or MIME type is wrong
Browsers request /favicon.ico at your domain root by default, even if you never reference it. If that file doesn't exist, or your server returns it with a MIME type of text/html instead of image/x-icon (common on misconfigured static hosts and some CMS platforms), most browsers silently drop it rather than erroring visibly. Check that your <link rel="icon"> href is a correct path, and confirm the file actually loads by visiting it directly in a new tab.
3. It's not really a valid favicon
Some converters just rename a PNG to .ico without building a real ICO container. That works in some Chromium builds but fails in Safari and stricter parsers. A real favicon.ico has a 6-byte ICONDIR header followed by one directory entry per embedded image — if yours was created by simply renaming a file, rebuild it properly with a real generator.
4. CDN or platform caching
If you're on Cloudflare, Netlify, Vercel or similar, the edge cache can serve a stale favicon long after your origin has the new one. Purge the specific asset (or the whole cache) after deploying a new icon, not just the HTML page.
5. It's missing on a specific surface
Google search results, an iOS home screen, and Android's install prompt each look for a different file — a fixed favicon.ico won't fix a missing apple-touch-icon, and vice versa. Confirm which surface is actually broken and check that specific file and its <link> tag.
6. robots.txt or auth is blocking it
If your favicon lives behind a path disallowed in robots.txt, or requires authentication to load, crawlers — including Google's — can't fetch it and won't show it in search results, even though it renders fine for a logged-in visitor.
FAQ
Why does my favicon show in Chrome but not Safari?
Safari is stricter about ICO parsing and, for the home-screen icon, ignores favicon.ico entirely — it needs an apple-touch-icon specifically. Confirm you have both files and both link tags.
How long does Google take to update a favicon in search results?
It can take days to a few weeks after Google recrawls the page — there's no way to force it beyond requesting indexing in Search Console.
My favicon works locally but not in production — why?
Check that the build actually copies the icon files to the deployed root, and that your CDN cache was purged after the last deploy.
Do I need to clear my own browser cache after every fix?
Yes, for testing. Use a private window each time so you're not fooled by your own cached copy while debugging.
Is there a quick way to check all the files at once?
Visit /favicon.ico, /apple-touch-icon.png, /android-chrome-192x192.png and /site.webmanifest directly in a browser tab — each should load the correct image or JSON instead of a 404, before you spend time debugging anything more complex.