Base64 エンコード・デコード

テキストを Base64 に変換したり、Base64 を元の文字列に戻したりできます。日本語や絵文字も UTF-8 として正しく処理するので文字化けしません。

Base64 エンコード・デコードの使い方

  1. 上部で「エンコード」か「デコード」を選びます。
  2. 入力欄に文字列または Base64 を貼り付けると、結果がすぐ下に表示されます。
  3. エンコード時は「URL-safe(- _)」と「末尾の = を削除」をオンにすると、URL や JWT にそのまま使える形式になります。
  4. 「結果をコピー」で結果を使い、「結果を逆変換」で元に戻るか確認できます。

Base64 とは

Base64 は RFC 4648 で定められたエンコード方式で、任意のバイナリデータを A–Z、a–z、0–9、+、/ の 64 種類の文字で表します。3 バイトを 4 文字に変換し、端数が出たときは = で埋めます(パディング)。メールの添付ファイル(MIME)、Data URI、HTTP の Basic 認証、各種 API でバイナリをテキストとして送るときなどに使われます。

Base64 は「暗号化」ではありません。誰でもすぐにデコードできるため、パスワードや個人情報を隠す目的には使えません。変換後のサイズは元のデータの約 4/3 倍(約 33% 増)になります。

日本語を Base64 にすると文字化けする理由

ブラウザ標準の btoa() はコードポイント 0〜255 の文字しか扱えないため、日本語を渡すとエラーになります。そこで文字列をいったん UTF-8 のバイト列に変換してから Base64 にするのが正しい方法で、このツールもそのように処理しています。たとえば「日本語」は 5pel5pys6Kqe になり、Python や Node.js、PHP で UTF-8 として変換した結果と一致します。

デコード結果が文字化けする場合は、元のデータが UTF-8 ではない可能性があります。古いシステムやメールでは Shift_JIS や ISO-2022-JP(JIS コード)が使われていることがあり、その場合は UTF-8 として読むと正しく表示されません。

標準の Base64 と URL-safe Base64(base64url)

標準の Base64 に含まれる + と / は URL の中で特別な意味を持ち、= もクエリの区切りと誤解されがちです。そのため RFC 4648 第 5 章では、+ を -、/ を _ に置き換え、末尾の = を省略できる base64url が定義されています。JWT や OAuth の PKCE、各種クラウドサービスのトークンで使われている形式です。

このツールはデコード時に両方の形式を自動で判別し、パディングの有無や途中の改行(MIME の 76 文字ごとの改行など)も気にせず貼り付けられます。

コマンドで変換する場合

macOS や Linux では echo -n "hello" | base64 で aGVsbG8= に、echo aGVsbG8= | base64 --decode(古い macOS では -D)で元に戻せます。echo に -n を付け忘れると末尾の改行まで変換され、aGVsbG8K という別の結果になるので注意してください。

よくある質問

Base64 でパスワードを暗号化できますか?

できません。Base64 は表記を変えているだけで、誰でもすぐに元に戻せます。データを守るには暗号化を、パスワードの保存には bcrypt や Argon2 などのハッシュ関数を使ってください。

デコードすると文字化けします。なぜですか?

元のデータが UTF-8 のテキストではない可能性があります。Shift_JIS などの別の文字コードや、画像・PDF などのバイナリデータが考えられます。文字列の一部しかコピーできていない場合もデコードに失敗します。

「UTF-8 のテキストではありません」と表示されました。

デコードした中身がテキストではなく、画像や PDF、ZIP などのファイルであることを示しています。先頭 64 バイトを 16 進数で表示するので、ff d8 ff なら JPEG、89 50 4e 47 なら PNG、25 50 44 46 なら PDF と判別できます。

末尾の = や == は何ですか?

パディングです。Base64 は 3 バイト単位で変換するため、最後のブロックが 1〜2 バイトしかないときに = を 1〜2 個付けて長さを 4 の倍数にそろえます。このツールは = のない文字列もデコードできます。

画像を Base64 に変換するには?

当サイトの「画像 Base64 変換」ツールを使ってください。画像を選ぶと Data URI と Base64 文字列が得られ、HTML や CSS にそのまま貼り付けられます。

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

いいえ。エンコードもデコードもブラウザ内で完結し、入力内容がサーバーに送られることはありません。

最終更新: ソースコードを見る