ファビコンを追加する方法
アイコンをサイトに保存し、<head> の中の <link rel="icon"> タグからそれを指定します。
<link rel="icon" href="/favicon.ico">
基本的なサイトなら、答えはこれで全部です。href には .ico、.png、.svg のファイルを指定できます。下の例では、SVG を data URI として href に直接書いているので、別のファイルは不要です。別のページの中にあるプレビューはブラウザのタブを変えられないので、スクリプトが同じアイコンをタブの模型と 3 つのサイズで描いています。
16 ピクセルでは、太い文字 1 つか単純な形しか入らず、細かい部分は消えてしまいます。アイコンはいちばん小さいサイズから先にデザインしましょう。fill='%232563eb' を別の色に変えると (%23 は URL エンコードした # です)、すべてのコピーが更新されます。
用意するファイル
ブラウザ、スマートフォン、アプリのランチャーは、それぞれ別のアイコンを探します。小さなセットですべてをカバーできます。
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/manifest.webmanifest">
| ファイル | サイズ | 用途 |
|---|---|---|
favicon.ico | 32×32 | ブラウザのタブ、/favicon.ico しか探さないツール |
icon.svg | 任意 (ベクター) | Chrome、Edge、Firefox で、どの画面密度でもくっきりしたタブ |
apple-touch-icon.png | 180×180 | サイトを iPhone や iPad のホーム画面に追加したときのアイコン |
| マニフェストのアイコン | 192×192 と 512×512 の PNG | Android のホーム画面とインストールされた Web アプリ |
ほとんどのブラウザは、ページにアイコンのリンクがないと、自分でサイトのルートの /favicon.ico を取りに行きます。そのため、そこに favicon.ico を置いておくと初期値として役に立ちます。sizes 属性は各ファイルのサイズをブラウザに伝え、いちばん合うものを選べるようにします。rel="icon" を使いましょう。古い rel="shortcut icon" が動くのは、ブラウザが余分な語を無視しているからにすぎません。
絵文字のファビコン
試作品や個人のページなら、絵文字で手軽にファビコンを作れます。SVG の <text> 要素の中に入れます。
%F0%9F%8D%AA は URL エンコードしたクッキーの絵文字です。絵文字は OS の絵文字フォントで描かれるので、Windows、macOS、Android で見た目が違います。本格的なプロダクトには、デザインしたアイコンのほうが適しています。
ダークモードに合わせて変わるアイコン
SVG のファビコンは、prefers-color-scheme のメディアクエリを含む独自の CSS を持てるので、ブラウザがダークテーマのときに暗いアイコンを明るくできます。
<!-- icon.svg -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<style>
circle { fill: #111827; }
@media (prefers-color-scheme: dark) { circle { fill: #f9fafb; } }
</style>
<circle cx="16" cy="16" r="14"/>
</svg>
JavaScript でファビコンを変更する
通知のドットや状態を表す色のために、ファビコンを変えるサイトもあります。新しいアイコンを <canvas> に描き、link の href を canvas の画像にします。
Chrome や Firefox の実際のページでは、href を設定するたびにタブのアイコンが変わります。ここでプレビューの画像が変わるのと同じタイミングです。
よくある間違い
- パスの間違い。
href="favicon.ico"は現在のページからの相対パスなので、/blog/postでは壊れます。ルートからのパスを使いましょう:href="/favicon.ico"。 - 更新がすぐ反映されると思う。 ブラウザはファビコンを強くキャッシュします。アイコンを差し替えたら、キャッシュを消して再読み込みするか、URL を変えましょう (
/favicon.ico?v=2)。 - 細かいロゴを 16 ピクセルに縮める。 単純にしましょう。コントラストの強い文字 1 つか形 1 つです。
- SVG しか用意しない。 SVG のファビコンに対応していないブラウザのために ICO や PNG も残し、iOS 用に
apple-touch-iconも追加しましょう。 - link を
<body>に書く。 title タグ などのメタデータと一緒に<head>に置きましょう。
よくある質問
HTML でファビコンを追加するにはどうすればいいですか?
アイコンのファイルをサイトに置き、<head> の中に <link rel="icon" href="/favicon.ico"> (または PNG や SVG のパス) を追加します。するとブラウザが、タブ、ブックマーク、履歴の一覧にアイコンを表示します。
ファビコンのサイズはどれくらいにすればいいですか?
タブ用に 32×32 の favicon.ico (または PNG)、どのサイズにも拡大縮小できる SVG、iPhone のホーム画面用に 180×180 の PNG の apple-touch-icon を用意します。マニフェストのある Web アプリは、192×192 と 512×512 の PNG も指定します。
ファビコンが表示されないのはなぜですか?
よくある原因は、href のパスの間違い、<link> が <head> の外にあること、ブラウザが古いアイコンのキャッシュを表示し続けていることです。アイコンの URL を直接開いてパスを確認し、キャッシュを消して再読み込みするか、URL に ?v=2 のようなバージョンを付けましょう。
SVG や PNG をファビコンに使えますか?
使えます。<link rel="icon" href="/icon.svg" type="image/svg+xml"> や <link rel="icon" href="/icon.png" type="image/png"> と書きます。SVG は Chrome、Edge、Firefox で動きます。対応していないブラウザのために ICO や PNG も残しておきましょう。
rel="shortcut icon" は必要ですか?
不要です。標準の値は rel="icon" です。shortcut という語は古い Internet Explorer の名残で、現在のブラウザでは何もしません。
絵文字をファビコンにできますか?
できます。SVG で包みます。絵文字を入れた <text> 要素を含む SVG の data URI です。試作品には便利ですが、絵文字の見た目は OS ごとに違います。