DevToolBox

Image to Base64 - 画像のBase64エンコードとData URIの使い方

アイコン1つのためにHTTPリクエストを増やしたくない、単一HTMLファイルに画像を同梱したい―― そんなときに使うのが image to base64 変換です。画像ファイルをBase64文字列に エンコードし、data:image/png;base64,... という Data URI 形式にすれば、 別ファイルを用意せずHTML・CSS・JSONに直接埋め込めます。この記事ではData URIの仕組み、 埋め込み例、サイズが増えるデメリット、使うべき場面・避けるべき場面を整理します。

Converting an image to Base64 turns the binary file into a text string you can inline directly in HTML, CSS, or JSON as a data URI (data:image/png;base64,...), eliminating a separate HTTP request. This guide covers the data URI format, embedding examples, the roughly 33% size increase, and when inlining is (and isn't) the right call.

TL;DR

Image to Base64

画像ファイルを選択するだけでData URIを即生成。ファイルサイズとBase64文字列長を並べて表示し、プレビューでその場で確認できます。アップロード不要・ブラウザ完結。

今すぐ試す →

1. Data URIとは / What is a data URI

Data URIは、ファイルの中身をURLの中にテキストとして直接埋め込む仕組みです。書式はdata:[mime-type];base64,[encoded-data] で、mime-typeには 画像の種類、encoded-dataにはBase64エンコードされたバイナリが入ります。

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...

  data:          → スキーム
  image/png      → MIMEタイプ(画像形式)
  base64         → エンコード方式
  iVBORw0K...    → Base64エンコードされた画像データ本体

主な画像形式のMIMEタイプは次のとおりです。

形式 / FormatMIMEタイプ
PNGimage/png
JPEGimage/jpeg
WebPimage/webp
GIFimage/gif
SVGimage/svg+xml

2. 画像をBase64に変換する方法 / How to convert

オンラインツール

最も手軽なのはブラウザ完結型ツールを使う方法です。ファイルを選択するだけで、アップロードなしで その場でData URIが生成されます(下のCTAから利用できます)。

コマンドライン

# macOS / Linux
base64 -i photo.png -o photo_base64.txt
# または改行なしで直接出力
base64 -w 0 photo.png   # -w 0 は改行なし(GNU coreutils)

# Windows (PowerShell)
[Convert]::ToBase64String([IO.File]::ReadAllBytes("photo.png")) | Out-File photo_base64.txt

# Windows (certutil)
certutil -encode photo.png photo_base64.txt

JavaScript(ブラウザ)

// <input type="file"> から選択したファイルをData URI化
function fileToDataUri(file) {
  return new Promise((resolve) => {
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result); // "data:image/png;base64,..."
    reader.readAsDataURL(file);
  });
}

Node.js

const fs = require("fs");
const buf = fs.readFileSync("photo.png");
const dataUri = `data:image/png;base64,${buf.toString("base64")}`;

Python

import base64
with open("photo.png", "rb") as f:
    encoded = base64.b64encode(f.read()).decode("ascii")
data_uri = f"data:image/png;base64,{encoded}"

3. サイズ増加とパフォーマンスへの影響 / Size overhead

Base64は3バイトのバイナリを4文字のASCII文字で表現するため、理論上は約1.333倍(33%増)にサイズが膨らみます。改行やパディングを含めるとさらにわずかに増えることもあります。

元の画像サイズBase64後のサイズ(目安)
1 KB約 1.33 KB
10 KB約 13.3 KB
50 KB約 66.5 KB
200 KB約 266 KB

さらに、Data URIとして埋め込んだ画像はHTML/CSS自体の一部になるため、画像だけを個別にキャッシュしたり並列ダウンロードしたりできません。 ページ全体を再取得するたびに画像データも再送信されるため、更新頻度の高いページや 大きな画像には不向きです。

Base64 inflates size by roughly 33% because it maps 3 bytes to 4 ASCII characters. Inlined images also lose independent HTTP caching and parallel download, since they become part of the surrounding HTML/CSS payload — a real cost for anything beyond small, static assets.

4. メリット・デメリット / Trade-offs

観点メリット / Prosデメリット / Cons
HTTPリクエスト画像用の追加リクエストが不要大量に埋め込むとHTML/CSS自体が肥大化
ファイルサイズ小さい画像なら通信全体では有利な場合も常に約33%増加する
キャッシュページと一緒にキャッシュされる画像単体でのキャッシュ・再利用ができない
可搬性単一ファイルで完結(オフラインツール等に便利)画像を差し替えるにはHTML/CSSごと更新が必要
互換性主要ブラウザは全対応一部メールクライアント(Gmail等)は非対応

5. 実務での使いどころ / Practical use cases

逆に、ヒーロー画像やギャラリーのような大きな写真、頻繁に差し替える画像、CDNでのキャッシュ効果を 期待したい画像は、Base64埋め込みではなく通常のファイル参照にすべきです。大きな画像を扱う前にImage Compressorで圧縮しておくのも有効です。

まとめ / Summary

image to base64変換は「バイナリをテキスト化してData URIとして埋め込む」だけの仕組みですが、 約33%のサイズ増加とキャッシュの効かなさというトレードオフを理解した上で、アイコンや小さいロゴなど10KB以下の画像に限定して使うのが実務での鉄則です。

Image-to-Base64 conversion embeds binary image data as a text string inside a data URI, so it can live directly in HTML, CSS, or JSON without a separate file request. The trade-off is a roughly 33% size increase and the loss of independent HTTP caching, which is why the practical rule is to reserve inlining for small assets (icons, logos, under ~10KB) and use regular file references — ideally via a CDN — for anything larger.

Image to Base64

JPEG・PNG・WebP・SVG・GIFに対応。生成したData URIはワンクリックでコピーでき、HTML/CSS/JSONにそのまま貼り付けられます。

今すぐ試す →

関連ツール / Related tools

関連ガイド / Related guides