How to Add a Favicon in WordPress Without a Plugin
WordPress calls it a "site icon" — here's how to set one properly, with or without the block editor.
· 4 min read
Quick answer: WordPress has built-in favicon support called the "Site Icon," available since WordPress 4.3 with no plugin required — set it under Appearance > Customize > Site Identity on classic themes, or through the site icon option in Appearance > Editor on block themes.
WordPress doesn't use the word "favicon" anywhere in its own interface. It calls the setting a Site Icon, and that naming has been consistent since it was added in WordPress 4.3 back in 2015. If you've been searching your dashboard for "favicon" and coming up empty, that's why.
The good news is that once you know what it's called, setting it up takes about a minute and doesn't require installing anything.
Where to find it
The location depends on what kind of theme you're running.
Classic themes (most themes without full site editing support): go to Appearance > Customize > Site Identity. You'll find a "Site Icon" upload field alongside the site title and tagline settings, with a live preview panel on the right showing roughly how it'll look.
Block themes (full site editing / FSE themes): go to Appearance > Editor, then open the site settings — the exact path varies a bit by theme and WordPress version, but you're looking for a "Site Icon" or global styles panel rather than the older Customizer, since FSE themes route identity settings through the site editor instead.
Either way, you're setting the same underlying value. It's stored once per site and used everywhere WordPress needs an icon, regardless of which screen you used to set it.
What size to upload
WordPress recommends a square image at least 512×512 pixels. You upload one image, and WordPress handles resizing it down for every place it's actually needed — browser tabs, various touch icon sizes, and the icon used for notifications in the WordPress mobile app. You don't manually export a 16×16 and a 32×32 and an apple-touch-icon separately; WordPress generates its own derived sizes from your one source file.
That said, WordPress's automatic resizing is functional, not artful. It's a straightforward downscale, not the kind of size-aware re-export you'd get from purpose-built software. If your source icon has fine detail that needs to survive being read at 16 pixels, it's worth running it through the favicon generator first to see how it holds up at the smallest sizes before uploading it — see our favicon size guide for why the smallest sizes are usually the ones that get ruined first.
The upload flow and its crop tool
When you upload an image for the Site Icon, WordPress opens a built-in cropping tool and forces a square crop before it'll let you save. If your source image isn't already square, pay attention to what the crop keeps versus cuts — WordPress centers the crop by default, which can clip the edges of a wide logo. It's much safer to prepare a properly square image beforehand than to rely on the crop tool to guess what matters in your artwork.
Site Icon vs. site "logo" — these are not the same setting
This is the single most common point of confusion. Most themes also expose a separate Custom Logo setting, used for the logo that appears in your header or navigation bar. That's a different image, stored separately, and serving a completely different purpose. Setting your logo does nothing for your browser tab icon, and setting your Site Icon does nothing to your header. If your favicon still shows the default WordPress "W" after you've uploaded a logo, that's almost always why — you've set the logo, not the icon.
Why the change might not show immediately
After saving a new Site Icon, don't be surprised if your browser tab still shows the old one. Favicons are cached unusually aggressively by browsers, often surviving a normal refresh. Try a private/incognito window or a different browser to check whether the new icon actually went live before assuming WordPress didn't save it. If it's genuinely not updating anywhere, our guide on stale favicon caching covers how to force a refresh, and a favicon checker will show you exactly what's being served right now regardless of what your own browser has cached.
When a plugin is still worth it
For the overwhelming majority of WordPress sites, the built-in Site Icon setting is genuinely enough — it covers browser tabs and the basic touch icon case without any extra code. A plugin starts to earn its place in a couple of specific situations:
- Multisite networks, where you want different icons per subsite rather than one icon inherited network-wide.
- Fine-grained manifest control, if you're building a proper installable PWA and need specific icon
purposevalues (like maskable icons) or multiple declared sizes beyond what WordPress's single upload gives you.
If neither applies to you, skip the plugin. Adding one for something the core already does is extra surface area for updates and conflicts, for no real benefit. For anything still not displaying correctly after you've confirmed the Site Icon is set and cache isn't the cause, common favicon-not-showing causes covers the rest of the usual suspects.
✦ Try the Generator
Drop in artwork, type a word, or pick an emoji. Watch it land in a real browser tab, then export every size a modern site needs.
Open Generator