使い方
- Base64 文字列を入力欄に貼り付けるか、「ファイルを開く」をクリックして Base64 テキストを含むファイルを読み込みます。
- テキスト出力のまま文字コード(デフォルトは UTF-8)を選ぶか、バイナリデータの場合は「出力形式」を「16進数」に切り替えます。
- デコードに失敗した場合は、エラーメッセージを確認します。最初の無効な文字の位置が表示されます。
- デコード結果をコピーまたはダウンロードします。
デコーダーが受け付ける入力
デコードはエンコードの逆の処理です。各文字を 6 ビットの値に戻し、4 文字ごとに 3 バイトを復元します。実際に使われている Base64 がきれいな形式であることはまれなので、このデコーダーは多少崩れた入力も受け付けます。
- スペースと改行は無視されるため、折り返された MIME の本文や PEM ブロックもそのまま貼り付けられます。ただし、
-----BEGIN行と-----END行は先に削除してください。これらの行に含まれる英字とハイフンは有効な Base64 文字なので、データとしてデコードされてしまいます。 - URL セーフの入力(
-と_)も、+と/を使う標準 Base64 と同じようにデコードできます。 - パディングの欠落も問題ありません。拒否されるのは長さが 4n + 1 文字の場合だけです。余った 1 文字ではバイトを構成できないためで、通常は文字列が途中で切れていることを意味します。
- data URI にも対応しています。先頭の
data:...;base64,プレフィックスは、デコード前に取り除かれます。
テキスト出力とバイナリ出力
デコード結果は常にバイト列です。元のデータがテキストなら、テキスト出力のまま元の文字コードを選択します。画像、PDF、アーカイブ、鍵、暗号文の場合は、どの文字コードを選んでも読めるようにはなりません。「出力形式」を「16進数」に切り替えてバイト列を確認するか、Base64 をファイルに変換やBase64 を画像に変換でプレビューして保存してください。先頭の数文字から中身が分かることもよくあります。
| Base64 の先頭 | デコード後の内容 |
|---|---|
iVBORw0KGgo | PNG 画像 |
/9j/ | JPEG 画像 |
R0lGOD | GIF 画像 |
JVBERi0 | PDF 文書 |
UEsDB | ZIP アーカイブ(DOCX、XLSX、JAR を含む) |
H4sI | gzip で圧縮されたデータ |
eyJ | JSON オブジェクト(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.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
よくある質問
無効な文字のエラーが表示されるのはなぜですか?
入力に Base64 のアルファベット以外の文字が含まれています。たとえば引用符、バックスラッシュ、URL からコピーした
%2B や %3D のようなパーセントエスケープです。引用符を削除するか、先に文字列を URL デコードしてください。エラーメッセージには、最初の問題のある文字の位置が表示されます。パディングのない Base64 もデコードできますか?
はい。このデコーダーは末尾の
= を必要としないため、JWT、URL、API から得たパディングなしの文字列も通常どおりデコードできます。URL からコピーした Base64 をデコードすると結果がおかしくなるのはなぜですか?
Base64 をエスケープせずにクエリ文字列に入れると、フォームのデコード処理で
+ がすべてスペースに変換されることがよくあります。このツールではスペースは無視されるため、それらの文字が失われます。デコードする前にスペースを + に戻してください。また、URL でやり取りする値には Base64URL を使用してください。Base64 を画像やファイルにデコードするにはどうすればよいですか?
画像のプレビューとダウンロードにはBase64 を画像に変換を、PDF、アーカイブ、音声などのファイルにはBase64 をファイルに変換を使用してください。どちらもファイルの先頭バイトから種類を判別します。
入力した Base64 はサーバーに送信されますか?
いいえ。デコードはブラウザ内の JavaScript で実行され、入力がお使いのデバイスの外に送信されることはありません。トークン、設定ファイルのシークレット、個人データをデコードする際にも安心してご利用いただけます。