CreaTools LogoCreaTools
Base64

Base64は本来、使うべき技術ではない|それでも使う条件

2025-12-14

:::note ※Base64を使うか迷っている人のための「入口」記事です :::

正直に言うと、私はBase64を常用しない

Base64は便利な技術だと言われている。画像をHTMLに埋め込める。リクエスト数を減らせる。

でも正直に言うと、私はBase64を常用しない。仕方なく使う技術だと思っている。

理由は単純。33%肥大化する。キャッシュが効かない。デバッグしにくい。

この記事は、それでもBase64を使う条件と、使わない条件をまとめたもの。

🚀 今すぐ変換 → Base64エンコーダー を開く


私がBase64で後悔した話

後悔1:CSSに画像を埋め込んで、CSSが肥大化した

「リクエスト減らせる」と思って、アイコン画像をCSSにBase64で埋め込んだ。

20個のアイコン。1個10KBだから合計200KB。Base64化して約270KB。

**CSSファイルが300KB超えた。**初回読み込みが遅くなった。キャッシュも効きにくい。

外部ファイルにしてCDNに置いた方が速かった。

後悔2:Base64文字列が壊れて、原因特定に時間がかかった

APIでBase64エンコードした画像を受け取っていた。ある日、画像が表示されなくなった。

原因を調べた。Base64文字列の途中に改行が入っていた。どこかの処理で混入した。

**Base64は文字列なので、どこで壊れたか分かりにくい。**外部ファイルなら「ファイルが壊れている」と分かる。Base64は「文字列のどこかがおかしい」としか分からない。

後悔3:「Base64で送って」と言われて、ファイルサイズが爆発した

クライアントから「画像はBase64で送ってください」と言われた。仕様だから従った。

10MBの画像をBase64化した。約13MB。JSONに入れた。レスポンスが遅い。タイムアウトした。

Base64は「小さいファイルを埋め込む」技術。大きいファイルに使うと破綻する。


私がBase64を「使わない」条件

条件理由
10KB以上のファイル肥大化が目立つ
繰り返し使う画像外部ファイル + キャッシュの方が速い
本番環境の写真・バナーCDNを使うべき
デバッグしやすさが必要Base64は壊れた場所が分かりにくい

迷ったら外部ファイル。Base64は「仕方なく使う」技術。


私がBase64を「使う」条件

条件理由
10KB以下のアイコンリクエスト削減のメリットがある
インライン必須の場面メールHTML、一部のAPIなど
開発時の一時的な埋め込み外部ファイル準備前の仮実装
ファビコン小さいし、1回しか使わない

使う条件は限られている。


Base64を信用しきっていない理由

理由1:33%肥大化する

これは仕様。100KBのファイルが133KBになる。避けられない。

理由2:キャッシュが効きにくい

HTMLやCSSに埋め込むと、画像だけキャッシュできない。HTML全体をキャッシュすることになる。

理由3:デバッグしにくい

外部ファイルなら「この画像が壊れている」と分かる。Base64は「この長い文字列のどこかがおかしい」としか分からない。

理由4:HTTP/2時代にはメリットが薄い

「リクエスト数を減らせる」はHTTP/1.1時代の話。HTTP/2では並列取得が効率化されている。


この記事で判断がつかない場合

知りたいこと読むべき記事
何KBまで埋め込んでいいかBase64埋め込みのサイズ目安
Base64でエラーが出たBase64でよくあるエラーと対処法
Data URIの使い方Data URIの使いどころ
URLエンコードとの違いBase64とURLエンコードの違い
ツールの使い方Base64エンコード/デコードの使い方

結局どうするか

Base64は「便利な技術」ではなく「仕方なく使う技術」。

10KB以下のアイコン、インライン必須の場面でのみ使う。それ以外は外部ファイル。

迷ったら外部ファイル。Base64は最終手段。