Base64 デコーダーへ移動

RFC 4648 · デコーダー & エンコーダー

Base64 デコードを、何もアップロードせずに。

Base64 文字列を貼り付けると、入力と同時に読めるテキスト、画像、ファイルに変換されます。この Base64 デコードツールはすべてブラウザ内で動作するため、データがアップロードされたり、記録されたり、端末の外に出たりすることはありません。

  • 入力と同時にデコード
  • 20 種類以上の文字コード
  • 画像・PDF・JWT に対応
  • 広告なし・登録不要

更新日 · 標準 Base64 と URL セーフ Base64(RFC 4648)

Base64 デコード・エンコードツール

0 文字
デコード結果
種類: — サイズ: 0 B
オプション
全般
デコードのオプション

Ctrl+Enter デコード Ctrl+Shift+C 結果をコピー 入力欄にファイルをドロップすると読み込めます

Base64 をオンラインでデコード — 無料・即時・プライベート

この Base64 デコードツールは、サーバーではなくあなたのブラウザ内で処理を行います。上の入力欄に貼り付けるだけで、ボタン操作もページの再読み込みもアップロードもなく、結果がその場で表示されます。テキストは読める形で出力され、画像はプレビュータブに表示され、バイナリデータには 16 進ダンプと、正しい拡張子で保存できるダウンロードボタンが用意されます。

エンコードに切り替えれば逆方向の変換もでき、専用のエンコーダー freebase64encode.com も利用できます。プログラムで Base64 をデコードしたい場合は、下のコード例で Python、JavaScript、Linux、Windows PowerShell、PHP、Java、Go、C#、Ruby を紹介しています。

特定の形式を扱う場合は専用ページもあります:Base64 を画像に変換、Base64 を PDF に変換、Base64 を 16 進数に変換、そして Base64URL と JWT のデコード。

Base64 をデコードする 3 つのステップ

  1. 01

    Base64 文字列を貼り付ける

    Base64 データを入力欄に貼り付けるか、ファイルをドラッグします。空白、改行、data: URI の接頭辞、URL セーフ文字は自動で処理されます。

  2. 02

    デコード結果を確認する

    ブラウザ内でデコードされた結果が、入力欄の隣に即座に表示されます。文字化けしている場合は文字コードを選び直してください。

  3. 03

    コピー・ダウンロード・プレビュー

    デコードしたテキストをコピーしたり、バイナリを正しい拡張子のファイルとしてダウンロードしたり、16 進ダンプで確認したり、画像をページ上でプレビューしたりできます。

その他のデコーダー

Base64 を特定の形式にデコードする

主な機能

中身が何かまで教えてくれる Base64 デコーダー。

多くのオンラインデコーダーは文字の羅列を返すだけで、あとは推測するしかありません。このツールはデータの種類を判別し、よくあるエンコードの誤りを修復し、役立つ形で結果を表示します。

データは端末から出ません

すべてのバイトはこのページの JavaScript でデコードされます。アップロードも通信も記録もありません。ネットワークタブで確認できます。

形式を自動判別

PNG、JPEG、GIF、WebP、SVG、PDF、ZIP、MP4、JSON、XML、HTML をシグネチャバイトから判別して表示します。

Base64 画像のプレビュー

画像をデコードするとすぐに表示され、実際のピクセルサイズとファイルサイズも確認でき、そのままファイルとして保存できます。

20 種類以上の文字コード

UTF-8、UTF-16、Latin-1、Windows-1250/1251/1252、Shift_JIS、GBK、Big5、KOI8-R などに自動判別付きで対応。

16 進ダンプ表示

バイナリ出力はオフセット / 16 進 / ASCII の定番形式で表示され、ヘッダーやマジックバイトを確認できます。

JWT に対応

JSON Web Token を貼り付けると、ヘッダーとペイロードが表に展開され、タイムスタンプは日時に変換されます。

寛容な入力処理

パディングの欠落、URL セーフの「-」「_」、余分な空白、MIME の改行、data: URI 全体も自動で処理します。

1 行ずつモード

独立した複数の Base64 値を一度にデコードし、1 行に 1 つずつ結果を出力。ログやエクスポートに便利です。

エンコードにも対応

エンコードに切り替えれば、テキストや任意のファイルを MIME 折り返し、URL セーフ、data: URI 形式で出力できます。

選ばれる理由

違いは「どこでデコードするか」です。

多くの Base64 デコーダーは、入力した文字列をサーバーに送信してデコードし、結果を返します。つまり、トークンや鍵やファイルが、ブラウザなら一瞬でできる変換のためにあなたの端末の外へ出ていくことになります。このツールはそのような通信を一切行いません。

この Base64 デコーダーと、一般的なサーバー処理型オンライン Base64 ツールの比較
機能 freebase64decode.com 一般的なオンラインデコーダー
データをデコードする場所 常にあなたのブラウザのタブ内 サーバーにアップロード
文字コード 20 種類以上、オフラインでデコード サーバー側のみ
ファイルサイズの上限 端末のメモリのみ 多くは 100 MB まで
デコードした画像のプレビュー 内蔵(サイズ表示付き) なし
バイナリ出力の 16 進ダンプ 内蔵 なし
JWT のヘッダー・ペイロード表示 自動 なし
URL セーフ文字とパディングの修復 自動 手動
data: URI の検出 自動 手動
オフラインでの動作 ページ読み込み後は可能 不可
広告と Cookie バナー なし(トラッキング Cookie もなし) たいていあり

コードで実行する

Python、JavaScript、Linux などで Base64 をデコード。

上のデコーダーで値を確認したら、次は同じ処理をコードで書きたくなるものです。どのコード例もそのままコピーして使え、文字コード、URL セーフ文字、パディングの欠落といったつまずきやすい点もカバーしています。

Python で Base64 デコード

Python の base64 モジュールは標準ライブラリに含まれており、インストールは不要です。b64decode は常に bytes を返すので、str が欲しい場合は .decode() を呼び出します。

import base64

# Base64 string -> text
encoded = "SGVsbG8sIHdvcmxkIQ=="
text = base64.b64decode(encoded).decode("utf-8")
print(text)                      # Hello, world!

# Reject anything that is not valid Base64 instead of silently skipping it
base64.b64decode(encoded, validate=True)

# URL-safe alphabet (RFC 4648 section 5): "-" and "_" instead of "+" and "/"
base64.urlsafe_b64decode("SGVsbG8_d29ybGQtMQ==")

# Unpadded input (JWTs, URL parameters) raises binascii.Error -- pad it first
def b64decode_any(s: str) -> bytes:
    s = s.replace("-", "+").replace("_", "/")
    return base64.b64decode(s + "=" * (-len(s) % 4))

# Base64 -> image file on disk
with open("logo.png", "wb") as f:
    f.write(base64.b64decode(image_b64))

# Decode every line of a file separately
with open("encoded.txt") as f:
    for line in f:
        print(base64.b64decode(line.strip()).decode("utf-8"))

仕組み

Base64 とは何か、デコードはどう元に戻すのか。

Base64 は任意のバイト列を 64 種類の印字可能文字(A–Z a–z 0–9 + /)で書き直し、テキスト前提のシステムでもバイナリデータを壊さずに扱えるようにします。デコードはその逆で、各文字を 6 ビットの値に変換し、4 文字分の 24 ビットを 3 バイトに切り直します。暗号化ではなく単なるエンコードなので、誰でも元に戻せます。

計算例: TWFu → Man

4 つの Base64 文字「TWFu」が 3 バイトの「Man」にデコードされる過程
Base64 T · W · F · u
インデックス 19 · 22 · 5 · 46
6 ビット単位 010011 010110 000101 101110
8 ビットに再分割 01001101 01100001 01101110
バイト 77 · 97 · 110
テキスト Man

末尾の = はデータではなくパディングです。== は最後のグループが 1 バイト、= は 2 バイトだったことを示します。Base64 の出力は、元のデータより常に約 33% 大きくなります。

Base64 のアルファベット(インデックス表)

Base64 の各文字は 0 から 63 までの数値を表します。デコードではこの表(RFC 4648 の表 1)で各文字を引きます。URL セーフ Base64 も同じですが、62 が -、63 が _ になり、= は値ではなくパディングです。

Base64 インデックス表:64 文字それぞれの値
値 文字 値 文字 値 文字 値 文字
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Base64 が実際に使われている場所

メールの添付ファイル

MIME(RFC 2045)は添付ファイルを Base64 でエンコードし、76 文字ごとに改行します。デコーダーは改行を読み飛ばしますが、このツールは自動で取り除きます。

data: URI

data:image/png;base64,… の形で画像、フォント、SVG を HTML や CSS に埋め込みます。URI ごと貼り付ければ、接頭辞は自動で判別・除去されます。

JSON Web Token

JWT の 3 つのセグメントはそれぞれパディングを除いた base64url です。トークンを貼り付けると、ヘッダーとペイロードが読みやすい表に展開されます。

HTTP Basic 認証

Authorization: Basic には base64(ユーザー名:パスワード) が入っています。貼り付けるだけでデコードできてしまうため、Basic 認証は HTTPS 上でしか使ってはいけません。

設定ファイルと機密情報

Kubernetes の Secret、PEM 証明書、SSH 鍵は、ファイルをテキストのまま保つためにバイナリを Base64 で保存します。中身の確認にはデコードが必要です。

API とデータベース

バイナリデータは JSON、XML、テキスト列の中を Base64 で移動します。16 進表示なら実際のバイトが見えるので、シグネチャからファイル形式がわかります。

標準 Base64 と URL セーフ Base64

RFC 4648 は 2 種類のアルファベットを定義しています。標準版は + と / を使いますが、どちらも URL の中では特別な意味を持ちます。URL セーフ版(§5、base64url とも呼ばれる)はこれを - と _ に置き換え、通常は = のパディングも省略します。このデコーダーは貼り付けられた種類を自動で判別し、- や _ を含む文字列は、設定で強制しない限り URL セーフとして扱います。

Base64 画像をデコードする方法

data:image/png;base64, という接頭辞を含む data: URI 全体、またはエンコード部分だけを貼り付けます。接頭辞は取り除かれ、シグネチャバイトが確認され、画像が実際のサイズとともにプレビュータブに表示されます。ダウンロードを押せば、本物の PNG、JPEG、GIF、WebP、SVG ファイルとして保存できます。プレビューが空白のままなら、「16 進」タブで 89 50 4e 47(PNG)や ff d8 ff(JPEG)などのシグネチャを探してください。見当たらなければ文字列が途中で切れています。

よくある 6 つのデコードエラーとその意味

「N 文字目に不正な文字」

Base64 のアルファベット以外の文字が含まれています。多くは紛れ込んだ引用符、途中で切れたコピーの「…」、あるいは厳密なデコードを強制したときの URL セーフ文字です。

長さが 4 の倍数でない

パディングが削除されています。「パディングを修復」をオンにしてください。余りがちょうど 1 文字なら、文字列は本当に途中で切れており復元できません。

文字化け:é が é になる

誤った文字コードでデコードされています。まず UTF-8 を試し、古い Windows ソフト由来のテキストなら Windows-1252 を試してください。

読めない記号だらけになる

中身はテキストではなくバイナリです。「16 進」または「プレビュー」タブに切り替え、テキストをコピーせずファイルとしてダウンロードしてください。

デコードしてもまだ Base64

値が 2 回エンコードされています。「入力へ送る」を押して結果を入力欄に戻し、もう一度デコードしてください。

Base64 は暗号化ではない

誰でも貼り付けるだけでデコードできます。Base64 だけで「保護」された機密情報は、すでに漏れたものとして扱い、変更してください。

よくある質問

Base64 デコードに関する質問と回答。

Base64 デコードとは何ですか?

Base64 デコードとは、Base64 でエンコードされた文字列を、それが表す元のバイト列に戻す処理です。Base64 エンコードはバイナリデータを 64 種類の印字可能な ASCII 文字で書き直し、メールや JSON のようにテキストしか扱えない仕組みでも安全に送れるようにします。デコードはその対応を逆にたどり、Base64 の 4 文字ごとに元の 3 バイトへ戻します。

Base64 文字列をオンラインでデコードするには?

このページ上部の入力欄に Base64 文字列を貼り付けてください。デコード結果がすぐ隣の出力欄に表示され、ボタンを押す必要も待つ必要もありません。その後、テキストをコピーしたり、ファイルとしてダウンロードしたり、16 進ダンプで確認したり、画像ならプレビューしたりできます。

機密データに使っても安全ですか?

はい。デコードはすべてあなたのブラウザ内の JavaScript で行われるため、入力内容がアップロード、送信、記録、保存されることはありません。デコード中にブラウザの開発者ツールでネットワークタブを確認するか、インターネット接続を切ってみれば確かめられます。ページの読み込み後は接続がなくても動作します。

Base64 は暗号化ですか?安全ですか?

いいえ。Base64 は暗号化ではなくエンコードです。鍵もパスワードもなしに誰でも元に戻せるため、セキュリティ上の効果はまったくありません。このページがまさにそれをしています。パスワード、トークン、個人情報の保護に Base64 を使わないでください。AES などの本物の暗号化を使い、通信には TLS を使いましょう。

Base64 画像をデコードするには?

data:image/png;base64, という接頭辞を含む data: URI 全体、またはエンコード部分だけを貼り付けてください。接頭辞は自動で取り除かれ、画像のシグネチャが確認されて、ピクセルサイズとファイルサイズとともにプレビュータブに表示されます。ダウンロードボタンを押せば、本物の PNG、JPEG、GIF、WebP、SVG ファイルとして保存できます。

デコードしたテキストに é や � のような文字が出るのはなぜ?

文字コードの不一致です。バイト列自体は正しいのに、違う文字コードで解釈されています。まず文字コードを UTF-8 に設定してください。古い Windows アプリ由来のデータなら Windows-1252 や ISO-8859-1 を試してください。自動判別では、まず厳密な UTF-8 を試し、だめなら Windows-1252 にフォールバックします。日本語の古いデータなら Shift_JIS や EUC-JP も選べます。

「不正な Base64」とはどういう意味で、どう直せばいいですか?

入力に Base64 のアルファベット以外の文字が含まれているか、長さが 4 の倍数でないことを意味します。よくある原因は、途中で切れたコピー、一緒にコピーされた引用符や「…」、- と _ を使った URL セーフ文字列です。「空白を除去」と「パディングを修復」をオンにしておけば、ほとんどの場合は自動で修正されます。

標準 Base64 と URL セーフ Base64 の違いは何ですか?

標準 Base64(RFC 4648 第 4 節)は最後の 2 文字に + と / を使いますが、どちらも URL の中では特別な意味を持ちます。URL セーフ Base64(Base64url、RFC 4648 第 5 節)はこれを - と _ に置き換え、通常は = のパディングも省略します。このデコーダーは貼り付けた種類を判別し、自動で変換します。

Base64 ファイルをデコードできますか?

はい。「ファイル」ボタンを押すか、入力欄にファイルをドラッグしてください。ファイルはブラウザがローカルで読み込み、あなたの端末上でデコードされ、結果は正しい拡張子でダウンロードできます。何もアップロードされないため、サイズの制限はありません。実質的な上限はサーバーの割り当てではなく端末のメモリです。

Python で Base64 をデコードするには?

標準ライブラリを使います。import base64 のあと、base64.b64decode("SGVsbG8=").decode("utf-8") とします。b64decode は常に bytes を返すので、文字列にするには .decode() を呼びます。URL セーフ文字には base64.urlsafe_b64decode を使い、不正な入力を黙って無視せずエラーにしたい場合は validate=True を渡します。

Linux や Bash で Base64 をデコードするには?

文字列を base64 コマンドに渡します:echo "SGVsbG8=" | base64 --decode。末尾の改行が問題になる場合は echo の代わりに printf %s を使い、ファイルなら base64 -d file > out.bin、改行を無視するなら base64 -di とします。長い形式の --decode は Linux でも macOS でも使えますが、古い macOS では短いオプションが大文字の -D しか使えません。

Windows や PowerShell で Base64 をデコードするには?

PowerShell では [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("SGVsbG8=")) を実行します。Base64 のファイルをバイナリファイルに戻すには、Get-Content -Raw で読み込み、[Convert]::FromBase64String に渡し、[IO.File]::WriteAllBytes でバイト列を保存します。従来のコマンドプロンプトなら、certutil -decode encoded.txt decoded.bin で同じことができ、すべての Windows に標準で入っています。

JavaScript で Base64 をデコードするには?

ブラウザでは atob() でバイナリ文字列にデコードできますが、それだけでは ASCII 以外のテキストが化けます。結果をバイト列に変換して TextDecoder に通してください:new TextDecoder().decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0)))。Node.js では Buffer.from(b64, "base64").toString("utf8") を使い、URL セーフ入力には "base64url" を指定します。

ここで JWT をデコードできますか?

はい。JSON Web Token を貼り付けると、ヘッダーとペイロードが自動で読みやすい表に展開され、発行日時や有効期限のタイムスタンプは日時に変換されます。署名は表示されますが検証はしません。検証には秘密鍵または公開鍵が必要ですが、このツールはそれを求めませんし、何もブラウザの外に出ないため使うこともできません。

料金やアカウントは必要ですか?

いいえ。完全に無料で、登録もアカウントも利用制限もありません。静的なページなので、データを処理するサーバーも、課金する理由もありません。

Base64 の出力が元のデータより大きくなるのはなぜ?

Base64 は入力の 3 バイトを 4 文字で表すため、エンコード後のデータは約 33% 大きくなり、さらにパディングや改行が加わります。この増加は、テキストしか扱えない経路でバイナリデータを運ぶための代償です。