squirrelscan
GitHub

No favicon found: the link rel icon tags squirrel looks for

A page with no icon link at all, or only one format. squirrel reads the rel and the file extension on every link.

What a favicon is

A favicon is the small icon a browser shows in the tab, the bookmark list and the history. Google also shows one beside the result in search, and a site with none gets a generic globe there.

Several formats exist for different places. A .ico file is the legacy fallback that every browser understands. An SVG scales to any size and can carry a dark-mode variant. An Apple touch icon, at 180 by 180 pixels, is what iOS uses when someone adds the site to their home screen. One file is enough to work; three cover every surface properly.

What squirrel checks

The rule runs on every crawled page over its <link> elements. It emits one or two checks:

  • favicon: warns with the message No favicon found and the value Add <link rel='icon'> for brand recognition when nothing matched. It passes with Favicon found: <format> and a value suggesting more formats when exactly one distinct format was found, and with Multiple favicon formats found and one item per format when there were several.
  • apple-touch-icon: emitted only when at least one favicon was found and none of them was an Apple touch icon, at info status with the message No Apple touch icon found and the value Add for iOS home screen bookmarks.

A link counts when its rel is icon, shortcut icon, apple-touch-icon or apple-touch-icon-precomposed, or contains icon anywhere, and it has an href. The format recorded is apple-touch-icon when the rel says so, otherwise svg, ico or png when the href ends with that exact lowercase suffix, and icon otherwise. The test is on the end of the whole href, so /favicon.svg?v=2 and /favicon.SVG are both recorded as icon. Formats are deduplicated, so ten PNG sizes count as one.

The rule does not fetch the file, so a <link rel="icon"> pointing at a URL that returns 404 still passes. A page with no parsed document emits nothing at all.

How to fix it

<link rel="icon" href="/favicon.ico" sizes="32x32" />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />

Those three cover legacy browsers, modern browsers and iOS. Google’s guidance for the icon in search results is a square file, at least 8 by 8 pixels and a multiple of 48 where possible.

The common false positive is a site relying on the implicit /favicon.ico path with no link element. Browsers do request that path automatically, so the icon works, but this rule reads markup and reports it as missing. Adding the link is the fix and is worth doing anyway, because Google’s documentation asks for one.

Rule IDcore/favicon
CategoryCore SEO
ScopePer-page
Severitywarning
Weight3/10

Enable / disable

Disable this rule

[rules]
disable = ["core/favicon"]

Disable all Core SEO rules

[rules]
disable = ["core/*"]

Enable only this rule

[rules]
enable = ["core/favicon"]

enable replaces the default ["*"], so this is the only rule selected. Leave disable out: a rule that matches any disable pattern is skipped even when enable names it. Only an enabled setting under a rule’s own [rule_options] table overrides both lists.

Core SEO findings ship in every audit next to the performance, security and agent experience rules. See Fix SEO issues with AI for how an agent works through a report.

References

Check your site

Run squirrel audit https://example.com and open the Core SEO section of the report. Each page reports the icon formats it declared. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.

Type to search…

↑↓ navigate↵ openesc close