Base64 エンコーダー&デコーダー
テキストやファイルを Base64 に変換し、元に戻せます。Unicode を正しく扱い、URL セーフな base64url にも対応。不正な入力ではその理由を正確に示します。
ブラウザ内で動作登録不要アップロードなし
Base64 出力
Base64 エンコード / デコードの使い方
- エンコードかデコードを選びます。
- 入力を入力または貼り付けます。結果は入力と同時に更新されます。
- URL、JWT、ファイル名用には URL セーフにチェックを入れて
-と_を使い、必要に応じて=のパディングを省きます。 - 画像やフォントを埋め込むには、ファイルをエンコードをクリックし、data URI として出力にチェックを入れたままにします。
- 結果をコピーするか、入れ替えで逆方向の入力として使います。
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 でローカルに読み込まれ、エンコードされます。サーバーには何も送信されません。