Base64 とは?よくある質問(FAQ)と解説

Base64 の仕組み・用途・注意点をまとめました。

Base64 とは

バイナリを英数字と +/=64 文字だけで表す変換方式です。テキストしか通らない経路でも壊れません。暗号化ではありません。

3 バイトを 4 文字に変換します。例:HelloSGVsbG8=

用途:メール添付(MIME)、データURI、Basic 認証、JSON / XML、JWT。

Base64 の変換の仕組みを示した図。平文「Hello」を3バイトずつ「Hel」「lo」に区切り、それぞれ4文字の「SGVs」「bG8=」に変換する。末尾の「=」は4文字に満たない分を埋めるパディングで、全体は約1.33倍の長さになる。
3 バイトを 4 文字に置き換えるので、Base64 にすると約 1.33 倍の長さになる

なぜ Base64 が必要になったのか

コンピューターのデータは 1 バイト= 8 ビットの数値の並びで、0 から 255 までのどの値も取りえます。 ところが、初期の電子メールのような古い通信の仕組みは「文字として意味のある値だけが通る」前提で作られていました。 そこへ画像や実行ファイルのバイト列をそのまま流すと、値が勝手に書き換えられたり、 途中の装置が制御文字と解釈して通信そのものが乱れたりします。

そこで、どの経路でも安全に通ると分かっている文字だけを使ってバイナリを書き直すという発想が生まれました。 それが Base64 です。使う文字を英大文字・英小文字・数字・記号 2 種類の合計 64 種類に限ることで、 テキストしか通らない場所にバイナリを持ち込めるようにしています。

現在の通信路はバイナリを通せるものが多くなりましたが、 「設定ファイルに 1 行で書きたい」「JSON の文字列として入れたい」「URL に含めたい」といった テキストの器にバイナリを入れたい場面は残っており、Base64 は今も広く使われています。

変換の仕組み

Base64 が使う 64 文字の内訳は、AZ(26)、 az(26)、09(10)、 そして +/(2)です。合計でちょうど 64 種類になります。

64 は 2 の 6 乗なので、1 文字でちょうど 6 ビットぶんを表せます。 元データは 1 バイト= 8 ビットの並びなので、6 と 8 の最小公倍数である 24 ビット (= 3 バイト= 4 文字)が変換の単位になります。

  1. 元データを 3 バイト(24 ビット)ずつに区切る。
  2. 24 ビットを 6 ビットずつ 4 つに切り分ける。
  3. それぞれの 6 ビットの値(0〜63)を、対応する 1 文字に置き換える。

3 バイトで割り切れないときは、最後のかたまりが 1 バイトまたは 2 バイトになります。 その場合は足りないビットを 0 で埋めて文字に変換し、4 文字に足りない分を = で補います。 残りが 1 バイトなら = は 2 個、2 バイトなら 1 個です。

出力の長さは 4 ×(元のバイト数 ÷ 3 の切り上げ)で決まります。 10 バイトなら 4 × 4 = 16 文字、100 バイトなら 4 × 34 = 136 文字です。

どこで使われているか

暗号化ではない、という点について

Base64 の文字列は一見して意味が読み取れないため、隠せているように感じます。 しかし Base64 には鍵という概念がありません。 変換の規則は公開されていて誰でも同じ手順で戻せるため、 秘匿の手段としては何の役にも立ちません

Base64 は「読めない形にするもの」ではなく「壊れずに運べる形にするもの」です。 パスワードや個人情報を守りたい場合は、AES のような暗号化や、 パスワードの保存であればハッシュ関数(bcrypt など)を使ってください。 Basic 認証や JWT のペイロードが Base64 であることは、 それらが安全だという意味ではありません。

標準の Base64 と URL-safe Base64

標準の Base64 が使う +/ は、URL の中では別の意味を持つ文字です。 / はパスの区切りに、+ はクエリ文字列で空白として解釈されることがあります。 そのため URL やファイル名で使うときは、この 2 文字を置き換えた変種を用います。

項目標準の Base64URL-safe Base64
62 番目の文字+-
63 番目の文字/_
末尾のパディング= を付ける省略されることが多い
主な用途メール・データURI・PEMJWT・URL・ファイル名

当ツールは標準の Base64 を扱います。-_ を含む文字列は、 そのままではデコードできません。

よくある質問(FAQ)

エンコードとデコードの違いは?

元データ→ Base64 がエンコード、逆がデコードです。最後に編集した欄から自動判定します。

暗号化になりますか?

なりません。鍵なしで誰でも戻せます。機密情報は AES などで暗号化してください。

サイズはどれくらい増えますか?

約 1.33 倍(33% 増)です。

末尾の「=」は何ですか?

4 文字単位に揃えるパディングで、データではありません。

URL-safe Base64 との違いは?

+/-_ に置き換えたものです。JWT で使われます。

デコードに失敗するのはなぜ?

形式(4 文字単位・使用文字・パディング)に合わない、または UTF-8 として不正なときです。

入力データは送信されますか?

変換はブラウザ内で完結します。ただし入力内容は記録しています(プライバシーポリシー参照)。

Base64 にするとデータは圧縮されますか?

いいえ、逆に増えます。Base64 は 3 バイトを 4 文字に置き換える表現方法で、情報を削る仕組みを持ちません。容量を減らしたい場合は ZIP や gzip などの圧縮を先にかけ、そのうえで Base64 にします。

証明書や秘密鍵の PEM 形式も Base64 ですか?

はい。BEGIN CERTIFICATE のような行で挟まれた中身は、DER 形式のバイナリを Base64 にして 64 文字ごとに改行したものです。テキストとして扱えるため、設定ファイルや環境変数に貼り付けられます。

Base32 や Base58 との違いは何ですか?

使う文字の種類の数が違います。Base32 は大文字と数字だけを使うため、見間違いや電話での読み上げに強い一方で、Base64 より長くなります。Base58 は 0 と O、I と l のような紛らわしい文字を除いたもので、暗号資産のアドレス表記などに使われます。

改行が入った Base64 でも元に戻せますか?

戻せます。メールの MIME や PEM 形式では一定の文字数ごとに改行が入りますが、改行と空白は意味を持たないため、当ツールは取り除いてから変換します。

操作手順と関連ページ

画面の使い方と、デコードに失敗したときの確認手順は Base64 変換ツールの使い方にまとめています。 このサイトの成り立ちと運営方針は運営者情報、 ほかのツールはツール一覧 半径から市区町村を探すから探せます。

Base64 変換ツールを使う