WordPress Favicon Not Updating? Here's the Fix
You 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 cropped- filename to see which cache
View source and find the icon link. Its filename starts with cropped- and carries your upload's name. If it points at the new attachment, the HTML is correct and you're looking at a cached favicon in the browser. If it still names the old attachment, your page cache or CDN is serving stale HTML.
That one check splits the problem cleanly: right filename means clear the browser; wrong filename means clear the page cache.
Clear the right layer
- 1
Purge the page cache and CDN
If the cropped- filename is stale, flush your caching plugin (WP Rocket, W3 Total Cache, LiteSpeed) and any CDN in front, so fresh HTML with the new icon link is served.
- 2
Load the site in a private window
If the filename is already the new one, the browser cached the favicon. A private window or a different profile shows the truth.
- 3
Rule out a theme override
A theme printing its own icon tag can win over core's. Count the rel=icon tags in the source if the wrong icon persists after both caches are clear.
WordPress favicon not updating: FAQ
I changed the Site Icon and the tab shows the old one.
View source and check the cropped- filename in the icon link. If it points at the new attachment, the HTML is fine and it's a cached favicon: clear the browser. If it points at the old one, your page cache or CDN is stale.
Which caches are involved on WordPress?
Up to three: a page-cache plugin, a CDN in front of the site, and the browser's own favicon cache. The cropped- filename in the source tells you whether to clear the server-side caches or the browser.
Do I still need a favicon.ico at the root?
Browsers read the link tags, so no, but some feed readers and crawlers request /favicon.ico by path and never read your HTML, so a file at the domain root is a cheap safety net.