Base64 デコード
無料のオンライン Base64 デコードツール。Base64 文字列を元のテキストに復元し、複数文字セットに対応。API 調査やログ復元に役立ちます。
関連おすすめ
Base64 デコードとは何ですか?
Base64 デコードは Base64 エンコードの逆処理で、Base64 文字列(例: SGVsbG8=)を元のテキストやバイナリデータに戻します。Base64 は 64 個の印字可能 ASCII 文字(A-Z、a-z、0-9、+、/)でバイナリデータを表現する方式で、RFC 4648 で定義されています。
**よくある用途:** Base64 は HTTP Basic Authentication ヘッダー、JWT トークンの payload セグメント、API レスポンスのフィールド、Data URI(`data:image/png;base64,...` など)、メール添付の MIME エンコード、データベースの BLOB フィールド保存などで広く使われます。これらをデコードするのは日常的な開発・デバッグ作業です。
**デコード時の重要ポイント:** Base64 をデコードするときは、1) 文字セット(日本語や中国語などのマルチバイト文字には UTF-8、英数字のみなら ASCII)、2) Padding(`=`、長さは 4 の倍数である必要あり)、3) URL-safe 変種(`-` と `_` が `+` と `/` の代わり)、4) 改行や空白(標準 Base64 にはなく、MIME は 76 文字ごとに改行)を正しく扱う必要があります。
**ブラウザー標準サポート:** ブラウザーには Base64 をデコードする `atob()` がありますが、Latin-1(ISO-8859-1)しか扱えません。日本語などのマルチバイト文字を処理するには `TextDecoder('utf-8')` で UTF-8 バイト列へ変換する必要があります。このツールはその手間を自動で処理します。
**ローカル処理とプライバシー:** すべてのデコード処理はブラウザー内で完結し、入力した Base64 文字列はサーバーへ送信されません。API レスポンス中の機密トークンやログ内のユーザーデータを安心してデコードできます。
ユースケース
- API が返した Base64 フィールドをデコードして元の内容を確認する
- ログ内の Base64 エンコードデータを復元する
- 設定ファイル中の Base64 値を元に戻す
- Padding 欠落や無効文字など Base64 デコードエラーの原因を調べる
- JWT トークンの header / payload をデコードしてユーザー情報を確認する
- HTTP Basic Authentication の資格情報をデコードしてユーザー名とパスワードを確認する
- Data URI Scheme 内の画像やリソースデータを復元する
使い方
- デコードしたい Base64 文字列を貼り付ける
- 文字セットを選ぶ(UTF-8/ASCII/ISO-8859-1)
- ツールが自動で Base64 をデコードして結果を表示する
- 結果をコピーしてデバッグや記録に使う
特徴
- リアルタイム双方向変換: 入力すると 300ms デバウンスで自動デコード、手動実行は不要
- 複数文字セット対応: UTF-8、ASCII、ISO-8859-1 に対応し、日本語・英語・多言語に対応
- URL-safe Base64 互換: `-` と `_` を自動処理し、Padding なし形式にも対応
- 不正文字検出: デコード失敗時に具体的なエラー位置を表示し、形式問題をすぐ特定
- ワンクリックでコピーとダウンロード: デコード結果をクリップボードにコピー、または `.txt` として保存
- Padding 自動処理: `=` を自動補完または除去し、長さを手動調整する必要なし
- MIME 変種対応: 76 文字ごとに改行される MIME Base64 を認識して処理
コード例
JavaScript: ブラウザー標準 `atob()` でデコード(Latin-1 のみ)
javascriptブラウザー標準 API で英数字中心の Base64 をデコードできます。UTF-8 には `TextDecoder` が必要です。
// Standard Base64 decode (plain English / Latin-1)
function b64Decode(str) {
try {
return atob(str);
} catch (e) {
return 'Decode failed: ' + e.message;
}
}
console.log(b64Decode('SGVsbG8gV29ybGQ=')); // "Hello World"
// UTF-8 decode (recommended)
function b64DecodeUtf8(str) {
const binary = atob(str);
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) {
bytes[i] = binary.charCodeAt(i);
}
return new TextDecoder('utf-8').decode(bytes);
}
console.log(b64DecodeUtf8('5LiW55WM')); // UTF-8 textPython: `base64` ライブラリでデコード(URL-Safe 含む)
pythonPython 標準の `base64` ライブラリは Standard と URL-Safe の両方に対応します。
import base64
# Standard decode
encoded = 'SGVsbG8g5LiW55WM'
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)
# URL-Safe decode
url_encoded = 'SGVsbG8g5LiW55WM'
decoded = base64.urlsafe_b64decode(url_encoded + '=' * (4 - len(url_encoded) % 4))
print(decoded.decode('utf-8'))
# MIME decode (after removing line breaks)
mime_encoded = 'SGVs\nbG8g\nV29y\nbGQ='
decoded = base64.b64decode(mime_encoded.replace('\n', '')).decode('utf-8')
print(decoded)
# Ignore invalid characters automatically
import re
cleaned = re.sub(r'[^A-Za-z0-9+/=]', '', encoded)
decoded = base64.b64decode(cleaned).decode('utf-8')
print(decoded)Java: `java.util.Base64` でデコード(複数変種対応)
javaJava 標準ライブラリは RFC 4648、URL-Safe、MIME の Base64 を一通りサポートします。
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64DecodeExample {
public static void main(String[] args) {
String encoded = "SGVsbG8g5LiW55WM";
// Standard decode
byte[] decoded = Base64.getDecoder().decode(encoded);
System.out.println(new String(decoded, StandardCharsets.UTF_8));
// URL-Safe decode
byte[] urlDecoded = Base64.getUrlDecoder().decode(encoded);
System.out.println(new String(urlDecoded, StandardCharsets.UTF_8));
// MIME decode (handles line breaks automatically)
String mime = "SGVs\nbG8g\nV29y\nbGQ=";
byte[] mimeDecoded = Base64.getMimeDecoder().decode(mime);
System.out.println(new String(mimeDecoded, StandardCharsets.UTF_8));
// Error handling
try {
Base64.getDecoder().decode("invalid@base64");
} catch (IllegalArgumentException e) {
System.err.println("Decode failed: " + e.getMessage());
}
}
}よくある質問
Base64 デコードで InvalidCharacterError が出るのはなぜですか?
よくある原因は、空白・改行・引用符などの無効文字の混入、Padding(`=`)の数が正しくないこと、URL-safe 変種(`-/_`)をそのまま標準 Base64 として扱っていることです。まず Base64 文字列をクリーニングしてから再度デコードしてください。
デコード後に文字化けする場合はどうすればいいですか?
文字セットの選択が誤っている可能性があります。日本語や中国語などのマルチバイト文字なら UTF-8 を選んでください。英数字のみやバイナリデータなら ASCII または ISO-8859-1 を試せます。
URL-safe Base64 と通常 Base64 のデコードの違いは何ですか?
URL-safe Base64 は `+` と `/` の代わりに `-` と `_` を使い、末尾の Padding `=` を省略することが多いです。デコード前に `-/_` を `+/` に戻し、必要な Padding を補う必要があります。
Base64 デコードは API 連携の調査に向いていますか?
とても向いています。多くの API レスポンス、OAuth トークン、コールバックパラメータ、ミドルウェアログでは内容が Base64 で包まれているため、デコードすると元データを直接確認できます。
JWT の header や payload はどうやってデコードしますか?
JWT は Base64URL(URL-safe 変種)を使います。JWT の 1 つ目のセグメント(header)または 2 つ目(payload)を貼り付け、URL-safe モードを選んでください。3 つ目のセグメントは署名であり、通常のデコードで単独検証するものではありません。
大きなファイルもデコードできますか?
明示的なサイズ制限はありませんが、非常に大きいテキストではブラウザー性能が低下します。10MB を超える Base64 文字列をデコードするとページが重くなることがあるため、分割処理や Node.js / Python スクリプトの利用をおすすめします。
Padding が欠けている場合はどうなりますか?
ツールが自動で Padding(`=`)を補い、長さを 4 の倍数にそろえます。URL-safe 変種では padding が省略されることが多いため、ツールが自動判定して補完します。
Base64 デコードは復号ですか?
いいえ。Base64 は可逆なエンコードであり、暗号化ではありません。誰でも Base64 をデコードできます。機密データには AES など本当の暗号化方式を使うべきです。
ブラウザーの `atob()` とこのツールの結果は同じですか?
英数字のみならほぼ同じです。ただし `atob()` は Latin-1 しか扱えず、UTF-8 のマルチバイト文字を直接処理できません。このツールは `atob()` と `TextDecoder` を組み合わせたのと同等の UTF-8 対応を行います。
デコード結果はエクスポートできますか?
はい。ワンクリックでクリップボードにコピーするか、`.txt` ファイルとしてダウンロードできます。ダウンロードされるファイルは UTF-8 エンコードで、任意のテキストエディターや Excel で開けます。
用語集
- Base64
- 64 個の印字可能 ASCII 文字を使うバイナリからテキストへのエンコード方式で、RFC 4648 で定義されています。3 バイトを 4 文字に変換するため、サイズは約 33% 増えます。
- atob()
- ブラウザー標準の Base64 デコード関数(ASCII to Binary)です。Latin-1 のみ対応で、UTF-8 テキストには TextDecoder と組み合わせる必要があります。
- Padding
- Base64 の末尾に `=` を付けて長さを 4 の倍数にそろえる仕組みです。デコード時には通常自動処理されます。URL-safe 変種では省略されることが多いです。
- URL-Safe Base64
- RFC 4648 §5 で定義される URL 安全変種で、`+` と `/` の代わりに `-` と `_` を使います。JWT や OAuth PKCE でよく使われます。
- MIME Base64
- RFC 2045 に従い 76 文字ごとに CRLF 改行を入れる Base64 変種で、主にメール添付に使われます。
- UTF-8
- 可変長の Unicode エンコードです。日本語などのマルチバイト文字を正しく復元するには、Base64 デコード時に UTF-8 を選ぶ必要があります。
- InvalidCharacterError
- `atob()` が空白、改行、非 Base64 文字を含む入力に遭遇したときに投げるエラーです。入力に無効な文字があることを示します。
- Latin-1 (ISO-8859-1)
- 西ヨーロッパ言語向けの 1 バイト文字セットです。ブラウザー標準の `atob` と `btoa` はこれしか扱えず、UTF-8 を直接処理できません。
Base64 3 つの変種比較
デコード前に入力 Base64 の変種を見極めて適切なモードを選ぶと、エラーや文字化けを防げます。
| 特性 | Standard | URL-Safe | MIME |
|---|---|---|---|
| 特殊文字 | + / | - _ | + / |
| Padding (=) | 使用 | 通常省略 | 使用 |
| 改行 | なし | なし | 76 文字ごとに改行 |
| 標準 | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| 代表的な用途 | Data URI、一般的なエンコード | JWT、URL パラメータ、ファイル名 | メール添付、SMTP 転送 |
| デコード時の注意 | Padding を補う必要がある場合あり | まず -_ を +/ に戻してからデコード | 改行を除去してからデコード |
Base64 デコードでよくある 5 つのエラー
デコードエラーが出たら、下の表で原因をすばやく切り分けできます。
| エラー種別 | 考えられる原因 | 解決方法 |
|---|---|---|
| InvalidCharacterError | 空白、改行、または Base64 以外の文字を含む | 入力文字列をクリーニングするか Base64 Clean ツールを使う |
| デコード後に文字化け | 文字セット選択が誤っている(UTF-8 テキストを Latin-1 で読むなど) | UTF-8 に切り替える |
| URL パラメータでエラー | URL-safe 文字(`-_`)を標準 Base64 としてデコードしている | 先に `-_` を `+/` に置き換える |
| Padding が不正 | 長さが 4 の倍数ではない | 長さ % 4 = 0 になるまで `=` を補う |
| 空文字列 | 入力が空白または改行のみ | 空白を削除してから再入力する |
Authoritative References
- 安全文字列比較
- 二進数変換
- シーザー暗号
- モールス信号
- 16進数変換
- 動画→Base64変換
- Base64 を動画に変換
- 画像をBase64に変換
- Base64を画像に変換
- テキスト→Base64変換
- Base64→テキスト変換
- ファイルハッシュ検証
- File to Base64
- Base64→ファイル変換
- 音声→Base64
- Base64を音声に変換
- AES暗号化・復号化
- DES暗号化/復号
- Base32 エンコーダー デコーダー
- Base58 エンコードとデコード
- Base64 エンコード
- Base64 デコード
- Base64比較
- Base64 分割
- Base64複数行マージ
- Base64フォーマット
- Base64形式チェック
- Base64一括エンコード
- Base64一括デコード
- Base64クリーナー
- Base64 パディング処理
- Base64長さ統計
- Base64→16進数変換
- Base64 DataURL 変換
- Base64-Hex双方向変換
- Base85エンコーダー/デコーダー
- HMAC生成と検証
- PBKDF2鍵導出
- MD5 ハッシュ値
- SHA-256 ハッシュ
- SHA1 ハッシュ
- SHA512ハッシュ
- JWT デコーダー
- HTMLエンティティエンコード/デコード
- Unicodeエスケープ
- URL エンコード
- URL Safe Base64変換
- MIME Base64
- Java難読化
- JS難読化
- PHP難読化
- Python難読化