ファイルを選択
  1. base64hub
  2. テキストツール
  3. Base64 修復

Base64 修復ツール

デコーダーに拒否された Base64 を貼り付けてください。JSON、URL、メール、コピー&ペーストでよく起こる破損を元に戻し、行った変更を一つずつ示したうえで、選んだ形式のきれいな文字列を返します。

無料 登録不要・制限なし ローカル アップロードなし 修復内容 引用符、エスケープ、%3D、空白、パディング 更新日 2026/10/27

修正内容

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base64 文字列を修復する方法

  1. 壊れた値を チェックする Base64 に貼り付けます。前後の引用符、プレフィックス、改行は残したままにしてください。何が起きたのかを判断する手がかりになります。
  2. 出力形式 を選びます。標準(パディングあり)、標準(パディングなし)、URLセーフ(パディングあり・なし)、MIME(76 文字の行、CRLF)、PEM(64 文字の行)から選べます。
  3. 修正内容 を確認します。修復は一つずつ個別に表示されるので、無害な整形とデータが失われたかもしれない変更とを見分けられます。
  4. 結果をコピーまたはダウンロードするか、結果を検証 を押して完全なチェックを実行するか、デコードしたファイルをダウンロード でバイト列を保存します。

修復できる内容

貼り付けた値何が起きたか修復後
"SGVsbG8gd29ybGQ\u003d"= がエスケープされた JSON 文字列SGVsbG8gd29ybGQ=
SGVsbG8%3DURL 内でパーセントエンコードされたSGVsbG8=
PDw/Pz8 Pg==クエリ文字列で + が空白になったPDw/Pz8+Pg==
PDw_Pz8-PgURLセーフでパディングなしPDw/Pz8+Pg==
SGVsbG8gd29ybGQパディングが削られたSGVsbG8gd29ybGQ=
SGVsbG8=V29ybGQ=2 つの値が連結されたSGVsbG9Xb3JsZA==(HelloWorld)
SGVsbG9=未使用ビットが 0 でないSGVsbG8=
Authorization: Basic …ヘッダー名ごとコピーされたトークンのみ

このほか、data:…;base64, プレフィックスや PEM の -----BEGIN …----- 行の削除、普通の引用符の除去、文字どおりの \n や \/ の復元(PHP の json_encode はデフォルトで \/ と書きます)、空白と改行の除去、+/ と -_ が混在したアルファベットの統一、= の個数の修正も行います。

連結された値は、各断片を個別にデコードしてからバイト列をつなげます。プログラムがパディング付きの断片を次々に追記した場合は、これが正しい処理です。代わりに途中の = を削除すると、それ以降のビットがすべてずれて、意味のないデータになります。

本当の問題を隠しかねない修復

次の 2 つは推測に基づく修復なので、警告として表示されます。

  • 不正な文字を削除した場合。 文字列に *、#、紛れ込んだ Unicode 文字などがあると、ツールはそれを削除し、どの文字を消したかを表示します。データの途中にある文字は、本来の記号が化けたものかもしれません。その場合、デコードしたバイト列はその位置から先がやはり正しくありません。
  • はみ出した 1 文字を削除した場合。 4 で割った余りが 1 になる長さは、どのエンコーダーも生成しません。つまり 1 文字余分か、文字列が途中で切れています。ツールは残りをデコードできるよう最後の 1 文字を削除しますが、値が切り詰められていたのなら、ファイルの末尾は失われています。切れた画像はたいてい下部が灰色になるか欠け、切れた ZIP は開けません。

どちらかの警告が出たら、元データをもう一度入手してください。切り詰められていないログ行、API レスポンス全体、メールサーバーから直接取得した添付ファイルなどです。

単純な修正では足りない理由

Base64 を「直す」定番のコードは、空白、URLセーフ文字、パディングを処理します。

def fix_base64(s):
    s = "".join(s.split())
    s = s.replace("-", "+").replace("_", "/").rstrip("=")
    return s + "=" * (-len(s) % 4)

これで SGVsbG8gd29ybGQ と PDw_Pz8-Pg は正しく直ります。ところが + が空白になった PDw/Pz8 Pg== を渡すと、空白が削除されてデータ文字が 9 個になり、Python は「number of data characters (9) cannot be 1 more than a multiple of 4」で失敗します。JSON エスケープ、%3D、くっついた断片、プレフィックスも同じようにすり抜けます。このツールは修正を一つずつ試し、空白を + に戻す変更は結果の長さが正しくなる場合にだけ適用します。

長期的に安全な対策は、発生元で直すことです。URL に入れる前に Base64 をパーセントエンコードするか Base64URL を使い、テキストを折り返したりエスケープしたりする場所には置かないようにしてください。修復した文字列をデコードしても予想外の結果になる場合は、Base64 エラーガイド で文字化けや二重エンコードを解説しています。バイト列は Base64 デコーダー で確認できます。

よくある質問

Python の「Incorrect padding」エラーを直すには?

長さが 4 の倍数になるまで = を足します:s + "=" * (-len(s) % 4)。それでもエラーが出る場合は、空白やエスケープなど別の破損があります。ここに貼り付ければ、ほかに何が問題なのかがわかります。

Base64 に空白が混じっているのはなぜですか?

たいていは、+ がパーセントエンコードされないまま URL のクエリ文字列や HTML フォームを通り、受け取った側で空白に変換されたためです。修復ツールは、長さが正しくなる場合に限って + に戻します。

修復でデータが失われることはありますか?

不正な文字や、はみ出した最後の 1 文字を削除した場合はありえます。その場合は修正一覧にそう表示されます。データが途中で切れていたために 1 文字削除したと表示されたら、結果を信用せず、元データの完全なコピーを入手してください。

Base64 の末尾にある \u003d は何ですか?

= の JSON エスケープです。Gson など一部の JSON ライブラリは、HTML 上の安全のために = をエスケープします。JSON パーサーなら自動で元に戻しますし、生のテキストを貼り付ければこの修復ツールも同じように戻します。