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 observed | Fix shipped | Verify method |
|---|---|---|
| Old icon after deploy with correct server files | Uniform v2 across all head links | Private window load with cache disabled |
| Tab updates but mobile install stays old | Version manifest 192 plus 512 plus reinstall | Fresh Add to Home Screen test |
| One browser updates while another lags | Per browser hard refresh plus new profile | Clean profile plus private window compare |
| Edge serves old bytes after origin fix | CDN purge for ico plus PNG paths | Edge plus private window retest |
| Offline page shows old icon | Worker cache clear plus unregister | Dev tools storage clear plus reload |
| Blurry 16 after cache fix | 512 master rebuild with bold shapes | 100 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
- 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.
- 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.
- 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.