ファイルを選択
  1. base64hub
  2. テキストツール
  3. Base64 デコード

Base64 デコーダー:Base64 をテキストにオンラインでデコード

Base64 文字列を貼り付けると、デコードしたテキストがすぐに読めます。改行、data: の接頭辞、URL セーフな文字、省略された = パディングは自動で処理し、エラーは問題の文字の位置を正確に示します。

無料 登録不要・制限なし ローカル アップロードなし 自動 PNG、PDF、ZIP、JSON などを判別 更新日 2026/10/27
入力 0 B出力 0 Bサイズ –

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

Base64 をデコードする手順

  1. Base64 を 入力 · Base64 のボックスに貼り付けます。改行、空白、前後の引用符、data:...;base64, の接頭辞は付いたままでかまいません。デコーダーが取り除きます。
  2. デコードしたテキストが 出力 · テキスト に表示されます。ステータス行には 有効な Base64、バリアント(Standard または Base64URL)、デコード後のバイト数が表示され、推定形式 には検出した内容の種類が出ます。
  3. テキストが文字化けしている場合は、文字コード を変えるか 自動検出 を選びます。
  4. 内容が JSON なら、JSON を整形 でインデントして読みやすくできます。
  5. 出力をコピー を押すか、ダウンロード でデコードしたバイト列をファイルとして保存します。拡張子は検出した種類に従うので、JSON は decoded.json、PNG は decoded.png として保存されます。

入れ替え を押すと、デコードしたテキストが入力欄に戻り、エンコードに切り替わります。文字列が往復で元に戻るかを手早く確かめられます。

デコーダーが受け付けるもの

Base64 がきれいな形で届くことはまれです。メールからは 76 文字で折り返され、JSON ファイルからは引用符付きで、URL からはパーセントエンコードされて、トークンからはパディングなしでやって来ます。デコーダーは、設定なしでこれらすべてを受け付けます。

貼り付けたもの得られる結果何が起きたか
SGVsbG8gV29ybGQHello World不足していた = を補い、ステータス行でその旨を表示
8J-Riw👋URL セーフの - と _ を認識し、バリアントを Base64URL と表示
data:text/plain;base64,SGk=Hidata URI の接頭辞を除去
"SGVsbG8="Helloコードや JSON 由来の引用符を除去
SGVsbG8%3DHelloURL エンコードされた %3D を = として読み取り
SGVs(改行)bG8=Hello改行と空白を読み飛ばし

デコーダーはこうした包み方の違いには寛容で、それ以外には厳格です。アルファベット以外の文字があると、その文字と位置を示すエラーを出して止まります。ライブラリによっては不正な文字を黙って読み飛ばし、壊れた出力を返すものもあります(下のコードのセクションを参照)。

URL セーフなトークンについては、Base64URL デコーダー でアルファベットを、Base64 と Base64URL の違い で両者の違いを説明しています。

デコードした Base64 がファイルだった場合

Base64 はどんなバイト列でも運べるため、画像や文書を表す Base64 文字列も多くあります。ツールはデコードしたデータの先頭バイトを既知のファイルシグネチャ(マジックナンバー)と照合し、結果を 推定形式 として表示します。PNG、JPEG、PDF、ZIP、gzip、JSON、XML などです。バイナリ形式の場合は印字可能な部分のプレビューを表示し、バイナリデータであることを示して、Base64 から画像へ や Base64 から PDF へ など適切なツールへのリンクを出します。どちらの場合も、ダウンロード では元のバイト列を保存します。

Base64 文字列の先頭を見れば、デコードする前に形式がわかることもよくあります。

Base64 の先頭デコード後のバイト形式
iVBORw0KGgo89 50 4E 47 0D 0A 1A 0APNG 画像
/9j/FF D8 FFJPEG 画像
JVBERi0%PDF-PDF 文書
UEsDBAPK 03 04ZIP、DOCX や XLSX も
H4sI1F 8B 08gzip データ(gzip Base64 デコーダー)
eyJ{"JSON、多くは JWT のセグメント
PD94bWwg<?xmlXML

ほかのシグネチャは よく見る Base64 の接頭辞 に一覧があります。種類のわからないファイルなら、Base64 からファイルへ が形式を判定してプレビューします。

文字コード:文字化けを直す

Base64 が保存しているのはバイト列で、どの文字コードで文字をバイト列にしたかについては何も語りません。デコーダーは UTF-8 を前提にしており、最近のデータのほとんどではそれで正解です。間違っている場合は、見てわかる症状が出ます。

  • � が表示され、「一部のバイトが UTF-8 として不正です」と注意が出る。 テキストは従来の文字コードで書かれています。Y2Fm6Q== は UTF-8 では caf�、ISO-8859-1 や Windows-1252 では café と読めます。z/Do4uXy のようなロシア語のテキストは、Windows-1251 で Привет と表示されます。日本語のテキストなら Shift_JIS や EUC-JP を試してください。
  • 1 文字ごとにドットや隙間が入る。 UTF-16 で、ASCII の文字の後ろにゼロバイトが続いています。SABlAGwAbABvAA== は UTF-16LE で Hello です(Base64 から UTF-16 へ)。
  • 出力に é、ü、’ が出る。 デコード自体は正しく行われています。Base64 にされる前に、どこかの処理が UTF-8 を Latin-1 と誤読し、その結果を UTF-8 で保存し直したため、テキストが二重エンコードされていたのです。Y2Fmw4PCqQ== はまさに café にデコードされます。元のデータの側で直してください。

自動検出 は、まずバイト順マークを確認し、次にバイト列が UTF-8 として有効かを、さらに UTF-16 のゼロバイトのパターンを調べます。Windows-1251 や KOI8-R のような 1 バイトのコードページはどんな検出器にも同じように見えるので、元のデータがわかっているなら手動で選んでください。

エラーメッセージとその意味

メッセージよくある原因対処
位置 21 に無効な文字 . がありますJWT をまるごと貼り付けた。ドットは 3 つのセグメントの区切りセグメントを 1 つだけデコードするか、JWT デコーダー を使う
位置 8 に無効な文字 "\\" があります/ が \/ とエスケープされた JSON から Base64 をコピーした\/ を / に置き換える
標準(+ /)と URLセーフ(- _)の文字が混在しています2 つの文字列がつながったか、変換が中途半端Base64URL から Base64 へ でどちらか一方のアルファベットに変換する
パディング(=)は末尾にしか置けませんSGk=SGk= のように 2 つの Base64 の値がくっついている分割してそれぞれデコードする
長さが不正です。1 文字多いか少ないようですコピーで文字が欠けたか増えたコピーし直すか、Base64 の修復 を試す

それぞれのケースは Base64 のエラーガイド で詳しく説明しています。文字列のどの文字やパディングに問題があるのかを突き止めるには、Base64 バリデーター を使ってください。

JavaScript、Python、コマンドラインでの Base64 デコード

atob() は 1 バイトにつき 1 文字の「バイナリ文字列」を返すので、UTF-8 のテキストには TextDecoder の手順が必要です。atob はパディングの欠落は受け付けますが、URL セーフの - と _ には InvalidCharacterError を投げます。

const s = "R3LDvMOfZSDwn5GL";
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)));
// "Grüße 👋"

// Node.js accepts both alphabets
Buffer.from(s, "base64").toString("utf8");          // "Grüße 👋"
Buffer.from("8J-Riw", "base64url").toString("utf8"); // "👋"

Python はパディングのない入力に binascii.Error: Incorrect padding を送出するので、パディングは自分で補います。

import base64

s = "SGVsbG8"
base64.b64decode(s + "=" * (-len(s) % 4)).decode("utf-8")
# 'Hello'
base64.b64decode("SGVs*bG8=", validate=True)
# binascii.Error: Only base64 data is allowed

validate=True を付けないと、Python は * を捨てて b'Hello' を返します。Node の Buffer.from も同じ振る舞いをするので、壊れた文字列がエラーなしでデコードされてしまうことがあります。

コマンドラインでは次のとおりです。

printf '%s' 'R3LDvMOfZSDwn5GL' | base64 -d
base64 -d message.b64 > message.bin

1 行目は Grüße 👋 を出力します。古い macOS ではフラグが -D です。言語ごとの詳細:JavaScript、Node.js、Python、PHP。

よくある質問

Base64 文字列をデコードするには?

上の入力欄に貼り付けるだけで、デコードしたテキストがすぐに表示されます。コードでは Base64 をバイト列にデコードし、そのバイト列を UTF-8 として読みます。Python なら base64.b64decode(s).decode()、Node.js なら Buffer.from(s, "base64").toString() です。

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

� はバイト列が UTF-8 として不正であることを意味し、テキストはおそらく別の文字コードでエンコードされています。文字コードのメニューで Windows-1252、Windows-1251、UTF-16LE、日本語なら Shift_JIS や EUC-JP を試してください。é の代わりに é が出る場合は、エンコードされる前の時点ですでにテキストが文字化けしていました。

= のパディングがない Base64 もデコードできますか?

はい。デコーダーが不足している = を自分で補い、ステータス行でその旨を知らせます。パディングは最後のブロックを埋めるだけなので、長さから必ず復元できます。

デコード結果が意味不明な文字の羅列です。Base64 が壊れているのですか?

多くの場合、データはファイルです。ステータス行の「推定形式」欄を確認してください。画像、PDF、アーカイブなどのバイナリ形式なら、ツールがファイルをプレビューしたり保存したりできるデコーダーへのリンクを表示します。

Base64 は鍵なしでデコードできますか?

いつでもできます。Base64 はアルファベットが公開されたエンコード方式なので、秘匿性はありません。デコード結果がまだランダムに見える場合は、エンコードの前にデータが暗号化または圧縮されています。