Favicon Troubleshooting Guides

A systematic way to fix missing, stale, blurry, or rejected favicons.

Use this favicon guide cluster in production order

Fix the earliest failing layer instead of changing every icon file. Begin with discovery in the rendered HTML, resolve each URL, inspect the public response and decoded image, validate the manifest, and only then investigate browser, service-worker, CDN, home-screen, or search-engine caches.

The symptom identifies the likely layer. A failure on nested routes suggests relative paths; a 200 response containing HTML suggests a rewrite; a correct fresh profile with a stale existing profile suggests client cache; and a working browser tab with a missing search favicon requires a separate Google eligibility check.

01

Prove the public bytes

Record status, final URL, Content-Type, format, dimensions, and ICO frames. A filename and a successful HTML response are not proof of a valid image.

02

Separate surfaces

Browser tabs, bookmarks, Apple shortcuts, installed PWAs, and search results select and cache different assets. Test the surface that is actually failing.

03

Change one layer at a time

Correct the first failed check, deploy it, and retest before clearing caches or rotating filenames. This keeps the diagnosis reproducible.

Favicon Troubleshooting Guides questions

Use these answers to choose the correct guide or tool before changing production files.

What should I check before clearing a favicon cache?+

Verify the rendered link tags and request the final public image URL. Confirm the current bytes, format, dimensions, and cache headers first.

Why does /favicon.ico return HTML with status 200?+

A catch-all application route or rewrite is probably serving the page shell. Exempt the static asset or add an explicit root-file route.

Can a checker force Google to refresh a favicon?+

No. It can prove technical eligibility and public access, but Google controls recrawling, selection, and display timing.