How Google decides which favicon to display
In 2026, Google fetches a single image when it crawls your homepage and uses that one image for every search result on your domain. There is no per-page favicon override and no manual override in Search Console. The fetch follows three rules:
- Google looks at the
<link rel="icon">(orshortcut icon) tag on the homepage HTML. - If no tag is present, it falls back to
/favicon.icoat the domain root. - The image must be square, a multiple of 48×48, and reachable with a 200 status. SVG is accepted but rasterized to 48×48 internally.
Anything that breaks one of those three rules ends up as the gray globe. Here is the diagnostic order — top of the list catches the most cases.
Step 1 — Confirm the favicon URL is reachable
This catches roughly half of all cases. Open an incognito window and paste your favicon URL directly into the address bar — for example https://yoursite.com/favicon.ico or whatever href you set in your link tag.
You should see the icon. If you see a 404 page, a redirect chain, or a Cloudflare access challenge, Googlebot saw exactly the same thing.
Common breakages
- Build pipeline strips the file. Static-site generators (Astro, Vite, Next.js) only ship files in
/public. If your favicon is in/src/assets, it never makes it to the deployed site. - Hash-busted filename. Bundlers rename
favicon.pngtofavicon.7af3c.png. Your link tag still points to the old name and 404s. - CDN auth. Cloudflare Access, Vercel Password Protection, or a staging bot block returns 403 to Googlebot's user agent.
Fix: serve the favicon from a stable, public URL. The cleanest option is the domain root — /favicon.ico and /favicon.svg. Then test the URL with Google's Rich Results Test; if it can't render the page, neither can the favicon crawler.
Step 2 — Check the size and aspect ratio
Google's stated requirement is "a multiple of 48 pixels square." A 16×16 ICO from 2010 will not qualify in 2026. Open the source file in any image viewer and verify the dimensions.
| Source size | Behavior in 2026 |
|---|---|
| 16×16 only | Rejected — gray globe |
| 32×32 only | Rejected on most queries |
| 48×48 | Accepted (minimum) |
| 96×96 / 192×192 / 512×512 | Accepted, downscaled |
| SVG (clean at 48×48) | Accepted, rasterized |
| Non-square (e.g. 60×40) | Rejected |
A surprising number of sites still ship only the legacy 16×16 ICO. If yours does, regenerate the full set in one click — the free TinyTools Favicon Generator outputs 48, 96, 192, and 512 plus a manifest.json from text, emoji, or any image.
Step 3 — Inspect the link tag itself
View the page source (not DevTools — actual HTML, since Googlebot reads HTML before executing JS) and find every rel="icon" line. Then ask:
- Is there exactly one canonical
rel="icon"? Multiple conflicting tags confuse Google. - Is the
hrefabsolute or root-relative? Relative paths like./img/favicon.pngcan break on URLs with trailing-slash differences. - Are there
typeandsizesattributes? Google does not strictly require them but they help disambiguate.
The recommended 2026 minimum:
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon-96.png" type="image/png" sizes="96x96">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
If you also want the legacy /favicon.ico at root, keep it — but make sure all three URLs resolve.
Step 4 — Make sure the homepage is indexable
Google only fetches the favicon during crawls of the homepage. If the homepage is set to noindex, blocked in robots.txt, or returns a non-200 status, the favicon never gets evaluated.
Quick check: open Search Console, run "URL Inspection" on your homepage, and confirm "Indexing allowed? Yes." Then run the meta tag generator on the page to spot stray noindex directives that templates sometimes leave behind.
Step 5 — Wait the right amount of time
Google does not refresh favicons in real time. After fixing the underlying issue, expect 3 to 14 days before the new icon appears in results. To shorten that window:
- Submit the homepage URL via Search Console > URL Inspection > "Request Indexing."
- Make sure the homepage's
Last-Modifiedheader has actually changed. - Avoid changing the favicon filename more than once a quarter — too many flips and Google starts caching aggressively.
If 14 days have passed and you still see the gray globe, the underlying issue is not actually fixed. Restart from Step 1.
Step 6 — Rule out content sniffing
Googlebot reads the response's Content-Type header. If your CDN serves favicon.svg with Content-Type: text/html (because of a misconfigured rewrite rule), the file is rejected as malformed.
Test it from the command line:
curl -I https://yoursite.com/favicon.svg
You should see Content-Type: image/svg+xml. For PNG: image/png. For ICO: image/x-icon or image/vnd.microsoft.icon. If the headers are wrong, fix the MIME type at the server or CDN level.
Step 7 — Stop the JavaScript injection trap
Single-page apps sometimes inject the <link rel="icon"> tag at runtime via React Helmet, Vue Meta, or similar libraries. Googlebot does render JS, but the favicon crawler runs against the initial HTML response, not the post-render DOM.
If your view-source: shows no favicon link tag — only DevTools shows it — Google does not see one. Move the tag into the static index.html shell, not the runtime template.
Skip the manual export pipeline
Generate a 48/96/192/512 PNG set, an SVG, an apple-touch-icon, and a manifest.json from text, emoji, or any image — bundled in one ZIP, free, no signup.
Try the Favicon Generator free →Bonus: how to verify the fix worked
Two cheap checks before the 14-day wait:
- Google's favicon URL. In a private window, open
https://www.google.com/s2/favicons?domain=yoursite.com&sz=64. If Google has a current favicon for you, this returns it. If you see the globe here, Google has not picked up the new file yet. - Search the brand. Search for your exact brand name. Brand searches usually pin the homepage in position 1, so the favicon next to it is your live icon. If the SERP favicon and the
s2/faviconsfavicon differ, you are inside the cache-update window.
Once both match the new file, you are done. If after 14 days they still don't match, your favicon URL is almost certainly returning 404 or 403 to Googlebot — go back to Step 1.
Where to get a clean source file
You don't need Photoshop or an external service. The TinyTools Favicon Generator renders the full set in your browser from text, an emoji, or an upload — including 48×48, 96×96, 192×192, 512×512 PNGs, the SVG, the apple-touch-icon, and a ready-to-ship manifest.json. While you're auditing the homepage, the SEO Meta Generator will catch missing canonical and OG tags, and the OG Image Generator handles the social-card half of the same SEO checklist.
Hosting note: a stable host with proper MIME-type defaults makes most of these issues go away on their own. Reliable budget options include Namecheap shared hosting for static sites and Vercel for SPA front-ends — both serve image/svg+xml correctly out of the box. (Disclosure: links may be affiliate.)
The 30-second version
- The favicon URL must return 200 with the right MIME type.
- The image must be square and at least 48×48.
- The
<link rel="icon">tag must be in the static homepage HTML. - The homepage must be indexable.
- Wait 3 to 14 days after fixing.
If those five are all true, your favicon will appear. If you want to skip straight to a clean source set, generate one in 30 seconds with the free TinyTools Favicon Generator.