Google treats the search-result favicon as a separate pipeline from the browser tab icon. The browser is forgiving: it will scale anything, accept any format, and fall back to a generic globe only in the worst case. Search is not forgiving. It validates, and when validation fails it silently falls back — no warning, no error in Search Console.
One: the icon is smaller than 48 × 48
This is the most common cause by a wide margin, because it is exactly what a decade of favicon tutorials produce. A 16 × 16 ICO, generated in 2011, still works perfectly in a browser tab and fails search entirely.
- The icon must be at least 48 × 48 pixels.
- Its dimensions must be a multiple of 48 — 48, 96, 144, 192.
- A declared size and the actual pixel dimensions both matter. Declaring sizes="48x48" on a 16 × 16 file does not help.
<link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png" />
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png" /> Two: the icon lives on a different host
Google requires the favicon to be served from the same origin as the page it appears next to. An icon parked on a CDN subdomain — cdn.example.com, assets.example.net — is treated as cross-origin and dropped.
The usual culprit is a design system that packages icons into a shared asset bucket. The fix is a proxy or a redirect at your own origin rather than pointing the tag at the bucket.
Three: Googlebot cannot fetch it
A favicon blocked by robots.txt, hidden behind a WAF that challenges non-browser user agents, or returning a 403 to anything without a browser cookie is invisible to search. Test it the way the crawler does:
curl -sI -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
"https://example.com/favicon-96x96.png" | head -n 3
# Expect: HTTP/2 200 and content-type: image/png How to check in one pass
Open the favicon checker on the page URL. It resolves every declared icon, the Web App Manifest and the /favicon.ico fallback, measures each file for real dimensions and format, and reports the ones that fail the 48 × 48 rule or are served over plain HTTP.
curl "https://siteassets.dev/api/v1/favicon/check?url=https://example.com" \
-H "Authorization: Bearer sk_live_REPLACE_ME" A favicon either passes the size rule or it does not exist, as far as search is concerned.
After the fix, remember that search icons are cached independently of the browser. Expect a few days, and re-request indexing of the homepage rather than waiting on a crawl.