What a favicon test actually looks for
A complete favicon setup is six declarations, not one. Browsers walk the HTML head looking for <link rel="icon"> (the modern desktop tab icon, ideally a 32x32 PNG or SVG), <link rel="shortcut icon"> (legacy fallback, usually /favicon.ico), <link rel="apple-touch-icon"> (180x180 PNG used when iOS users add your site to their home screen), <link rel="mask-icon"> (monochrome SVG for Safari pinned tabs), and <link rel="manifest"> pointing to a manifest.json that lists 192x192 and 512x512 PNG icons for Android home screens.
If any link is missing, the browser falls back to /favicon.ico at the domain root. That fallback often returns a 404 or a default placeholder. This favicon checker fetches the page, parses every declaration, validates each icon URL returns a 200, and shows you which device renders which file.
How to use this favicon checker
- Enter Page URL. Paste the full URL of any page you want to audit. Include the protocol (
https://). The tool fetches the HTML, parses every favicon-family link tag, and probes/favicon.icoat the root as a fallback check. - Hit Check favicons. Within two to three seconds the tool returns every declared icon, its size, format, file weight, and whether the URL resolves. It groups icons by device target so you see what desktop Chrome, iOS Safari, Android Chrome, and Safari pinned tabs each render.
Try this with https://github.com. The tool returns a 32x32 PNG <link rel="icon">, a 180x180 PNG apple-touch-icon, a mask-icon SVG in GitHub's monochrome black, a manifest.json declaring 192x192 and 512x512 icons, and a working /favicon.ico fallback. Five variants, all 200 OK, all sized correctly. If you ran the same check on a site that declares only <link rel="icon" href="/favicon.ico">, the tool would flag four missing variants and show you the placeholder Android renders for the home screen.
Common mistakes
- Declaring only
/favicon.ico. The single ICO file works in desktop tabs but iOS, Android, and Safari pinned tabs render a generic placeholder. You need five declarations, not one. - Wrong apple-touch-icon size. Apple expects 180x180 PNG. Sites that ship 152x152 or 167x167 trigger iOS to upscale the image, producing a blurry home-screen icon.
- Manifest icons not declared in HTML. The
manifest.jsonlists Android icons, but the manifest itself must be linked from HTML with<link rel="manifest" href="/manifest.json">. Skip that line and Android falls back to a screenshot of your page. - Cached old icons. Browsers cache favicons aggressively, sometimes for weeks. After updating, append a query string (
favicon.ico?v=2) or use a hashed filename to force a refresh. - Transparent background on apple-touch-icon. iOS does not honor transparency. Use a solid background color matching your brand, or iOS renders a black square behind transparent pixels.
Advanced tips
- Generate all variants from one 512x512 source PNG using a tool like RealFaviconGenerator, then audit the output before deploying.
- Use SVG for
<link rel="icon">where possible. SVG scales to any DPI without blurring on retina displays and weighs around 1-3 KB instead of 4-8 KB for a 32x32 PNG. - Add a
media="(prefers-color-scheme: dark)"variant for dark mode tabs. Around 60% of users now run their OS in dark mode, and a dark-on-dark favicon disappears in their tab bar. - Set
theme_colorin yourmanifest.jsonto match your brand. Android uses it for the splash screen and status bar when users open your site from the home screen. Pair the audit with the website-metadata-checker to confirm Open Graph and Twitter Card icons match. - Keep the apple-touch-icon under 100 KB. Larger files slow the iOS bookmark save flow and sometimes get silently dropped from the home screen.
Once your favicons are clean, audit the rest of your page-level metadata. Use the website-metadata-checker to verify titles, descriptions, and Open Graph tags, the h1-checker to confirm your H1 is set correctly, and the alt-text-checker to spot missing image alt attributes that hurt accessibility and SEO.