Base64 エンコード/デコードツール

テキストと Base64 を双方向に変換。日本語も絵文字も正しく扱い、URL セーフ文字集合にも対応します。データは一切送信されません。

プライバシーについて:エンコードもデコードもお使いのブラウザが実行します。組み込み関数がローカルで動くため、データがネットワークを経由しません。
結果がここに表示されます

Base64 エンコード/デコードツールの使い方

Base64 は、バイナリデータを 64 種類の印字可能な文字に変換する符号化方式です。目的は暗号化ではなく、テキストしか扱えない経路でもデータを安全に通過させることです。URL のパラメータに入れる、JSON の文字列に埋め込む、メール本文に書く、HTML の data URI に埋め込む、といった場面で使われます。

よくある利用場面

  • API の認証:HTTP Basic 認証のユーザー名とパスワードは、Base64 で符号化してリクエストヘッダに入れます
  • メール添付:MIME はバイナリの添付ファイルを Base64 でテキストに変換して送ります
  • 画像のインライン埋め込み:小さな画像を data:image/png;base64,... にして CSS や HTML に直接書き、リクエストを 1 回減らします
  • JWT:JWT のヘッダとペイロードは Base64URL で符号化された JSON です
  • エスケープ問題の回避:特殊文字を含む内容を符号化して設定ファイルに入れ、エスケープの地獄を避けます

日本語が文字化けする問題について

JavaScript の btoa() で日本語を符号化すると、エラーになったり文字化けしたりする人が多いはずです。原因は btoa が Latin-1 の範囲の文字しか受け付けず、日本語はその範囲外だからです。本ツールは内部でまず TextEncoder を使ってテキストを UTF-8 のバイト配列に変換し、そのうえで Base64 符号化します。したがって日本語、中国語、絵文字も正しく符号化・復元できます。復号時も同じくバイト配列に戻してから TextDecoder でテキストに戻します。

標準 Base64 と URL セーフ Base64 の違い

標準 Base64 の文字集合には + と /、そして末尾の詰め物 = が含まれます。この 3 文字は URL で特別な意味を持ちます。+ は空白として解釈され、/ はパスの区切り、= はパラメータの代入記号です。そのため URL やファイル名に入れるときは URL セーフ変種を使い、+ を -、/ を _ に置き換え、末尾の = を削除します。JWT が使っているのはこの変種です。

復号時、本ツールは URL セーフ文字を自動的に標準文字へ戻してから処理します。どちらの変種でも手動で書き換える必要はありません。

よくある質問

Base64 は暗号化ですか?パスワードの保護に使えますか?

暗号化ではなく、単なる符号化です。誰でも無条件に復号でき、鍵も不要です。パスワードや鍵、機密データを Base64 で「暗号化」してはいけません。Base64 の「base」は 64 文字を意味するだけで、「基本版の暗号」とは何の関係もありません。

符号化するとサイズが大きくなるのはなぜ?

Base64 は 3 バイトを 4 文字で表すため、約 33% 膨らみます。互換性と引き換えの必要不可欠なコストです。サイズを減らしたいなら gzip を使うべきで、Base64 ではありません。

画像も符号化できますか?

このページが扱うのはテキストです。ただし、別の手段で画像を Base64 に変換し(コマンドラインなら base64 image.png)、そのテキストをここで処理することはできます。ブラウザ側でもファイルを読むことは理論上可能ですが、それはファイル系ツールの役割なので、今後のバージョンで追加する予定です。

改行があると復号に影響しますか?

いいえ。復号前に空白文字(スペース、改行、タブ)をすべて取り除くため、改行の有無にかかわらず正しく復号できます。

関連ツール