{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreieq67hoypcz7sb2bs3sh5iqzknmn2xqnhq4m52hfj54i5mcx23ivu",
"uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3mowblvbdsze2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreiakbzo4ni4a4hkm7eswy4kwjhw3654rnscthwkzn7e6dq7c4yvnme"
},
"mimeType": "image/webp",
"size": 75418
},
"path": "/jamiepark-design/how-browsers-actually-load-favicons-and-why-yours-wont-update-172c",
"publishedAt": "2026-06-23T00:57:15.000Z",
"site": "https://dev.to",
"tags": [
"favicon",
"webdev",
"frontend",
"browser"
],
"textContent": "You changed your favicon three hours ago. Your browser still shows the old one. Here's why.\n\n## The Favicon Cache Is Not Your Regular Cache\n\nBrowsers cache favicons differently from images, CSS, and JavaScript. Chrome stores favicons in a separate database—the Favicon Cache—that survives cache clears, hard reloads, and sometimes browser restarts. Firefox has a `favicons.sqlite`file that ties icons to history entries. Safari stores them in a system-level icon cache.\n\nClearing your browser cache won't touch any of these. That's why you still see the old favicon three hours after deploying the new one.\n\n## The Version-Busting Trick\n\nAdd a query string to your favicon URL:\n\n\n\n <link rel=\"icon\" href=\"/favicon.svg?v=2\">\n\n\nChange the `?v=2` to `?v=3` each time you update the favicon. The browser treats it as a completely new URL—bypassing the dedicated favicon cache entirely. This works because the URL change triggers a fresh fetch, not a cache lookup.\n\n## Mask-Icon Has Its Own Cache\n\nSafari's pinned tab icon (mask-icon) is cached separately from the regular favicon. I once spent an afternoon debugging why Safari tabs still showed a purple icon after a full rebrand to amber. The mask-icon URL hadn't changed. Safari refreshed the standard favicon and completely ignored the pinned tab icon. Add the same version query string to your mask-icon link.",
"title": "How Browsers Actually Load Favicons (And Why Yours Won't Update)"
}