開発ツール

画像をBase64に変換する方法・HTMLへのインライン埋め込み

画像をBase64エンコードしてHTMLやCSSに直接埋め込む方法は、小さなアイコンやロゴの表示に便利です。HTTPリクエストを削減し、ページの初期表示速度を改善できる場合があります。この記事では、画像のBase64変換の仕組み、使いどころ、具体的な実装方法を解説します。

画像のBase64変換とは

Base64は、バイナリデータ(画像ファイルなど)をASCII文字列に変換するエンコーディング方式です。画像をBase64に変換すると、A-Z、a-z、0-9、+、/の64種類の文字で構成されたテキスト文字列になります。この文字列をHTMLやCSSに直接埋め込むことで、外部ファイルを参照せずに画像を表示できます。

# Base64エンコードされた画像の例(一部省略)
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB
CAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=

メリット・デメリット

メリットデメリット
HTTPリクエスト数の削減ファイルサイズが約33%増加
外部ファイル不要で単一ファイルで完結ブラウザキャッシュが効かない
メール本文に画像を直接埋め込み可能HTMLファイルが肥大化
CORSの制約を受けない保守性が低下(画像更新が面倒)

Data URIの構文

Base64エンコードした画像をHTMLやCSSで使うには、Data URI(データURI)スキームを使います。構文は以下のとおりです。

data:[MIMEタイプ];base64,[Base64エンコード文字列]

# 例: PNG画像
data:image/png;base64,iVBORw0KGgo...

# 例: JPEG画像
data:image/jpeg;base64,/9j/4AAQSk...

# 例: SVG画像
data:image/svg+xml;base64,PHN2ZyB4...

いつ使うべきか

使うべき場面:1KB〜10KB程度の小さなアイコン、ファビコン、ローディングスピナー、メールテンプレートへの画像埋め込み

避けるべき場面:10KBを超える大きな画像、頻繁に更新される画像、同じ画像を複数ページで使う場合

HTMLでの使い方

<!-- HTML imgタグでの使用 -->
<img src="data:image/png;base64,iVBORw0KGgo..."
     alt="アイコン" width="16" height="16">

<!-- CSS背景画像としての使用 -->
<style>
.icon {
  background-image: url('data:image/png;base64,iVBORw0KGgo...');
  background-size: contain;
  width: 24px;
  height: 24px;
}
</style>

<!-- JavaScriptでの動的変換 -->
<script>
function imageToBase64(file) {
  return new Promise((resolve) => {
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result);
    reader.readAsDataURL(file);
  });
}
</script>

サイズの目安

元のサイズBase64後のサイズ推奨
1KB以下約1.3KBBase64に最適
1〜10KB約1.3〜13KBケースバイケース
10KB以上約13KB以上外部ファイル推奨
100KB以上約133KB以上必ず外部ファイルを使用

よくある質問

Base64エンコードするとファイルサイズはどれくらい増えますか?

約33%増加します。Base64は6ビットを8ビットの文字で表現するため、4/3倍(約1.33倍)のサイズになります。

SVG画像もBase64にすべきですか?

SVGはXMLベースのテキストデータなので、Base64にせずそのままHTMLに埋め込む(インラインSVG)方が効率的です。URLエンコードしてData URIに使う方法もあります。

Base64画像はSEOに影響しますか?

Base64画像はGoogle画像検索のインデックス対象外です。検索流入を狙いたい画像は通常のimgタグ+外部ファイルを使用してください。

データは外部に送信されますか?

いいえ。このツールではすべての変換処理がブラウザ上で行われるため、画像データがサーバーに送信されることはありません。

画像→Base64変換ツールを使ってみる

画像をドラッグ&ドロップするだけでBase64文字列を生成。HTMLやCSSにそのまま貼り付けできます。

ツールを開く →