Fix a favicon that won't show or update
The symptom is the same everywhere; the cause depends on your stack. A missing icon is a wrong file, path, or build config. A stale one is a cache. Pick your framework for the fix written to its own rules, or run the checker to see exactly what your site serves.
Next.js
In the App Router, Next.js builds the icon links from files in the app directory. Miss the filename and it emits nothing. In the Pages Router there is no convention at all. Work out which one you're hitting and the fix is obvious.
Read the fixThe file changed and the tab didn't. On Next.js that's one of three caches: the browser's favicon store, a stale .next build, or a CDN serving the old bytes. Rule them out in that order.
Read the fixReact
React renders into a DOM node and never touches the head, so the favicon lives in a static HTML file. A blank tab means that file's link tag is wrong, or the icon was imported from src and no longer sits at a fixed path.
Read the fixYou swapped the file and the tab kept the old icon. In a React app that's the browser caching the favicon, or the build output and CDN still serving the previous copy from public/.
Read the fixVite
Vite copies public/ to the output root and rewrites index.html at build time. A favicon that works in dev and 404s in production nearly always has the public/ segment in its path, or was imported from src and hashed.
Read the fixVue
A Vue single-file component cannot render a link tag into the head, so the favicon is declared in index.html: at the project root under Vite, inside public/ under Vue CLI. A blank tab means that file's tag is wrong.
Read the fixAngular
Angular copies static files only if the build configuration tells it to. An icon that isn't matched by the assets entry in angular.json never reaches dist. The build succeeds and the file isn't there.
Read the fixAstro
Astro copies public/ to the output untouched but never injects icon tags for you. A blank tab means the link isn't in the layout your pages use, or a page rendered its own html element and skipped the layout.
Read the fixWordPress
WordPress does not serve a favicon from a file you drop in the theme. It prints the icon tags from one Site Icon setting, and a blank tab almost always means that setting was never applied, or a theme is fighting it.
Read the fixYou set a new Site Icon and the old one won't budge. On WordPress that's almost always a caching layer (a page-cache plugin or CDN serving stale HTML) with the browser's own favicon cache as a second suspect.
Read the fixShopify
On Shopify the favicon is a theme setting, not a file on a server. The theme renders one icon link from an image you pick in the editor, so a blank tab means it's unset, you edited the wrong theme, or the format was rejected.
Read the fixYou picked a new favicon and the live store still shows the old one. On Shopify that's nearly always a draft theme that was never published, or the image CDN and browser caching the previous icon.
Read the fix