Base64
Data URIの使いどころ|私が使う場面、使わない場面
2025-12-03
:::note ※Data URIを使うか迷っている人向けの「判断用」記事です :::
結論(私の判断基準)
- 使う場面:10KB以下のアイコン、ファビコン、メールHTML
- 使わない場面:写真、バナー、繰り返し使う画像
- 迷ったら:外部ファイル
Data URIは便利だが、私は基本的に避けている。乱用すると痛い目に遭う。
🚀 Data URI生成 → Base64エンコーダー
私が「使わない」と決めた経緯
「外部リクエストなしで画像を表示できる」と聞いて、積極的に使っていた。
結果:
- CSSが肥大化した
- デバッグしにくくなった
- キャッシュが効かなくなった
便利さに惹かれて乱用すると、後で苦労する。
今は「仕方なく使う技術」として位置づけている。
Data URIとは
ファイルをURLとして埋め込む仕組み。
data:[MIMEタイプ];base64,[Base64文字列]
外部ファイルを参照せず、HTML/CSS内に直接データを書ける。
私がData URIを「使う」場面
場面1:10KB以下のアイコン
<img src="data:image/png;base64,iVBORw0KGgo..." alt="icon">
小さいアイコンなら、リクエスト削減のメリットがある。
場面2:ファビコン
<link rel="icon" href="data:image/x-icon;base64,...">
ファビコンは小さいし、1回しか使わない。埋め込んでいい。
場面3:メールHTML
メールHTMLでは外部画像がブロックされることがある。Data URIなら確実に表示される(ただしメールクライアントによる)。
私がData URIを「使わない」場面
場面1:写真・バナー
写真は大きい。Base64化すると33%肥大化する。CDNに置いてキャッシュさせた方が速い。
場面2:繰り返し使う画像
同じ画像を複数箇所で使うなら、外部ファイルにして1回だけダウンロードさせる。Data URIだと毎回埋め込むことになる。
場面3:本番環境の重要な画像
Data URIは壊れたとき原因が分かりにくい。本番環境の重要な画像は外部ファイルにする。
HTMLでの使用
<img src="data:image/png;base64,iVBORw0KGgo..." alt="">
CSSでの使用
.icon {
background-image: url('data:image/svg+xml;base64,PHN2ZyB...');
}
SVGの場合(Base64不要)
SVGはテキストなのでBase64化せずに埋め込める。
background-image: url('data:image/svg+xml,<svg>...</svg>');
ただしURLエンコードが必要な文字(#など)に注意。確実に動かすならBase64化した方が安全。
注意点
- IEは32KB制限があった(IE11でも)
- メールHTML内では対応がまちまち
- CSP(Content Security Policy)で
data:がブロックされることがある
迷ったときの判断
| 迷い | 私の判断 |
|---|---|
| Data URIを使うか | 10KB以下なら検討、それ以上は外部ファイル |
| SVGを埋め込むか | 小さいならData URI、大きいなら外部ファイル |
| 本番環境で使うか | 重要な画像は外部ファイル |
この記事で解決しない場合
- サイズの目安を知りたい → Base64埋め込みのサイズ目安
- Base64の思想を知りたい → Base64は本来、使うべき技術ではない
Data URIは便利だが、乱用すると痛い目に遭う。小さいファイルに限定して使う。