Base64を使ってHTMLに画像を埋め込むには、画像をData URI文字列に変換し、<img>のsrc属性またはCSSのbackground-imageプロパティに配置します。これによりHTTPリクエストが不要になりますが、33%のサイズオーバーヘッドが追加されます —— 10 KB以下のアセットにのみ使用してください。
2つの方法:HTMLとCSS
方法1:HTML <img>タグ
DebugBearによると、標準フォーマットは:
data:image/[format];base64,[encoded_string]
最適:小さなロゴ、ファーストビューで即座にレンダリングが必要なアイコン。
方法2:CSS background-image
background-image: url(data:image/png;base64,PHN2ZyB4bWxucz...);
FreeConvertoによると、ナビゲーションアイコンやボタンに適しています —— CSSが解析された瞬間にレンダリングされます。
形式プレフィックス
| 画像形式 | Data URI プレフィックス |
|---|---|
| PNG | data:image/png;base64, |
| JPEG | data:image/jpeg;base64, |
| WebP | data:image/webp;base64, |
| SVG | data:image/svg+xml;base64, |
| GIF | data:image/gif;base64, |
| AVIF | data:image/avif;base64, |

33%のサイズオーバーヘッド
Wikipediaによると、Base64エンコーディングはファイルサイズを約33%増加させます。これはバイナリデータを64個のASCII文字のみで表現するためです。
| 元のファイル | Base64 サイズ | オーバーヘッド |
|---|---|---|
| 1 KB | ~1.33 KB | +0.33 KB |
| 5 KB | ~6.67 KB | +1.67 KB |
| 10 KB | ~13.3 KB | +3.3 KB |
| 50 KB | ~66.7 KB | +16.7 KB |
| 100 KB | ~133 KB | +33 KB |
| 500 KB | ~667 KB | +167 KB |
10KBルール
FreeConvertoによると、Base64アセットは5〜10 KB以下に保ってください。10 KBを超えると、サイズオーバーヘッドがパフォーマンスを損なう度合いが、HTTPリクエスト節約のメリットを上回ります。
Core Web Vitalsへの影響
DebugBearの分析によると、画像の埋め込みによりHTMLファイルが1 MBを超えると、ブラウザの解析遅延が発生し、Largest Contentful Paint (LCP)に悪影響を及ぼします。

効率のコツ:まずWebPに変換
FreeConvertoによると、Base64エンコーディングの前に画像をWebPに変換してください。WebPはPNG/JPEGよりも圧縮率が高く、より短いBase64文字列になります。
| 形式 | 元のサイズ | Base64 サイズ |
|---|---|---|
| PNG アイコン | 8 KB | ~10.7 KB |
| WebP(同じアイコン) | 4 KB | ~5.3 KB |
WebP + Base64 = PNG + Base64 の約半分の文字列長。
自動化ツール
| ツール | 方法 | セキュリティ |
|---|---|---|
| VS Code 拡張機能(”Image to Base64″) | 右クリック → Base64 文字列をコピー | ローカル |
| FreeConverto | ブラウザベースの FileReader API | ファイルはデバイスを離れません |
| Node.js スクリプト | CI/CD ビルドプロセス自動化 | ローカル/サーバー |
Base64を使う場合と避ける場合
| Base64 を使う場合 | Base64 を避ける場合 |
|---|---|
| 小さな UI アイコン(< 10 KB) | 大きな写真(> 10 KB) |
| ファーストビューの重要アセット | 複数ページで再利用される画像 |
| メール HTML テンプレート(外部画像がブロックされる) | ブラウザキャッシュの恩恵を受けるアセット |
| 使い捨ての装飾要素 | SVG(生の XML を使用 — より小さく圧縮可能) |
JustUse.meによると、Base64は多くのクライアントが外部画像をデフォルトでブロックするメールテンプレートで特に有用です。
まとめ
10 KB以下の小さなUIアセットにBase64埋め込みを使用し、まずWebPに変換して最短の文字列を得てください。大きな写真や共有アセットはキャッシュのために外部ファイルとして保持してください。メールテンプレートでは、Base64によりユーザーの操作なしに画像が表示されます。
よくある質問
なぜBase64コードはこんなに長いのですか?
Base64はバイナリデータを64個のASCII文字のみで表現します — バイナリストレージより非効率です。各ピクセルとカラー値が複数のテキスト文字に変換され、約33%のオーバーヘッドが追加されます。高解像度の画像は巨大な文字列を生成します。
Base64はセキュリティや暗号化を提供しますか?
いいえ。Base64はエンコーディングであり、暗号化ではありません。FreeConvertoによると、簡単に逆変換可能です — 文字列を持っていれば鍵なしで即座にデコードできます。画像コンテンツの保護に頼らないでください。
大きな写真にBase64を使えますか?
強くお勧めしません。大きなBase64文字列はHTML/CSSを肥大化させ、レンダリングを遅らせ、SEOに悪影響を及ぼします。DebugBearによると、重要なリソースの読み込みをブロックします。代わりにキャッシュと遅延読み込みを備えた外部ファイルを使用してください。

コメントを残す