Bottom-line: I fixed a stale launch icon in under an hour by rebuilding the full set in the favicon generator, shipping versioned URLs with v2 query, purging edge cache, clearing service worker cache, then retesting in private windows across desktop and mobile.

I hit this exact failure during a brand refresh for a docs site. The new mark looked perfect in source, the 512 master was sharp, the manifest listed 192 plus 512, yet desktop tabs kept showing the old blue square days after deploy. I cleared normal cache once, reloaded twice, and still saw the stale icon on two machines while mobile showed the new one.

Why browsers cling to old icons

Browsers treat favicons as long lived brand assets, not as normal images. The icon is fetched once, stored in a separate favicon store, copied to disk cache, pinned to tab history, and sometimes remembered by root path memory even after the HTML changes.

  • Separate favicon store I verified by clearing page cache with no icon change until favicon data was cleared.
  • Root path memory I verified by removing the root ICO and seeing old requests persist in network logs.
  • Tab process reuse I verified by opening a new private window where the new icon loaded while the old tab stayed stale.

Disk cache versus memory versus favicon store

I tested cache disabled dev tools reloads where images refreshed yet the icon lagged, which points to the dedicated favicon store. For launch day, plan for the strongest clear, not the weakest reload.

How v2 versioning that works beats cache

Query versioning works because v2 creates a new URL identity for caches that key by full URL string. I tested v1 to v2 bumps across Chrome 120 plus Edge 120 plus Firefox 121 plus Safari 17 and the new mark arrived on next load after the head links were updated.

Version pattern I ship on every deploy

I keep one pattern for all icon references to avoid partial updates. Every icon link gets the same token in the same deploy. I tested mixed versions where the tab updated but the install stayed old, which is why uniform tokens matter.

  • Use short numeric tokens like v2 or v3 that are easy to grep across templates.
  • Bump on every visual change, even for hue tweaks that look minor in source.
  • Update all templates at once including header partials plus legacy themes.
Cause fix matrix for stale favicon deploys I verified
Cause observedFix shippedVerify method
Old icon after deploy with correct server filesUniform v2 across all head linksPrivate window load with cache disabled
Tab updates but mobile install stays oldVersion manifest 192 plus 512 plus reinstallFresh Add to Home Screen test
One browser updates while another lagsPer browser hard refresh plus new profileClean profile plus private window compare
Edge serves old bytes after origin fixCDN purge for ico plus PNG pathsEdge plus private window retest
Offline page shows old iconWorker cache clear plus unregisterDev tools storage clear plus reload
Blurry 16 after cache fix512 master rebuild with bold shapes100 percent zoom on light plus dark

Hard refresh per browser that clears tab icons

Hard refresh differs by browser and operating system, and the strongest option is always empty cache plus hard reload followed by a private window check.

Desktop hard refresh moves

  1. Chrome plus Edge on Windows: control plus F5, then dev tools, then long press reload plus Empty Cache and Hard Reload, then private window retest.
  2. Firefox on Windows plus Mac: control plus shift plus R or command plus shift plus R, then clear site data for the origin, then new private window.
  3. Safari on Mac: option plus command plus E to empty caches, then command plus R, then new private window plus fresh tab.

Mobile retest moves

  • iOS Safari: new private tab, hard close Safari from app switcher, reopen versioned URL, then remove plus re add home screen icon.
  • Android Chrome: new incognito tab, clear site storage for the origin, remove plus reinstall home screen shortcut to pull new 192 plus 512.

CDN plus service worker purge for edge stale icons

When origin files are correct yet the world still sees old bytes, the edge or the worker is serving history. A CDN purge for icon paths clears edge copies in seconds, while a worker storage clear clears offline copies that survive origin updates.

  • Purge exact paths first for ICO plus PNG plus webmanifest to avoid waiting for TTL expiry.
  • Clear worker cache next in dev tools Application plus Storage plus Clear site data.
  • Unregister old workers that precache icons, then reload to install the new worker.

How long caches last across tabs and search

Desktop favicon memory can persist for the life of a tab process, disk copies can persist for days to weeks, and mobile install copies persist until reinstall.

Next steps to L1 plus meta-tags guide for full launch

Once tabs shine, close the loop with the parent system. Rebuild the full matrix from a 512 master in the favicon generator with multi size ICO, 180 apple touch, 192 plus 512 manifest, and SVG with fallback, then validate titles plus descriptions plus cards in the SERP preview meta analyzer.

Verdict from my testing: Uniform v2 versioning, CDN purge for icon paths, worker clear plus unregister, per browser hard refresh, private window proof, and mobile reinstall proof.