Favicon 生成器|一键生成多尺寸 ICO 与 PNG

上传图片并裁剪为正方形,即可生成内含多个尺寸(16、32、48px 等)的 favicon.ico 与全套 PNG。支持 Lanczos 高品质缩小算法,并自动生成可直接粘贴的 HTML 代码。全程在浏览器内处理,图片不会上传至服务器。

Favicon 的指定方法(分模式)

Favicon 的写法取决于「打算支持到什么程度」。以下按用途整理了从最小配置到 PWA、深色模式适配所需的写法。所有代码均以将生成的文件放在网站根目录为前提。

模式1:最小配置(只放 favicon.ico)

不在 HTML 中写任何一行,只把 /favicon.ico 放到文档根目录即可。浏览器会隐式查找该路径,因此这样就能显示。

your-site/
└── favicon.ico   ← 放在这里即可(无需在 HTML 中书写)

<!-- 若要显式声明,仅这一行就够了 -->
<link rel="icon" href="/favicon.ico" sizes="any">
适用场景 个人网站、内部工具,以及「只要能显示就行」的场合
补充说明 加上 sizes="any" 后,即使日后追加 SVG 或 PNG,浏览器也能正确判断「ICO 是最后的备选」。建议在 ICO 中内含 16、32、48px。

模式2:标准配置(推荐)

在 ICO 之外再准备 PNG 与 Apple Touch Icon,是目前最常见的配置。从桌面浏览器到 iOS 添加到主屏幕都能覆盖。

<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
适用场景 企业官网、博客、媒体等一般 Web 站点
补充说明 apple-touch-icon 的透明部分会被填充为黑色,请务必输出带背景色的不透明 PNG。iOS 侧会以圆角裁切,留出一成左右的留白可避免边缘被切掉。

模式3:PWA 完整配置

添加到主屏幕后能像应用一样启动的 PWA,需要在 site.webmanifest 中登记图标。若 192px 与 512px 未同时齐备,则不会被判定为可安装。

<!-- HTML(head 内) -->
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">

<!-- site.webmanifest -->
{
  "name": "My Site",
  "short_name": "Site",
  "icons": [
    { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
  ],
  "theme_color": "#ffffff",
  "background_color": "#ffffff",
  "display": "standalone"
}
适用场景 PWA、Web 应用,以及以手机使用为主的服务
补充说明 iOS 不会参照 manifest 中的图标,因此仍需另行书写 apple-touch-icon。display: "standalone" 表示隐藏浏览器界面、以应用风格启动。

模式4:SVG Favicon + 深色模式适配

SVG favicon 与分辨率无关,并可通过 SVG 内的 CSS 切换深色模式下的颜色。为不支持的浏览器一并声明 ICO 与 PNG。

<!-- HTML(head 内)。浏览器会自上而下采用「能读懂的那个」 -->
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">

<!-- favicon.svg(深色模式下反转颜色的示例) -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
  <style>
    path { fill: #1a1a1a; }
    @media (prefers-color-scheme: dark) { path { fill: #ffffff; } }
  </style>
  <path d="M4 4h24v24H4z"/>
</svg>
适用场景 能够准备矢量 Logo 的站点,或希望在深色模式下改变观感的场合
补充说明 SVG favicon 已获 Chrome、Firefox、Edge 支持。Safari 目前不读取 rel="icon" 的 SVG,因此 PNG、ICO 的回退方案必不可少。

模式5:子目录放置与缓存更新

图标放在根目录以外时的写法,以及替换后仍显示旧图标时的处理。Favicon 会被浏览器牢牢缓存,改变 URL 是最可靠的办法。

<!-- 放在任意目录时需要显式写明路径 -->
<link rel="icon" href="/assets/icons/favicon.ico?v=2" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png?v=2">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png?v=2">

<!-- 在子目录下公开的站点(例如 /docs/)请注意绝对路径 -->
<link rel="icon" href="/docs/favicon.ico" sizes="any">
适用场景 CDN 分发、统一管理静态资源的站点,以及替换图标时
补充说明 唯独把 /favicon.ico 放在根目录的隐式查找无法改变路径,因此即便放在子目录,也建议在根目录留一份副本,以免遗漏。

文件与显示位置的对应关系

下表列出各文件分别用在何处。并非全部都要准备,可按需支持的环境自行选择。

文件 尺寸 使用场景
favicon.ico 16 / 32 / 48px 浏览器标签页、书签、Windows 任务栏。即使 HTML 中无声明也会查找根目录
favicon-16x16.png 16×16 浏览器标签页(标准分辨率显示器)
favicon-32x32.png 32×32 浏览器标签页(Retina 等高分辨率显示器)、书签栏
apple-touch-icon.png 180×180 添加到 iOS / iPadOS 主屏幕时的图标。透明部分会被填充为黑色
android-chrome-192x192.png 192×192 Android 主屏幕图标(经由 manifest)
android-chrome-512x512.png 512×512 PWA 启动画面与应用列表(经由 manifest)
site.webmanifest — PWA 的配置文件,用于声明图标、主题色与启动方式
favicon.svg 可变 Chrome、Firefox、Edge。可实现深色模式下的配色切换

什么是 Favicon 生成器

Favicon 生成器可以从一张图片一次性生成 favicon.ico 与各种尺寸的 PNG。favicon.ico 是一种特殊格式,能在单个文件中同时内含 16px、32px、48px 等多个分辨率,浏览器标签页、书签栏、任务栏等不同显示位置会各自自动选用最合适的尺寸。无需手工逐个尺寸导出,从裁剪为正方形到设置输出参数,全部操作都可以在这一个页面上完成。

图片的读取、裁剪、缩小以及转换为 ICO/PNG,全部处理都在浏览器内的 JavaScript 中完成,上传的图片不会被发送到服务器,因此即便是尚未公开的 Logo 或品牌规范中禁止外传的素材,也可以放心使用。缩小算法采用能够保留轮廓对比度的 Lanczos 法,即使缩小到 16px 这样极小的尺寸,文字与 Logo 的形状也不容易糊成一团。

Favicon 的制作步骤

  1. 上传图片 拖放要用作 Logo 或图标的图片,或点击选择文件。支持 PNG、JPEG、SVG、WebP、GIF、BMP 格式。
  2. 裁剪为正方形 拖动选框调整位置,拖动四角调整选区大小。由于 favicon 必须是正方形,选框会始终锁定为 1:1 比例。
  3. 设置输出选项 按需设置 favicon.ico 中要内含的尺寸、要生成的 PNG 尺寸、缩小算法以及留白与背景色等参数。
  4. 生成并确认预览 点击「生成 Favicon」即可一次性生成全部尺寸,还可以在实际尺寸预览中确认小尺寸图标的显示效果。
  5. 下载并部署 选择单独下载或打包为 ZIP 一并下载,再把生成的 HTML 代码粘贴到 标签内即可。

用好本工具的小技巧

  • 建议准备 512×512px 以上的正方形原图,这样即使缩小到 16px 轮廓也不会崩坏。非正方形的图片可以用本工具的裁剪功能,只截取需要的正方形区域。
  • Lanczos3 在对相邻像素加权平均的同时,利用卷积核的负瓣提升边缘对比度。相比浏览器内置的缩放能保留更多轮廓,对含有文字或 Logo 的图标差异尤为明显。
  • ICO 最大的特点是可在一个文件中内含多个尺寸。只要放入 16、32、48px,标签页、书签栏、Windows 任务栏就会各自选用最合适的图像。
  • Apple Touch Icon 的透明部分会被填充为黑色,因此建议指定背景色并输出为不透明的 PNG。留白设为 10% 左右,还能避免 iOS 的圆角遮罩裁掉边缘。
  • 浏览器对 favicon 的缓存非常顽固。替换后若未生效,可在 URL 后附加 ?v=2 之类的查询参数,或执行强制刷新。

应用场景

新建网站时制作 favicon

在网站上线前一次性准备好所需的 ICO、PNG 以及 HTML 代码,避免遗漏粘贴到 head 标签中。

批量生成 PWA 图标尺寸

可以同时生成添加到主屏幕、启动画面所需的 192px、512px 等 PNG 图片,以及 site.webmanifest 配置文件。

从品牌 Logo 批量转换

读取现有的 Logo 图片,一边调整留白与背景色,一边批量导出适配各类设备的图标。

替换 CMS 或静态网站生成器的图标

在为 WordPress、Hugo 等平台管理的网站更新 favicon 时,可以完整备齐所需的各种文件格式。

品牌重塑时统一更新图标

配合 Logo 更新,一次性刷新标签页、书签、主屏幕图标,并逐一确认各显示位置的效果。

术语解释

favicon.ico
浏览器会隐式地从网站根目录查找的文件名,采用可在单个文件内含多种分辨率图片的 ICO 格式保存。
Apple Touch Icon
iOS 中将网站添加到主屏幕时显示的图标。透明部分会被填充为黑色,因此建议指定背景色。
Lanczos 法
一种使用将 sinc 函数截断为有限范围的卷积核的缩小算法,能较好地保留边缘对比度,适合缩小含有文字或 Logo 的图片。
PWA(Progressive Web App)
让网站可以像应用一样添加到主屏幕、支持离线使用的技术统称,需要准备 192px、512px 图标以及 site.webmanifest 文件。
site.webmanifest
定义 PWA 名称、图标、主题色等信息的配置文件,需放置在网站根目录下并由 HTML 引用。
最近邻法
直接采用最近像素颜色的缩小算法,由于不混合颜色,能够保留像素画那样锐利的轮廓。

常见问题

有意义。ICO 是可以内含多种分辨率的容器格式,操作系统与浏览器会按用途(标签页、书签、任务栏、桌面快捷方式)选取最合适的尺寸。如果只放入 32px,那么在 16px 显示的场景下就要依赖浏览器缩小,轮廓会变模糊。同时内含 16、32、48px 三种是经典做法。

大多数场景下 PNG 已经足够,但 /favicon.ico 至今仍是浏览器在没有任何 HTML 声明时也会隐式查找的路径。RSS 阅读器、书签服务以及部分爬虫不会解析 HTML,只会直接抓取根目录下的 ICO,因此一并放置 ICO 才不会有遗漏。

64px 以下以 BMP(32 位 BGRA)存放,64px 及以上以 PNG 存放。自 Vista 起 ICO 两种格式都能内含,但业界惯例是小尺寸优先兼容性用 BMP、大尺寸为控制文件体积用 PNG,本工具遵循了这一惯例。

上传后会显示裁剪框,可自由选取正方形区域。选框可拖动移动、四角可缩放,比例始终锁定为 1:1。点击「恢复为整幅图片」会在中央选中图片内可容纳的最大正方形。

SVG 可以作为原图读入,但输出仅支持 PNG 与 ICO。若要使用 SVG favicon,请将原始 SVG 文件直接放到网站上,并通过 <link rel="icon" type="image/svg+xml"> 引用。同时写上本工具生成的 ICO 与 PNG 作为回退方案最为稳妥。
工具君

闲话 ― 在 16 像素上作画这道难题

1999 年,Internet Explorer 5 实现了在收藏夹中为书签显示小图标的功能。机制质朴得可爱:只要把 favicon.ico 放到网站根目录就会被抓取。「favicon」这个称呼正是「favorite icon」的缩写。<link rel="icon"> 正式写入 HTML 规范则是后来的事,而隐式查找根目录 ICO 的行为,至今仍作为向后兼容保留了下来。

ICO 借用 Windows 图标格式这一点,结果具有重大意义。这种格式可在单个文件中内含多种分辨率,也就意味着 16px 的标签页与 48px 的任务栏可以显示完全不同的图案。这不只是便利性的问题。在 16×16 这样极小的画布上,把为 48px 设计的图案机械缩小,细线会消失、文字会无法辨认。当年的图标设计师之所以逐个尺寸手工绘制,正因为那是唯一的解决办法。

现代的 favicon 生成则以「如何聪明地缩小」取代了手工绘制。单纯的平均(双线性)会损失边缘对比度,而抽样(最近邻)则会整根丢掉细线。Lanczos 法使用将 sinc 函数截断为有限个瓣的卷积核,主瓣保留原始信息,两侧的负瓣则把边缘顶起来。这种「略微强调轮廓」的特性,在小图标上效果尤为突出。

此后 favicon 的需求还在不断增加。2007 年 iPhone 登场带来了 Apple Touch Icon(最初 57px,如今 180px),PWA 的普及又要求 192px 与 512px,如今连 SVG favicon 与深色模式适配也进入了视野。与只放一个文件的时代相比确实繁琐,但反过来说,浏览器标签页上那几十个像素,正是被无数用户日日看见的地方。