Favicon Tools检测创建
格式
参考

favicon 格式对比:ICO、PNG 与 SVG

· 6 min read

三种格式,三种职责。用 .ico 应对 /favicon.ico 路径和老旧客户端,用 PNG 覆盖现代浏览器和所有应用图标尺寸,用 SVG 提供清晰、随主题切换的标签页图标。

每种格式担负不同职责

并不存在一种“最好”的 favicon 格式。每种格式都覆盖了其他格式做不到的场景。只选一种并到处硬套,正是标签页变空白、主屏幕显示灰色方块的原因。

.ico 格式是一个容器,能把多个尺寸装进一个文件。这一点很重要,因为浏览器和爬虫默认仍会请求 /favicon.ico,而老旧客户端只认 .ico。真正的 .ico 不是把扩展名改成 .ico 的 PNG。重命名文件只改了名字,没改字节,大多数客户端都会拒绝它。

PNG 是主力。每个现代浏览器都能读取它,每个应用图标和 manifest 位置(16、32、180、192、512)用的都是 PNG。SVG 是后起之秀:一个矢量文件,在任何尺寸下都保持清晰,还能用文件内部的 media query 在深色模式下切换颜色。

ICO、PNG 与 SVG 对比

格式最适合注意事项
.ico/favicon.ico 路径,以及只读取 .ico 的老旧浏览器或爬虫必须是真正的多尺寸容器(16 + 32 + 48),不能是重命名的 PNG。不要用它做应用图标。
PNG现代浏览器标签页,以及所有应用图标和 manifest 尺寸(16、32、180、192、512)是位图,所以每个尺寸都是单独的文件。你仍然需要所有尺寸,单个 PNG 覆盖不了全部。
SVG一个可缩放到任意尺寸、能在深色模式下切换颜色的清晰标签页图标在 /favicon.ico 上无效,iOS 或 Android 主屏幕也不使用。保持简单,特效在不同浏览器中的渲染可能不一致。

它们在 head 中如何协同

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

能读取 SVG 的浏览器使用 favicon.svg。其余情况回退到 PNG 和 .ico。apple-touch-icon 保持为 PNG,因为 iOS 在这里会忽略 SVG。

常见问题

我能直接把 PNG 重命名为 favicon.ico 吗?

不能。.ico 是它自己的容器格式,不是换了扩展名的 PNG。有些浏览器能容忍标注错误的文件,但很多浏览器不行,爬虫更严格。请生成一个真正的多尺寸 .ico。

已经有 PNG 和 SVG,还需要 favicon.ico 吗?

需要,保留一个。浏览器、订阅源阅读器和搜索爬虫在完全没有标签的情况下仍会请求 /favicon.ico。当你的 link 标签被漏掉时,该路径上的文件就是安全网。

SVG favicon 比 PNG 更好吗?

对标签页图标而言可以更好,因为一个文件在每种尺寸下都保持清晰,还能适配深色模式。它无法替代主屏幕用的 PNG 应用图标,所以两者都要用。

512x512 的 manifest 图标该用哪种格式?

PNG。manifest 的 icons 数组期望 192 和 512 的位图 PNG,其中包括一个 maskable。SVG 不是 Android 用于已安装应用图标的格式。

Generate your icon set

Keep reading