DevToolBox無料
ブログ

Faviconガイド2026:全サイズ・フォーマットと生成方法

8分by DevToolBox

Faviconはブラウザタブ、ブックマーク、ホーム画面、アプリスイッチャーに表示される小さなアイコンです。サイズは小さいですが、ブランド認知とユーザー体験に大きな影響を与えます。この完全faviconガイドでは、2026年に必要なもの、その理由、FigmaやNode.jsでのプログラム的な生成方法を詳しく説明します。

最小限のFavicon設定:実際に必要なのは3ファイルだけ

2026年では、すべてのモダンブラウザ、デバイス、プラットフォームをカバーするのに3つのファイルだけで十分です:

  • favicon.ico — レガシーブラウザとブラウザタブ用の32x32 ICOファイル
  • apple-touch-icon.png — iOSホーム画面ブックマーク用の180x180 PNG
  • icon-512.png — Android、PWA、その他のモダンプラットフォーム用にWebアプリマニフェストで参照される512x512 PNG

オプションで、無限のスケーラビリティとダークモードサポートのためにSVG faviconを追加できます。しかし、これら3つのファイルだけでChrome、Firefox、Safari、Edge、iOS、Androidを完全にカバーできます。

<!-- The minimal favicon setup for 2026 -->
<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サイズリファレンス

すべてのfaviconサイズ、目的、使用場所の決定版リファレンステーブルです:

SizeFormatPurposeRequired
16x16ICO / PNGBrowser tab (classic), bookmarks barOptional (embedded in 32x32 ICO)
32x32ICO / PNGBrowser tab (standard), Windows taskbar shortcutYes
48x48ICO / PNGWindows desktop shortcut, Google search resultsOptional (recommended for Google)
180x180PNGApple Touch Icon (iOS/iPadOS home screen)Yes
192x192PNGAndroid home screen icon (via manifest)Recommended
512x512PNGPWA splash screen, Android adaptive icon, Chrome installYes (for PWA)
AnySVGModern browsers (scalable, dark mode support)Optional (highly recommended)

最も一般的に要求されるサイズは、32x32(ブラウザタブ)、180x180(Appleデバイス)、512x512(PWAスプラッシュスクリーン)です。この3つだけで99%以上のユースケースをカバーします。

フォーマット比較:ICO vs PNG vs SVG

正しいfaviconフォーマットの選択は重要です。各フォーマットには異なる利点とトレードオフがあります:

FeatureICOPNGSVG
Multiple sizes in one fileYesNoN/A (scalable)
TransparencyYesYesYes
ScalabilityFixed (pixelated)Fixed (pixelated)Infinite (vector)
Dark mode supportNoNoYes (CSS media query)
File sizeSmall-Medium (1-15 KB)Small (1-10 KB per size)Very small (0.5-3 KB)
Browser supportAll browsersAll modern browsersChrome, Firefox, Edge (no Safari tab)
Apple Touch IconNot supportedRequired formatNot supported
Web manifestNot recommendedRequired formatNot supported
AnimationNoNo (APNG limited)Yes (CSS/SMIL)

推奨:/favicon.icoフォールバックにはICO、Apple Touch Iconとマニフェストアイコンにはおよび PNG、サポートするモダンブラウザにはオプションでSVGを使用してください。

ステップバイステップ:Favicon作成

Figmaから

  1. 専用フレームに512x512ピクセルでアイコンをデザインします。シンプルで認識しやすい形状を使用してください。
  2. フレームをPNG 1xスケール(512x512)でエクスポートします。
  3. フレームを複製して180x180にリサイズします。Apple Touch Icon用にPNGでエクスポートします。
  4. ICOファイルの場合、32x32 PNGでエクスポートし、以下のプログラム的方法でICOに変換します。
  5. ヒント:透明なfaviconが必要な場合は背景レイヤーをオフにしてください。

Sharp (Node.js) によるプログラム生成

sharpライブラリを使用して、単一の高解像度ソース画像からfavicon生成を自動化できます:

import sharp from 'sharp';

// Generate multiple sizes from a single source
const sizes = [16, 32, 48, 180, 192, 512];

async function generateFavicons(sourceFile: string) {
  for (const size of sizes) {
    await sharp(sourceFile)
      .resize(size, size, {
        fit: 'contain',
        background: { r: 0, g: 0, b: 0, alpha: 0 },
      })
      .png({ quality: 90, compressionLevel: 9 })
      .toFile(`favicon-${size}x${size}.png`);

    console.log(`Generated favicon-${size}x${size}.png`);
  }
}

generateFavicons('icon-source.png');

ICOファイルの生成にはpng-to-icoパッケージを使用します:

import pngToIco from 'png-to-ico';
import { writeFileSync } from 'fs';

async function generateIco() {
  // Include 16x16, 32x32, and 48x48 in a single ICO file
  const icoBuffer = await pngToIco([
    'favicon-16x16.png',
    'favicon-32x32.png',
    'favicon-48x48.png',
  ]);
  writeFileSync('favicon.ico', icoBuffer);
  console.log('Generated favicon.ico');
}

generateIco();

完全なビルドスクリプト

単一のソースPNGからすべての必要なfaviconファイルを生成する完全なNode.jsスクリプトです:

#!/usr/bin/env node
// generate-favicons.mjs
// Usage: node generate-favicons.mjs icon-source.png

import sharp from 'sharp';
import pngToIco from 'png-to-ico';
import { writeFileSync, mkdirSync } from 'fs';

const SOURCE = process.argv[2] || 'icon-source.png';
const OUT_DIR = './public';

mkdirSync(OUT_DIR, { recursive: true });

async function main() {
  // 1. Generate PNG sizes
  const pngSizes = [
    { size: 16, name: 'favicon-16x16.png' },
    { size: 32, name: 'favicon-32x32.png' },
    { size: 48, name: 'favicon-48x48.png' },
    { size: 180, name: 'apple-touch-icon.png' },
    { size: 192, name: 'icon-192x192.png' },
    { size: 512, name: 'icon-512x512.png' },
  ];

  for (const { size, name } of pngSizes) {
    await sharp(SOURCE)
      .resize(size, size, {
        fit: 'contain',
        background: { r: 0, g: 0, b: 0, alpha: 0 },
      })
      .png({ compressionLevel: 9 })
      .toFile(`${OUT_DIR}/${name}`);
    console.log(`  Created ${name}`);
  }

  // 2. Generate ICO (combines 16, 32, 48)
  const icoBuffer = await pngToIco([
    `${OUT_DIR}/favicon-16x16.png`,
    `${OUT_DIR}/favicon-32x32.png`,
    `${OUT_DIR}/favicon-48x48.png`,
  ]);
  writeFileSync(`${OUT_DIR}/favicon.ico`, icoBuffer);
  console.log('  Created favicon.ico');

  // 3. Generate manifest.webmanifest
  const manifest = {
    name: 'Your App Name',
    short_name: 'App',
    icons: [
      { src: '/icon-192x192.png', sizes: '192x192', type: 'image/png' },
      { src: '/icon-512x512.png', sizes: '512x512', type: 'image/png', purpose: 'any maskable' },
    ],
    theme_color: '#ffffff',
    background_color: '#ffffff',
    display: 'standalone',
  };
  writeFileSync(
    `${OUT_DIR}/manifest.webmanifest`,
    JSON.stringify(manifest, null, 2)
  );
  console.log('  Created manifest.webmanifest');

  console.log('\nDone! All favicon files generated.');
}

main().catch(console.error);

HTMLマークアップ:正確なLinkタグとManifest

サイトの各ページの<head>にこれらのタグを追加します:

<head>
  <!-- Favicon: ICO fallback for legacy browsers -->
  <link rel="icon" href="/favicon.ico" sizes="32x32">

  <!-- Favicon: SVG for modern browsers (scalable + dark mode) -->
  <link rel="icon" href="/icon.svg" type="image/svg+xml">

  <!-- Apple Touch Icon: iOS home screen -->
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">

  <!-- Web App Manifest: Android + PWA -->
  <link rel="manifest" href="/manifest.webmanifest">

  <!-- Optional: theme color for browser chrome -->
  <meta name="theme-color" content="#ffffff"
        media="(prefers-color-scheme: light)">
  <meta name="theme-color" content="#1a1a2e"
        media="(prefers-color-scheme: dark)">
</head>

ルートディレクトリにmanifest.webmanifestを作成します:

{
  "name": "Your Application Name",
  "short_name": "AppName",
  "icons": [
    {
      "src": "/icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any maskable"
    }
  ],
  "theme_color": "#ffffff",
  "background_color": "#ffffff",
  "display": "standalone",
  "start_url": "/"
}

マニフェストファイルはAndroidとPWA環境にどのアイコンを使用するかを伝えます。"purpose": "any maskable"の値により、アイコンが通常のアイコンとしてもAndroidのアダプティブアイコンマスク内でも機能します。

SVGによるダークモードFavicon

SVG faviconの最も強力な機能の一つは、SVG内部のCSS prefers-color-schemeを使用してユーザーの配色に適応できることです:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
  <style>
    /* Light mode (default) */
    .icon-bg { fill: #1a1a2e; }
    .icon-fg { fill: #ffffff; }

    /* Dark mode override */
    @media (prefers-color-scheme: dark) {
      .icon-bg { fill: #e0e0e0; }
      .icon-fg { fill: #1a1a2e; }
    }
  </style>

  <!-- Background circle -->
  <circle class="icon-bg" cx="64" cy="64" r="60" />

  <!-- Foreground shape (your logo/icon) -->
  <path class="icon-fg"
        d="M44 40 h40 v12 H56 v8 h24 v12 H56 v16 H44 V40z" />
</svg>

このSVG faviconは、ユーザーのOS・ブラウザテーマに基づいてダーク版とライト版を自動的に切り替えます。JavaScriptは不要で、純粋に宣言的です。Chrome、Firefox、Edgeで動作します。

Reference this SVG in your HTML:

<!-- SVG favicon with automatic dark mode -->
<link rel="icon" href="/icon.svg" type="image/svg+xml">

<!-- ICO fallback for browsers that don't support SVG favicons -->
<link rel="icon" href="/favicon.ico" sizes="32x32">

全プラットフォームでのFaviconテスト

favicon生成後、すべてのプラットフォームでテストして正しくレンダリングされることを確認します:

  • デスクトップブラウザ:Chrome、Firefox、Safari、Edgeでサイトを開きます。異なるズームレベルでタブアイコンを確認します。
  • モバイルiOS:iPhoneのSafariでサイトを開き、「ホーム画面に追加」をタップします。180x180 Apple Touch Iconが正しく表示されることを確認します。
  • モバイルAndroid:Chromeで開き、「ホーム画面に追加」をタップします。マニフェストの192x192と512x512アイコンが使用されることを確認します。
  • PWA:Chrome経由でインストールし、スプラッシュスクリーンで512x512アイコンが使用されることを確認します。
  • ダークモード:システムをダークモードに切り替え、SVG faviconが適応することを確認します。

Quick checklist for verifying your favicon setup:

# Verify all favicon files exist and are accessible
curl -s -o /dev/null -w "%{http_code}" https://yoursite.com/favicon.ico
# Expected: 200

curl -s -o /dev/null -w "%{http_code}" https://yoursite.com/icon.svg
# Expected: 200

curl -s -o /dev/null -w "%{http_code}" https://yoursite.com/apple-touch-icon.png
# Expected: 200

curl -s -o /dev/null -w "%{http_code}" https://yoursite.com/manifest.webmanifest
# Expected: 200

# Validate manifest JSON
curl -s https://yoursite.com/manifest.webmanifest | python3 -m json.tool
# Should output formatted JSON without errors

よくある質問

最低限必要なfaviconファイル数は?

最低3ファイル必要です:ブラウザタブとレガシーサポート用のfavicon.ico(32x32)、iOSホーム画面ブックマーク用のapple-touch-icon.png(180x180)、AndroidとPWAプラットフォーム用にmanifest.webmanifestで参照される512x512 PNG。2026年ではこの3ファイルでデバイスとブラウザの99%以上をカバーします。

faviconにはSVGとPNGのどちらを使うべき?

両方使います。PNGはApple Touch IconとWebマニフェストアイコンに必須です。SVGはブラウザタブのfaviconとして優れており、完全にスケーリングし、CSS prefers-color-schemeによるダークモードをサポートします。

faviconサイズはページ読み込み速度に影響する?

Faviconファイルは通常非常に小さく(15KB未満)、ブラウザによって積極的にキャッシュされるため、ページ読み込み速度への影響は無視できます。

ダークモードでfaviconを変更するには?

@media (prefers-color-scheme: dark)クエリを含む<style>ブロックが埋め込まれたSVG faviconを使用します。Chrome、Firefox、Edgeで動作します。

Webマニフェストのmaskableアイコンの目的は?

MaskableアイコンはAndroidのアダプティブアイコンシステム用に設計されています。OSがアイコンを様々な形状(円形、角丸四角形など)にクロップします。maskableアイコンには余分なパディング(「セーフゾーン」)が含まれ、マスク時に重要な部分が切り取られません。

2026年でもfavicon.icoファイルは必要?

はい。モダンブラウザはPNGとSVGのfaviconをサポートしていますが、多くのツールやサービスがルートディレクトリから/favicon.icoを自動的にリクエストします。含めるコストはほぼゼロで、サーバーログの404エラーを防ぎます。

𝕏 Twitterin LinkedIn
この記事は役に立ちましたか?

最新情報を受け取る

毎週の開発ヒントと新ツール情報。

スパムなし。いつでも解除可能。

Try These Related Tools

Favicon Generator🖼️Image Base64 Converter🏷️Meta Tag Generator

Related Articles

Open Graph & Twitter Card メタタグ:完全開発者リファレンス

SNSプレビュータグをマスター。全OG/Twitter Cardタグ、プラットフォーム別画像サイズ、フレームワーク例。

すべてのWebサイトに必要なメタタグ:HTML メタタグ完全ガイド

SEO、Open Graph、Twitter Cards、セキュリティ、パフォーマンスに必須のHTMLメタタグ。コピペ可能な完全テンプレート付き。