Base64 エンコード・デコード

Base64をエンコード・デコード。日本語もUTF-8で文字化けせず、URL-safeやファイル・画像に対応。無料・登録不要、データはアップロードしません。

  • 文字化けなし
  • URL-safe
  • ファイル・画像対応
  • アップロード不要

データはブラウザ内だけで処理され、アップロードも保存もされません。

🔒 計算はすべてブラウザ内で行われ、データがサーバーに送信されることはありません。

こんなときに使えます

  • Webページに小さな画像を埋め込む:アイコンや小さな画像を Base64 にして HTML や CSS の data URI に入れれば、リクエストを1回減らせます。
  • JWT の中身を確認:JWT の真ん中の部分は URL-safe な Base64 なので、デコードすると中のデータが見られます。
  • API・メールのデバッグ:API のレスポンスやメールのソースにある Base64 を、文字やファイルに戻せます。
  • 設定ファイル・認証:ユーザー名とパスワードや証明書を Base64 にして、HTTP Basic 認証や Kubernetes の Secret などに設定できます。

使い方

  1. 「エンコード」か「デコード」を選び、左に文字列またはBase64を入力すると、右にすぐ結果が表示されます。日本語や絵文字もUTF-8で処理します。
  2. ファイルや画像をBase64にするには「ファイルを開く」を押します。URLやJWTに使う場合は「URL-safe」にチェックします。
  3. デコード結果が文字ならそのまま表示、画像ならプレビューが出て、ほかのファイルは「ダウンロード」で保存できます。「入れ替え」で結果を入力欄に戻して逆変換できます。

使用例

中国語のエンコード:「你好」はUTF-8で6バイト、エンコードすると 5L2g5aW9(8文字)です。3バイトごとにBase64の4文字になるため、6バイトはちょうど8文字で = の埋め草は付きません。

URL-safe:「<<???>>」は7バイトで、通常のBase64は PDw/Pz8+Pg==、URL-safeにチェックすると PDw_Pz8-Pg になり、そのままURLに使えます。これをデコードに貼ると <<???>> に戻ります。

画像の復元:1×1ピクセルのPNGのdata URI(data:image/png;base64,iVBORw0KGgo…)をまるごとデコードに貼ると、前置きが自動で外れ、70バイトがPNGとして認識されてプレビューが表示されます。「ダウンロード」で decoded.png として保存できます。

結果の見方

  • エンコード後に「18 bytes → 24 文字」のように表示されます。前者はUTF-8のバイト数(日本語は1文字おおむね3バイト、絵文字は4バイト)、後者はBase64の長さで、バイト数の約4/3を4の倍数に切り上げた値です。
  • 末尾の = は埋め草で0~2個付きます。URL-safe形式では省略されることが多く、デコードには影響しません。
  • デコード結果が正しいUTF-8の文字列ならそのまま表示し、そうでなければファイルとして扱い、先頭のバイトからPNG、JPEG、GIF、WebP、PDF、ZIPを判別します。画像はプレビューが出ます。
  • デコードに失敗すると、不正な文字が何行目の何列目にあるかを表示します。コピー時に引用符やバックスラッシュ、全角記号が混ざるのがよくある原因です。

仕組みと計算方法

  • 文字列はまずUTF-8のバイト列に変換し、3バイト(24ビット)ごとに6ビット×4つに分けて、RFC 4648 で定められた64文字(A–Z、a–z、0–9、+、/)に対応させます。最後が3バイトに満たない場合は = で埋めます。
  • URL-safeは RFC 4648 の5章に従い、+ を -、/ を _ に置き換え、末尾の = を取り除くので、URLやファイル名に安全に使えます。
  • デコード時は空白と改行を無視し、RFC 2397 のdata URIの前置き(data:…;base64,)を外し、通常とURL-safeの両方の文字を受け付け、足りない = も自動で補います。
  • デコードしたバイト列が正しいUTF-8で、タブと改行以外の制御文字を含まなければ文字列として表示し、それ以外はバイナリファイルとして扱います。

注意点と制限

  • Base64は暗号化ではなく符号化です。だれでも元に戻せるので、パスワードや個人情報の保護には使えません。
  • ファイルは10MBまでです。Base64の出力は元のファイルより約3分の1大きくなります。
  • 文字列は常にUTF-8として扱います。Shift_JIS や EUC-JP など別の文字コードのデータはバイナリとしてデコードされるので、ダウンロードして対応する文字コードで開いてください。
  • 判別できるファイル形式は一般的な数種類だけです。それ以外は拡張子 .bin でダウンロードされるので、名前を変えてください。

よくある質問

デコードすると文字化けする・バイナリと表示されるのはなぜ?

多くの場合、元のデータがUTF-8の文字列ではありません。Shift_JIS など別の文字コードの古いデータや、画像・圧縮ファイルなどです。UTF-8として読めない内容はバイナリとして扱うので、「ダウンロード」で保存して対応するアプリで開いてください。

URL-safe Base64とは?いつ使う?

通常のBase64の + と / はURLで特別な意味を持つため、URL-safe版(base64url)では - と _ に置き換え、末尾の = を省きます。JWT、URLパラメータ、ファイル名でよく使われます。デコード時はどちらも自動で判別します。

Base64にした画像をHTMLやCSSで使うには?

「ファイルを開く」で画像を選び、出力をコピーして先頭に data:image/png;base64,(JPEGなら image/jpeg)を付けます。例:<img src="data:image/png;base64,iVBOR...">。逆にdata URIをまるごとデコードに貼れば画像に戻せます。

データはアップロードされますか?

されません。エンコード、デコード、ファイルの読み込み、画像のプレビューはすべてブラウザ内で行われ、サーバーへの送信や保存はありません。

Base64 は暗号化ですか?

いいえ。Base64 はただのエンコード方式で、誰でも元に戻せるため、パスワードや機密データの保護には使えません。

Base64 にするとサイズが大きくなるのはなぜ?

Base64 は 3 バイトごとに 4 文字に変換するため、サイズが約 33% 増えます。そのため小さなファイル向けです。

JWT の中身を見るには?

JWT は . で区切られた3つの部分からできています。「デコード」を選んで「URL-safe」にチェックし、真ん中の部分を貼り付けると JSON の内容が表示されます。これはデコードしているだけで、署名が正しいかどうかは検証できません。

参考資料