Base64 エンコーディングとは何か、いつ使うか
API、メールシステム、Web 開発に関わっているなら、それと気付かずに Base64 を目にしたことがあるはずです。意味不明に見える長い文字と数字の文字列 — おそらくそれは Base64 です。
Base64 が行うこと
Base64 はバイナリデータ(任意のバイト列)を、64 種類の「安全な」文字だけを使ったテキスト文字列に変換します:A〜Z、a〜z、0〜9、+、/。結果は必要に応じて末尾に = のパディングが付きます。
例:
- テキスト:
Hello World - Base64:
SGVsbG8gV29ybGQ=
このエンコーディングは、多くのシステム(メール、JSON、URL、XML)がテキストしか扱えないために存在します。バイナリデータ — 画像、圧縮ファイル、生のバイト — は、それらのシステムを壊す文字を含むことがあります。Base64 はバイナリを、テキストチャネルを破損なく通れるテキストに変換します。
よくある用途
HTML / CSS に画像を埋め込む:
<img src="data:image/png;base64,iVBORw0KGgoAAAA..." />
小さなアイコンやロゴを HTML に直接埋め込めば、追加の HTTP リクエストを 1 つ減らせます。
API ペイロード:API が JSON を期待する一方でバイナリ(ファイル添付、署名画像)を送る必要があるとき、Base64 にエンコードすれば普通のテキストフィールドとして含められます。
メール添付:メールプロトコル(SMTP)はテキストベースです。すべての添付ファイルは舞台裏で Base64 にエンコードされ、テキストとして送信されます。
認証ヘッダー:HTTP Basic 認証では username:password を Base64 にエンコードして Authorization ヘッダーに入れます。(これはエンコーディングであり暗号化ではありません — それ自体にセキュリティはありません。)
エンコード・デコードの方法
- エンコードかデコードを選ぶ — 変換方向を選択します。
- テキストを貼り付けるかファイルをアップロード — テキストを直接入力するか、ファイル(最大 5 MB)をドラッグ&ドロップします。
- 結果をコピー — 出力はその場で更新されます。クリップボードにコピーしてください。
Base64 を使うべきとき
使うとき:
- 小さな画像(5 KB 未満)を HTML や CSS に直接埋め込む必要がある
- API がバイナリデータをテキスト文字列として要求する
- テキストしかサポートしていないシステムを通してバイナリを渡す必要がある
使わないとき:
- ファイルが大きいとき — Base64 は 33 % のオーバーヘッドを加え、キャッシュも妨げます
- セキュリティが必要なとき — Base64 は暗号化ではありません
- 普通にファイルを配信できるとき — 数 KB を超えるものなら、通常の
<img src="photo.jpg">のほうが Base64 のデータ URL より効率的です
ヒント
- 小さなファイルだけに使う — 33 % の増加は無視できません。100 KB の画像は Base64 で 133 KB になり、ブラウザは別ファイルとしてキャッシュできなくなります。
- エンコードと暗号化を混同しない — Base64 は誰でも完全にデコードできます。セキュリティは一切ありません。データの保護ではなく、データの転送に使ってください。
- 改行に注意 — Base64 の実装によっては 76 文字ごとに改行を入れます(MIME 標準に従って)。Base64 を JSON や URL に貼り付けるなら、必ず 1 行に収まっているか確認してください。
よくある質問
Base64 はデータを暗号化しますか?
いいえ。Base64 はエンコーディングであって暗号化ではありません。誰でも Base64 文字列をデコードできるため、セキュリティはありません。データを保護したいなら、本物の暗号化(AES、RSA など)を使ってください。
なぜ Base64 でファイルが大きくなるのですか?
Base64 エンコーディングはデータサイズを約 33 % 増やします。3 バイトのバイナリが 4 文字の Base64 になります。このオーバーヘッドは、バイナリをテキストとして安全に転送できるための代償です。
テキストだけでなくファイルもエンコードできますか?
はい。任意のファイル(画像、PDF、音声)を Base64 にエンコードできます。データ URL として小さな画像を HTML や CSS に直接埋め込むのによく使われます。
Base64 を使うべきでないのはいつですか?
大きなファイルには使わないでください。1 MB の画像は Base64 テキストにすると 1.33 MB になり、ブラウザは別途キャッシュできません。数 KB を超えるなら、ファイルを普通に配信するほうが効率的です。