画像をBase64データURIに変換する方法
小さなアイコンや透かしをHTML、CSS、JSON、メールテンプレへBase64で埋め込み—余計なHTTPも欠落アセットもなし。

このガイドと一緒に使うと便利なツール:
なぜ重要か
トランザクションメールに小さなロゴが欲しい。リモート画像はユーザー環境で「プライバシーのため」読み込みブロックされることがあります。data:image/png;base64,...形式でインラインすれば済みます。コストはサイズ+33%ですが、数KB級ならレイテンシ削減と表示保証のほうが勝ちます。favicon、CSS背景アイコン、静的サイトのSVGスプライトにも同じです。
実際の3つのシーン
80×80ロゴをエンコードし、<img>のsrcにdata URIを。
「画像を読み込む」確認が出ない
background-image: url(data:image/svg+xml;base64,...)でバンドルを自己完結できます。
リクエストが1本減る
サムネをエンコードしてJSONに埋め、クライアントは追加入力不要で描画できます。
1往復で完結
手順
画像→Base64ツールを開きます。
画像をドロップ
PNG、JPEG、WebP、GIF、SVG、ICO。ブラウザのFile APIで読み込みます。
出力形式を選ぶ
完全なdata URI(
srcやCSSへ)か、接頭辞はサーバー側で付ける生Base64か。URLセーフエンコードか選ぶ
標準Base64の
+/はHTML/CSSでOK。クエリやファイル名へ入れるなら-_のURLセーフ版が有用です。コピーまたはダウンロード
非常に長いときは
.txtでも取得できます。
ソース
icon.svg (412 bytes)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M12 2L2 22h20L12 2z"/>
</svg>Data URI
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJMMiAyMmgyMEwxMiAyeiIvPjwvc3ZnPg==
実践テクノ
- **インラインは小資産に限る(目安≤4KB)。**大きい画像はHTML/CSS/JSONが肥大化しリクエスト削減効果を超えます。
- **アイコンはSVGインライン優先。**Base64でも圧縮が効き、スケールで画質劣化しません。
- CSSなら
url()形。background: url(data:image/png;base64,...)は広く対応します。 - **メールは実クライアントで確認。**Windows版Outlookは歴史的にdata URIが癖あり。一方モダンなGmail/Apple Mailは概ね問題なし。
よくある落とし穴
よくある誤り
data URIがCSSの文字数制限を超える
レガシーパーサは数MB行で失敗することがあります。大きい画像はCDN、インラインは極小のみ。
よくある誤り
JSONでdata URL内の「/」が壊れる
JSONは/のエスケープ不要ですが、エディタが勝手に変換することがあります。URLセーフBase64で迂回できます。
よくある誤り
HTMLメールでインラインがCIDと衝突
一部クライアントは**cid:**参照を好みます。対象環境で確認し、必要なら両方フォールバックを。
向いていない用途
- ビルド時に大量インライン—Webpack
url-loaderやViteの?inlineが向きです。 - エンコード前処理—先に画像圧縮を。
- 5MB級をJSONボディへ—CDNのURL配信の方が合理的です。
FAQ
サイズペナルティは?
Base64は約33%増。1KB PNGはdata URIで約1.37KBになります。
インライン画像はブラウザキャッシュされる?
いいえ。data URIを載せたページごとにパースされます。だから極小に限るわけです。
画像はアップロードされる?
いいえ。ローカルで読み、文字列として直接出力します。