Base64 デコード

Base64 文字列を貼り付けると、元のテキストやバイト列に戻します。改行、URL セーフの文字、パディングの欠落、data: プレフィックスは自動的に処理され、エラーがあれば問題のある文字の位置を正確に示します。

すべてブラウザ内で処理され、データはアップロードされません。

使い方

  1. Base64 文字列を入力欄に貼り付けるか、「ファイルを開く」をクリックして Base64 テキストを含むファイルを読み込みます。
  2. テキスト出力のまま文字コード(デフォルトは UTF-8)を選ぶか、バイナリデータの場合は「出力形式」を「16進数」に切り替えます。
  3. デコードに失敗した場合は、エラーメッセージを確認します。最初の無効な文字の位置が表示されます。
  4. デコード結果をコピーまたはダウンロードします。

デコーダーが受け付ける入力

デコードはエンコードの逆の処理です。各文字を 6 ビットの値に戻し、4 文字ごとに 3 バイトを復元します。実際に使われている Base64 がきれいな形式であることはまれなので、このデコーダーは多少崩れた入力も受け付けます。

  • スペースと改行は無視されるため、折り返された MIME の本文や PEM ブロックもそのまま貼り付けられます。ただし、-----BEGIN 行と -----END 行は先に削除してください。これらの行に含まれる英字とハイフンは有効な Base64 文字なので、データとしてデコードされてしまいます。
  • URL セーフの入力(- と _)も、+ と / を使う標準 Base64 と同じようにデコードできます。
  • パディングの欠落も問題ありません。拒否されるのは長さが 4n + 1 文字の場合だけです。余った 1 文字ではバイトを構成できないためで、通常は文字列が途中で切れていることを意味します。
  • data URI にも対応しています。先頭の data:...;base64, プレフィックスは、デコード前に取り除かれます。

テキスト出力とバイナリ出力

デコード結果は常にバイト列です。元のデータがテキストなら、テキスト出力のまま元の文字コードを選択します。画像、PDF、アーカイブ、鍵、暗号文の場合は、どの文字コードを選んでも読めるようにはなりません。「出力形式」を「16進数」に切り替えてバイト列を確認するか、Base64 をファイルに変換やBase64 を画像に変換でプレビューして保存してください。先頭の数文字から中身が分かることもよくあります。

Base64 の先頭デコード後の内容
iVBORw0KGgoPNG 画像
/9j/JPEG 画像
R0lGODGIF 画像
JVBERi0PDF 文書
UEsDBZIP アーカイブ(DOCX、XLSX、JAR を含む)
H4sIgzip で圧縮されたデータ
eyJJSON オブジェクト(JWT のヘッダーなど)

デコードしたテキストが文字化けする原因

  • 文字コードの誤り。UTF-8 のテキストを Windows-1252 として読むと é が é になり、GBK や Shift_JIS のテキストを UTF-8 として読むと置換文字(�)が表示されます。テキストが作成されたときの文字コードを選択してください。
  • バイナリデータ。意味のない記号の中に、先頭付近の PNG や PK のような読める断片が混じっている場合、中身はテキストではなくファイルです。
  • 圧縮または暗号化されたデータ。gzip ストリーム、Protocol Buffers、暗号文は正しくデコードされても、テキストではありません。「出力形式」を「16進数」にすると、実際の中身を確認できます。
  • 二重エンコード。出力自体が Base64 になっている場合は、それを入力欄に貼り付けてもう一度デコードしてください。

コードで Base64 をデコードする

# Python
base64.b64decode(s).decode('utf-8')

// Node.js(URL セーフの入力も受け付けます)
Buffer.from(s, 'base64').toString('utf8')

// ブラウザ:atob() は 1 バイトにつき 1 文字を返すため、その後 UTF-8 としてデコードします
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))

# Linux・macOS のシェル
echo 'SGVsbG8=' | base64 --decode

仕様

使用文字A-Z a-z 0-9 + /
出力サイズ3 バイトごとに 4 文字(約 133%)
パディング= で 4 文字の倍数に揃える
規格RFC 4648 第 4 節
大文字と小文字の区別あり

エンコード例

入力 (UTF-8)出力
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

よくある質問

無効な文字のエラーが表示されるのはなぜですか?
入力に Base64 のアルファベット以外の文字が含まれています。たとえば引用符、バックスラッシュ、URL からコピーした %2B や %3D のようなパーセントエスケープです。引用符を削除するか、先に文字列を URL デコードしてください。エラーメッセージには、最初の問題のある文字の位置が表示されます。
パディングのない Base64 もデコードできますか?
はい。このデコーダーは末尾の = を必要としないため、JWT、URL、API から得たパディングなしの文字列も通常どおりデコードできます。
URL からコピーした Base64 をデコードすると結果がおかしくなるのはなぜですか?
Base64 をエスケープせずにクエリ文字列に入れると、フォームのデコード処理で + がすべてスペースに変換されることがよくあります。このツールではスペースは無視されるため、それらの文字が失われます。デコードする前にスペースを + に戻してください。また、URL でやり取りする値には Base64URL を使用してください。
Base64 を画像やファイルにデコードするにはどうすればよいですか?
画像のプレビューとダウンロードにはBase64 を画像に変換を、PDF、アーカイブ、音声などのファイルにはBase64 をファイルに変換を使用してください。どちらもファイルの先頭バイトから種類を判別します。
入力した Base64 はサーバーに送信されますか?

いいえ。デコードはブラウザ内の JavaScript で実行され、入力がお使いのデバイスの外に送信されることはありません。トークン、設定ファイルのシークレット、個人データをデコードする際にも安心してご利用いただけます。