Skip to main content

No favicon.ico Found? What Browsers Do Instead

8 min read

Every browser since the late 1990s knows to try https://yourdomain.com/favicon.ico even when your HTML never mentions it. If that file returns 404, browsers fall back to generic tab icons, pick another declared PNG, or show nothing useful. A missing root favicon.ico is still one of the top reasons sites look unfinished in tabs.

This guide explains automatic favicon.ico requests, what each browser does without it, and how to fix or deliberately replace it with modern PNG tags.

The automatic /favicon.ico request

When a page loads, browsers parse HTML for explicit icon tags. If none exist, or alongside them, most engines still fire:

GET /favicon.ico HTTP/1.1
Host: yourdomain.com

This behavior predates <link rel="icon">. It is hard-coded convention, not a spec requirement, but universal in practice.

Your server logs may show thousands of /favicon.ico 404s. That noise is normal on sites that only ship PNG favicons in HTML without a root ICO file.

Scan any URL with Favicon Check. The tool reports whether /favicon.ico exists and whether HTML declares alternatives.

What browsers do when favicon.ico is missing

BrowserWithout favicon.icoWith PNG link tags only
ChromeGeneric icon if no tags eitherUses PNG from rel="icon"
FirefoxGeneric icon if no tagsUses PNG from rel="icon"
SafariGeneric icon if no tagsUses PNG from rel="icon"
EdgeSame as ChromeUses PNG from rel="icon"
curl/wget bots404 loggedN/A
Old bookmark importersMay fail silentlyMay use declared PNG

Modern browsers do not require favicon.ico if valid rel="icon" tags point at reachable PNG or SVG files. The root ICO is a fallback and a compatibility habit, not a strict requirement.

Problems arise when:

  • HTML also missing or broken
  • Only favicon.ico expected by a CMS or host default
  • Tools and audits flag 404 on /favicon.ico as an error
  • Legacy integrations hardcode /favicon.ico path

When missing favicon.ico actually breaks your icon

No HTML tags and no ICO file

Worst case. Browser has nothing. Users see a generic document or globe icon.

Fix: add at least one of:

<link rel="icon" href="/favicon.ico" sizes="any">

or PNG tags plus an actual file at that path.

HTML points at favicon.ico but file missing

<link rel="icon" href="/favicon.ico">

Server returns 404. Browser shows generic icon even if PNG files exist elsewhere on disk unused.

Fix: upload favicon.ico or change href to a PNG that exists.

CMS expects ICO at root

WordPress Site Icon, Shopify, and some static hosts upload to paths that assume /favicon.ico or redirect to it. Missing root file breaks their admin preview.

Subpath deployments

Site lives at example.com/app/. Browser still requests example.com/favicon.ico, not example.com/app/favicon.ico. Root ICO must sit at domain root or tags must use correct absolute paths.

See Favicon Not Showing in Browser? for path debugging.

Do you still need favicon.ico in 2026?

Short answer: recommended, not mandatory, if you have complete PNG/SVG tags.

Reasons to keep favicon.ico:

  • Covers undeclared pages and legacy crawlers
  • Stops 404 noise in logs
  • Satisfies tools that probe root ICO first
  • Multi-size ICO embeds 16×16 and 32×32 in one file
  • Some email clients and RSS readers assume /favicon.ico

Reasons to skip ICO:

  • You ship PNG and SVG with explicit tags everywhere
  • You use a static host that prefers PNG only
  • ICO generation adds pipeline complexity you do not need

If you skip ICO, ensure HTML tags are complete and test with Favicon Check. The scanner flags missing root ICO so you can decide consciously.

How to add favicon.ico properly

Option 1: Single ICO at web root

Upload favicon.ico to the directory that serves https://yourdomain.com/.

Declare it:

<link rel="icon" href="/favicon.ico" sizes="any">

Generate ICO from PNG using ImageMagick, realfavicongenerator.net, or your design export tool. Include 16×16 and 32×32 layers inside the ICO.

Option 2: PNG-only with no ICO

Valid modern setup:

<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">

Accept that /favicon.ico requests still 404 unless you redirect or add a stub file.

Option 3: Redirect ICO to PNG

nginx example:

location = /favicon.ico {
rewrite ^ /favicon-32x32.png permanent;
}

Browsers get an image. Purists prefer a real ICO file instead of redirect for oldest clients.

Full HTML setup: How to Add a Favicon to Your Website.

Size reference: Favicon Sizes Guide.

favicon.ico vs PNG vs SVG

FormatRoot /favicon.icorel="icon" PNGrel="icon" SVG
Legacy fallbackBestGood with tagsNeeds fallback
Multi-size one fileICO supportsSeparate filesN/A
Sharp on retinaOK at 32×32GoodExcellent
Safari iOS tabUses PNG/ICOPreferredWith fallback

A missing ICO matters less when PNG tags are correct. A missing PNG when ICO exists usually still works in desktop tabs.

Debugging missing favicon.ico

  1. Open https://yourdomain.com/favicon.ico in browser. 404 confirms missing.
  2. View-source. Search rel="icon". Note href targets.
  3. Open each href. Confirm 200 responses.
  4. Scan page URL with Favicon Check.
  5. Check server root vs deploy artifact. File may exist locally but not in CI output.
  6. Verify CDN is not blocking .ico extension.
  7. Confirm case sensitivity: Favicon.ico vs favicon.ico on Linux servers.

Framework notes

Next.js: place favicon.ico in app/ or public/.

Vite: put in public/favicon.ico.

WordPress: set Site Icon in Customizer. WordPress generates sizes but root behavior depends on theme.

What crawlers and tools expect

Google Search may fetch favicons for SERP display. It uses declared icons and may probe /favicon.ico. Missing files do not directly hurt rankings but reduce branded SERP slots.

Slack and Discord unfurl previews use Open Graph, not favicon.ico. For social previews, use the Open Graph scanner separately.

Security scanners and uptime monitors often HEAD /favicon.ico as a health check. 404 alerts do not mean users see broken tabs if HTML tags work.

Common mistakes

Assuming no ICO is fine without checking HTML

Both missing. Generic icons everywhere.

404 only on www subdomain

www.example.com/favicon.ico exists. example.com/favicon.ico 404. Pick one canonical host.

ICO file corrupt or zero bytes

Returns 200 but invalid image. Browser shows generic icon. Re-export ICO.

Replacing ICO but CDN serves old 404

Cache issue, not missing file. See Favicon Not Updating After Change?.

Blurry ICO from upscaled logo

File exists but looks bad. Fix source art: Favicon Looks Blurry?.

Hosting platform defaults

Some platforms ship a default favicon.ico you never uploaded. Removing your custom icon may revert to the host default, which looks like "wrong favicon" rather than missing.

GitHub Pages: No default ICO. You must add one or use HTML tags in your template.

Netlify / Vercel: Default placeholder until you deploy public/favicon.ico.

Shared hosting (cPanel): May include a generic globe ICO until overwritten via File Manager at public_html/favicon.ico.

Check your host docs. The Favicon Check shows what the live domain actually serves, not what your repo contains locally.

Step-by-step decision workflow

  1. Scan URL with Favicon Check.
  2. If tab icon broken: fix HTML tags first regardless of ICO.
  3. If /favicon.ico 404 and logs matter: add root ICO or redirect.
  4. If tags point at ICO 404: upload file or update href to PNG.
  5. Redeploy. Re-scan. Test incognito in Chrome and Safari.
  6. Optional: full metadata pass with Open Graph scanner.

FAQ

Is favicon.ico required?

Not strictly, if valid rel="icon" tags point at reachable PNG or SVG files. Root ICO is still recommended for fallback and compatibility.

Why do browsers request favicon.ico automatically?

Historical convention from early browsers. The request persists even when HTML declares other formats.

My site works without favicon.ico. Should I add one?

Yes, if you want to stop 404 log noise and support tools that probe root ICO. Low effort, broad compatibility.

HTML has PNG tags but audit says favicon.ico missing

Audits often check root ICO independently. Add ICO or configure audit to accept PNG-only setup.

404 on favicon.ico but icon shows in tab?

PNG link tags are working. ICO 404 is harmless for tab display. Add ICO if you want clean logs.

Where does favicon.ico go on my server?

Web root: same folder as index.html or site entry point at domain root, not necessarily project repo root on subpath hosts.

Can I use PNG renamed to favicon.ico?

No. Browsers expect ICO container format at that path unless Content-Type is image/png and bytes are valid PNG. Use proper ICO or redirect.

How do I verify quickly?

Favicon Check on your URL shows ICO probe result and all declared icons with previews.

Bottom line

Missing favicon.ico triggers automatic 404 requests but modern browsers fall back to rel="icon" PNG or SVG when declared correctly. Add a root ICO for compatibility and quiet logs, or ship complete PNG tags and accept the fallback 404. Scan with Favicon Check to see exactly what exists and what each browser can use.