* 入力内容はサーバーに送信されません。すべての計算はブラウザ上で実行されます
プレーンテキスト
エンコード済みテキスト

Base64エンコードとは?

Base64エンコードは、データ(通常はバイナリ)をASCII文字セットに変換する方法です。Base64は暗号化でも圧縮でもありませんが、データを隠しているように見えることから暗号化と混同されることがあります。実際、Base64でエンコードされたデータのサイズは元のデータの約1.3333倍になります。

Base64は最も広く使われているBaseエンコード方式で、他によく使われるのはBase16とBase32です。

Base64エンコードは、バイナリデータをプレーンなASCIIテキストに変換する最も一般的な方法の1つです。HTMLマークアップ内の画像やWebリクエストなど、バイナリデータを扱いにくいシステム間の通信に非常に便利なフォーマットです。

Base64の仕組み

データをBase64に変換するには複数のステップがあります。テキスト文字列の場合の仕組みは以下の通りです:

  1. 入力テキストの8ビットバイナリ表現を計算する
  2. 8ビットのデータを6ビットずつのチャンクに再グループ化する
  3. 各6ビットバイナリチャンクの10進数を見つける
  4. Base64ルックアップテーブルを使って各10進数値のBase64シンボルを見つける
Base64エンコードテーブル
文字文字
0A32g
1B33h
2C34i
3D35j
4E36k
5F37l
6G38m
7H39n
8I40o
9J41p
10K42q
11L43r
12M44s
13N45t
14O46u
15P47v
16Q48w
17R49x
18S50y
19T51z
20U520
21V531
22W542
23X553
24Y564
25Z575
26a586
27b597
28c608
29d619
30e62+
31f63/

なぜBase64エンコードを使うのか?

バイナリ形式で情報を送信するのは時にリスクがあります。すべてのアプリケーションやネットワークシステムが生のバイナリを扱えるわけではないからです。一方、ASCII文字セットは広く知られており、ほとんどのシステムで簡単に扱えます。

例えば、メールサーバーはテキストデータを期待するため、通常ASCIIが使われます。そのため、画像やその他のバイナリファイルをメールサーバーに送信するには、まずテキストベースのフォーマット(できればASCII)にエンコードする必要があります。ここでBase64エンコードがバイナリデータを適切なフォーマットに変換するのに非常に役立ちます。

Base64の一般的なユースケース

Base64を使って、HTML、JavaScript、CSSと互換性のある方法でバイナリデータを表現することもできます。例えば、Base64を使って画像をCSSやJavaScriptファイルにインラインで埋め込むことができます。

Base64を使ってフォームデータやJSONなどの入力を、URLセーフな縮小文字セットの文字列に変換することも可能です。ただし、一部のサーバーがプラス(+)やスラッシュ(/)文字を特定の方法で解釈する可能性があるため、代わりにencodeURIComponentを使うことを推奨します。

Base64の制限

Base64は決して安全な暗号化方式ではありません。

Base64は圧縮方式でもありません。文字列をBase64にエンコードすると、通常33%長い出力になります。