Base64 エンコーダー&デコーダー

テキストやファイルを Base64 に変換し、元に戻せます。Unicode を正しく扱い、URL セーフな base64url にも対応。不正な入力ではその理由を正確に示します。

ブラウザ内で動作登録不要アップロードなし

Base64 出力

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

  1. エンコードかデコードを選びます。
  2. 入力を入力または貼り付けます。結果は入力と同時に更新されます。
  3. URL、JWT、ファイル名用には URL セーフにチェックを入れて - と _ を使い、必要に応じて = のパディングを省きます。
  4. 画像やフォントを埋め込むには、ファイルをエンコードをクリックし、data URI として出力にチェックを入れたままにします。
  5. 結果をコピーするか、入れ替えで逆方向の入力として使います。

Base64 の仕組み

Base64 は、64 種類の印字可能な ASCII 文字(A-Z、a-z、0-9、+、/)でバイナリデータを表現します。入力 3 バイトごとに 4 文字になるため、エンコード後のデータは約 33% 大きくなります。入力の長さが 3 の倍数でない場合は、1 個または 2 個の = で出力をパディングします。Base64 はエンコードであって暗号化ではありません。誰でもデコードできます。

標準 Base64 と base64url の違い

+ と / は URL やファイルパスで特別な意味を持ちます。RFC 4648 §5 の URL セーフなアルファベットではこれらを - と _ に置き換え、通常はパディングを省略します。JWT や多くの OAuth パラメータ、一部のクラウド API は base64url を使います。このツールのデコーダーはどちらのアルファベットも自動で受け付けます。

Unicode と btoa() の落とし穴

ブラウザでは btoa("café") は動きますが、btoa("日本") は例外を投げます。btoa は Latin-1 しか受け付けないためです。正しい方法は、まずテキストを UTF-8 のバイト列にエンコードすることで、このツールはそのように処理しています。JavaScript では btoa(String.fromCharCode(...new TextEncoder().encode(text)))、Node.js では Buffer.from(text).toString('base64') を使います。

主な用途

  • CSS や HTML に小さな画像やフォントを埋め込む data URI
  • HTTP Basic 認証ヘッダー(user:password をエンコード)
  • JSON ペイロードやメール(MIME)のバイナリ添付
  • 値を Base64 で保存する Kubernetes Secret

よくある質問

Base64 は暗号化ですか?
いいえ。Base64 は鍵を使わない可逆なエンコードです。誰でもデコードできるので、パスワードや秘密情報を隠す目的には絶対に使わないでください。
Base64 がデコードできないのはなぜですか?
よくある原因は、アルファベット外の文字(コピー時に紛れ込んだ引用符や改行など)、途中で切れた文字列、Base64 ではないテキストの混入です。エラーメッセージに最初の問題箇所の位置が表示されます。
デコード結果が文字化けしています。なぜですか?
データがテキストではなく、画像や圧縮ファイル、暗号化されたバイト列などのバイナリである可能性が高いです。ツールはこれを検出して 16 進ダンプを表示し、生のバイト列をダウンロードできるようにします。
= のパディングは必要ですか?
このツールを含め、多くのデコーダーはパディングがなくても動作します。長さから不足バイト数がわかるためです。一部の厳密なデコーダーでは必須です。JWT や base64url の多くの用途ではパディングを省略します。
ファイルはアップロードされますか?
いいえ。ファイルはブラウザの File API でローカルに読み込まれ、エンコードされます。サーバーには何も送信されません。

関連ツール