Base64 デコード

Base64入力
0文字

無料のオンライン 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 内の画像やリソースデータを復元する

使い方

  1. デコードしたい Base64 文字列を貼り付ける
  2. 文字セットを選ぶ(UTF-8/ASCII/ISO-8859-1)
  3. ツールが自動で Base64 をデコードして結果を表示する
  4. 結果をコピーしてデバッグや記録に使う

特徴

  • リアルタイム双方向変換: 入力すると 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 text

Python: `base64` ライブラリでデコード(URL-Safe 含む)

python

Python 標準の `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` でデコード(複数変種対応)

java

Java 標準ライブラリは 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 の変種を見極めて適切なモードを選ぶと、エラーや文字化けを防げます。

特性StandardURL-SafeMIME
特殊文字+ /- _+ /
Padding (=)使用通常省略使用
改行なしなし76 文字ごとに改行
標準RFC 4648 §4RFC 4648 §5RFC 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