基本ガイド

Base64とは:なぜ末尾に = が付き、なぜ約1.33倍になるのか

更新日:2026-09-17

メールの添付ファイルやデータURLの中に、英数字が延々と並んだ文字列を見かけることがあります。多くは Base64 です。仕組みを整理します。

何をしているのか

Base64 は、任意のバイト列を64種類の文字だけで表す変換です。使う文字は A-Za-z0-9+/ の64種類です。

目的は「文字しか通せない場所にバイト列を通すこと」です。メールの本文やJSONの文字列など、そのままではバイナリを扱えない場所で使われます。

3バイトを4文字に分ける

変換の単位は3バイトです。3バイト=24ビットを6ビットずつ4つに分け、それぞれを64種類の文字に対応させます。

「ABC」の場合

A B C のバイト列 … 41 42 43(24ビット)
6ビットずつ4つに分ける
QUJD(4文字)

末尾の = はパディング

元のデータが3バイトの倍数でないとき、4文字に足りない分を = で埋めます。これがパディングです。

元のデータバイト数Base64= の数
ABC3QUJD0個
AB2QUI=1個
A1QQ==2個

= は0個・1個・2個のいずれかで、3個以上になることはありません。末尾の = の数を見れば、元のデータのバイト数が3で割り切れるかどうかがわかります。

約1.33倍になる

3バイトが4文字になるので、データ量は4÷3=約1.33倍になります。パディングを含めるともう少し増えます。

画像をデータURLとしてHTMLに埋め込むと、元のファイルより3割ほど大きくなるのはこのためです。小さなアイコンなら通信を1回減らせる利点が上回ることがありますが、大きな画像では不利になります。

日本語を Base64 にすると

日本語も、いったんバイト列にしてから変換します。UTF-8 なら1文字3バイトが多いので、3文字で9バイト=12文字になります。

「テスト」の場合

UTF-8のバイト列 … E3 83 86 E3 82 B9 E3 83 88(9バイト)
Base64 … 44OG44K544OI(12文字)

9バイトがちょうど3の倍数なので、パディングは付きません。

暗号ではない

Base64 は誰でも元に戻せます

Base64 は変換であって暗号化ではありません。鍵は不要で、変換表さえあれば誰でも元のデータに戻せます。パスワードや個人情報を Base64 にしても、秘密にしたことにはなりません。読みにくくなるだけです。

URLセーフな変種

標準の Base64 は +/ を使いますが、この2文字はURLの中で意味を持ちます。そこで、+- に、/_ に置き換えた変種があります。URLセーフBase64と呼ばれます。

パディングの = も省略されることがあります。URLに含まれる文字列を戻すときは、この置き換えを元に戻してから復号します。

見分け方

Base64 かどうかは、次の特徴から見当がつきます。

  • 英数字と + / = だけでできている
  • 長さが4の倍数になっている(パディングを含む場合)
  • 末尾に = が0〜2個ある

テキスト変換では、貼り付けた文字列の形式を自動で判定して戻せます。Base64 かURLエンコードか判断がつかない場合も、そのまま貼って試せます。

まとめ

  • 3バイトを4文字に置き換え、64種類の文字だけで表す
  • 末尾の = はパディングで、0〜2個になる
  • データ量は約1.33倍になる
  • 暗号ではなく、誰でも元に戻せる
  • URLで使うときは + / を置き換えた変種を使う

貼り付けるだけで変換できます。形式がわからない文字列は自動で判定します。入力内容はサーバーに送信されません。

テキスト変換で試す →

登録不要・完全無料/入力内容はサーバーに送信されません

この記事を書いた人

都内在住。Web制作・デザインに20年以上携わり、現在はインハウスでWeb制作や改善業務に関わっています。文字コードまわりの不具合に何度も当たってきたので、調べ直した内容を手元のメモとしてまとめ直したものを発信しています。

この記事の位置づけ

仕様と一般的な動作を整理したものです。実際の挙動はブラウザやアプリの実装、受け取り側のシステムによって変わることがあります。業務で使う場合は、実際のデータで往復して確かめておくと安全です。

参考・出典

※2026年9月時点の仕様と、主要なブラウザでの動作にもとづいています。