You shipped a new favicon, cleared cache in Safari on your Mac, and the new icon finally shows up in the tab. Then you open the same site on your iPhone — and the old gray placeholder is still there. To fix it, you have to clear favicon cache on Safari iPhone and Mac independently, because the two devices store their own icon databases and never sync them through iCloud.

Why Safari caches favicons differently on iPhone and Mac

Safari stores favicon data in two layers: a transient browser cache and a persistent WebpageIcons database that powers tabs, bookmarks, and the home screen Add to Home Screen flow. On macOS, this database lives at ~/Library/Safari/WebpageIcons.db. On iOS, it sits inside Safari's app sandbox where you cannot browse it directly.

The two caches never talk to each other. Updating your favicon on your Mac does nothing for your iPhone — and vice versa. That's why the same site can show two different icons at the same time across your devices.

Prerequisites

How to clear favicon cache on Mac

Step 1: Verify your new favicon is actually live

Open Safari, load your site, and view source (Cmd + Option + U). Confirm the <link rel='icon'> tag points to the new file. If your old file path is still hardcoded, no cache clearing will help — see our HTML favicon guide for the correct tags.

Step 2: Empty Safari's temporary cache

Go to Safari → Settings → Advanced and enable Show Develop menu in menu bar. Then click Develop → Empty Caches. This wipes the transient cache Safari uses for tab rendering, but it does not touch the WebpageIcons database.

Step 3: Wipe the WebpageIcons database directly

Quit Safari completely (Cmd + Q). Open Terminal and run:

rm -f ~/Library/Safari/WebpageIcons.db
rm -f ~/Library/Safari/WebpageIcons.db-shm
rm -f ~/Library/Safari/WebpageIcons.db-wal

These files store every favicon Safari has shown across all tabs and bookmarks. Deleting them forces Safari to rebuild the icon database from scratch on next launch.

Step 4: Restart Safari and reload

Reopen Safari and load your site. The new favicon should appear in the tab and bookmark bar within seconds. If it doesn't, your HTML is still pointing to the old file path.

How to clear favicon cache on iPhone

The iOS process is different. You cannot access Safari's file system directly, so the approach relies on forcing Safari to refresh by clearing site data from Settings.

Step 1: Clear Safari's website data

Open the Settings app, scroll to Safari, and tap Advanced → Website Data. Tap Remove All Website Data. This wipes cookies, cache, and Safari's touch icon store for every site.

Heads up: this signs you out of every website you're logged into. Use a private browsing session if you only want to test favicon changes without losing sessions.

Step 2: Force-quit Safari

Swipe up from the bottom (or double-click the home button on older iPhones) to open the app switcher. Swipe Safari up to force-quit it, then reopen it and load your site.

Step 3: Bypass the cache with a hard reload

Tap and hold the refresh button in Safari's address bar, then tap Request Desktop Site. Toggle it on, then off. This forces a fresh fetch including the favicon file. Alternatively, append a query string to break the cache:

https://yoursite.com/?v=2

Step 4: Refresh the Home Screen icon cache

If you added your site to the iPhone home screen, that icon comes from the apple-touch-icon file — not the standard favicon. To refresh it, delete the home screen shortcut, then re-add it. Safari will re-read the <link rel='apple-touch-icon'> tag from your HTML and download a fresh copy.

Common pitfalls

Prevent future favicon cache issues

Once your new icon shows correctly on both devices, prevent this from happening again by using content-hashed filenames:

&lt;link rel='icon' href='/favicon.a1b2c3d4.svg' type='image/svg+xml'&gt;

Every deploy gets a unique URL, so browsers can never serve a stale cached copy. For deeper coverage of cache-busting patterns, see our favicon cache busting guide.

For a complete reference on the rel='icon' attribute and the MIME types browsers accept, check the WHATWG HTML Living Standard.