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 などに設定できます。
使い方
- 「エンコード」か「デコード」を選び、左に文字列またはBase64を入力すると、右にすぐ結果が表示されます。日本語や絵文字もUTF-8で処理します。
- ファイルや画像をBase64にするには「ファイルを開く」を押します。URLやJWTに使う場合は「URL-safe」にチェックします。
- デコード結果が文字ならそのまま表示、画像ならプレビューが出て、ほかのファイルは「ダウンロード」で保存できます。「入れ替え」で結果を入力欄に戻して逆変換できます。
使用例
中国語のエンコード:「你好」は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 の内容が表示されます。これはデコードしているだけで、署名が正しいかどうかは検証できません。
参考資料
- RFC 4648: The Base16, Base32, and Base64 Data Encodings — IETF
- RFC 2397: The "data" URL scheme — IETF
- Base64 — MDN Web Docs