decode | inspect | copy

> base64 デコーダー | paste | decode <

// 任意の Base64 文字列(標準・URL セーフ・パディングなし)を貼り付けて、UTF-8 テキストへ即座にデコード。処理はすべてブラウザ内で完結します。

0 文字
[AUTO]

フォーマット自動判定

標準 RFC 4648 Base64、URL セーフ Base64 (-_)、パディング不足を自動で検出します。設定不要 — 貼り付けるだけ。

[LOCAL]

100% ブラウザ内処理

Base64 文字列が端末から出ることはありません。サーバーアップロード・ログ・テレメトリは一切なし。トークン・認証情報・機密ペイロードも安全です。

[FAST]

即時デコード

入力中にデコード実行。UTF-8 マルチバイト文字、絵文字、JSON、XML、Base64 化されたバイナリに対応。入力サイズ無制限。

// Base64 デコードの仕組み

Base64 デコードアルゴリズム:

Base64 は 3 バイトのバイナリデータを、64 文字のアルファベット(A-Z, a-z, 0-9, +, /)から取った 4 文字の ASCII に変換します。デコードはその逆で、各文字を 6 ビット値に対応付け、4 つの 6 ビット値を組み合わせて元の 3 バイトを復元します。パディング = は長さを 4 の倍数に揃えるためのものです。本デコーダーはパディングあり・なし・URL セーフのいずれも受け付け、UTF-8 テキストとして結果を返します。

デコード例:

入力  : SGVsbG8sIEJhc2U2NCE=
ビット: 01001000 01100101 01101100 01101100
         01101111 00101100 00100000 01000010
         01100001 01110011 01100101 00110110
         00110100 00100001
出力  : Hello, Base64!

デコードの主な用途:

  • >JWT のヘッダー・ペイロード(署名前)のデコード
  • >Base64 エンコードされたメール添付ファイル(MIME)の読み取り
  • >Base64 URL パラメータ・OAuth state トークンの確認
  • >Data URI (data:text/plain;base64,...) からのテキスト抽出
  • >Base64 でバイナリをラップした API レスポンスのデバッグ

// よくある質問

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

上の 入力 エリアに Base64 文字列を貼り付けるだけです。自動デコード(デフォルトで有効)により、入力中に即座にデコードされ、出力 エリアに結果が表示されます。[DECODE] ボタンや Ctrl/Cmd + Enter でも実行できます。すべてローカルで処理されるため、JWT トークン、OAuth state、機密ペイロードを貼り付けても安全です。

このデコーダーが対応する Base64 バリアントは?

すべてです。以下を自動判定します:
標準 Base64 (RFC 4648) — アルファベット A-Z a-z 0-9 + /、パディング =
URL セーフ Base64 (RFC 4648 §5)+/ の代わりに -_。JWT、OAuth、Google API、AWS S3 プリサインド URL で使用。
パディングなし Base64 — 末尾の = が省略されたもの。JWT で一般的で、デコーダー側でパディングを補う必要があります。
空白許容 — 改行・タブ・スペースは除去してからデコード(メール本文の 76 列ラッピングに対応)。

判定結果はボタン下のバッジに表示されます。

デコードが文字化けしたりエラーになるのはなぜ?

主な原因は次の 5 つです:

1. そもそも Base64 ではない。 16 進数・Base32・URL エンコードと混同されがちです。Base64 は A-Z a-z 0-9 + / =(URL セーフは - _)しか使いません。%20 を含むならパーセントエンコード、0-9 a-f だけなら 16 進数の可能性が高いです。

2. 切り詰め。 パディング後の長さは 4 の倍数である必要があります。末尾の == が欠落すると「不正な長さ」エラーになります。本ツールは自動補完しますが、大幅に切れている場合は失敗します。

3. URL セーフと標準の混在。 +/-_ がすべて混在している場合、破損している可能性が高いです。

4. 二重エンコード。 1 度デコードしても文字化け、それ自体がまた Base64 の場合、もう一度デコードすると本来のテキストが得られます。

5. 元データが UTF-8 ではない。 Base64 はバイト列をデコードします。元が暗号化データや PNG のような生バイナリなら、テキスト表示は文字化けします。これは正常で、Base64 → ファイル系ツールを使ってください。

この Base64 デコーダーで JWT をデコードするには?

JWT は header.payload.signature の形式で、3 つの部分がドットで区切られています。すべて パディングなしの URL セーフ Base64 です。ペイロードを確認するには:

1. 2 つのドットの間、真ん中の部分をコピー。
2. 上のデコーダーに貼り付け。自動デコードが URL セーフ変換とパディング補完を行います。
3. isssubexpiat などのクレームを含む JSON ペイロードが得られます。

3 番目の署名部分は HMAC や RSA のバイナリ出力なので、テキストでは文字化けします。これは想定どおりです。署名検証まで行う場合は、専用の JWT デコーダー をご利用ください。

セキュリティ注記: デコードは検証ではありません。JWT のペイロードは誰でも読めます(仕様上の設計です)。署名は発行者の公開鍵や共有シークレットで別途検証します。

コマンドライン(bash・PowerShell・Python)で Base64 をデコードするには?

主要プラットフォームにはすべて Base64 デコーダーが標準搭載されています:

macOS / Linux (bash/zsh):
echo 'SGVsbG8=' | base64 -dHello。macOS で動かない場合は -D。URL セーフ入力は先に tr '_-' '/+' でパイプします。

Windows PowerShell:
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8='))

Python:
import base64
base64.b64decode('SGVsbG8=').decode('utf-8') # Hello
base64.urlsafe_b64decode(s + '===').decode() # URL セーフ + パディング自動補完


Node.js:
Buffer.from('SGVsbG8=', 'base64').toString('utf-8')

ブラウザ DevTools:
atob('SGVsbG8=') — どのコンソールでも動作。UTF-8 文字列は new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0))) でラップします。

PHP: base64_decode('SGVsbG8=')
Ruby: Base64.decode64('SGVsbG8=')
Go: base64.StdEncoding.DecodeString("SGVsbG8=")

機密トークンや認証情報をデコードするのに安全?

はい。サーバー側ツールより安全です。何もブラウザから外に出ません。 デコードは端末上の JavaScript で完結し、ネイティブ atob()TextDecoder API を使用します。ネットワーク通信・アップロード・ログ・分析は一切ありません。DevTools のネットワークタブを開けば、リクエストがゼロであることを確認できます。

ただし Base64 は暗号化ではありません。デコード用文字列を持っていれば誰でも復号できます。本ツール自体は安全ですが、次の点にご注意ください:
• 未期限切れの JWT のスクリーンショットを共有しない。
• ログ・画像・チャットに漏れた認証情報はローテーションする。
• OAuth state・CSRF トークン・セッション ID は無効化するまで機密扱い。

Base64 文字列自体が機密の企業・規制環境では、ページをオフライン保存(Cmd/Ctrl + S)して完全エアギャップで使用することも可能です。

'data:image/png;base64,iVBORw0KGgo...' のような Base64 Data URI をデコードするには?

Data URI の構文は data:[<mediatype>][;base64],<data> です。ペイロード部分だけをデコードするには:

1. カンマを探します。カンマの前はメタデータ(data:image/png;base64)、後ろは Base64 エンコードされたファイル本体。
2. カンマ以降のみをデコーダーに貼り付け。
3. バイナリ(PNG・JPG・PDF)の場合、生バイトのため文字化けします。これは正常です。
4. Data URI 画像を表示するには、完全な data:... URI をブラウザアドレスバーに貼り付けます — ブラウザが直接デコード・表示します。
5. 画像ファイルとして保存するには、専用の Base64 画像変換 をお使いください。PNG/JPG/WebP としてダウンロードできます。

Data URI は CSS background-image、インライン SVG、メール署名画像、JSON API に埋め込まれた PDF、Electron/VS Code 拡張のアイコンなどで頻繁に見られます。

Base64 エンコードとデコードの違いは?

エンコード は任意のバイナリやテキストを、印字可能 ASCII 文字だけで構成される文字列に変換します — テキストしか扱えない経路(メール、URL、JSON)で安全に運べます。デコード はその逆で、ASCII Base64 文字列を元のバイト列に戻します。

重要な性質:
ロスレス: decode(encode(x)) === x。データが失われることはありません。
暗号化ではない: 秘匿性はゼロ。誰でも復号可能。
サイズオーバーヘッド: 出力は入力の約 33% 増(3 バイト → 4 バイト)。
用途: JWT、MIME メール添付、HTTP Basic 認証、OAuth コード、S3 プリサインド URL、HTML/CSS インライン画像など。

このページはデコード専用です。逆方向(テキスト/ファイル → Base64)は Base64 エンコーダー、画像は 画像 → Base64 変換ツールをお使いください。

非常に大きな Base64 文字列やファイルはデコードできる?

はい、ブラウザのメモリ上限までなら可能です。入力長は制限なしで、50 MB の Base64 文字列(デコード後 ~37 MB)まで現代ノート PC でテスト済みです。パフォーマンス:

< 100 KB: 瞬時、UI 遅延なし。
1 – 10 MB: 50〜500 ms 程度。
10 – 100 MB: atob は同期処理のため、ブラウザが 2〜10 秒フリーズする可能性があります。auto-decode を無効にし、[DECODE] を手動で押してください。
> 100 MB: ブラウザのメモリ上限に達します。GB 規模はコマンドライン(base64 -d)推奨。

デコード結果がバイナリファイル(PNG・PDF・ZIP)の場合、テキスト出力欄は文字化けします。バイトをファイルとして保存するには Base64 画像変換、またはコマンドラインで echo '<base64>' | base64 -d > output.bin をお使いください。

オフラインでも動作する?

はい。一度ページが読み込まれれば、デコードはすべてクライアント側 JavaScript で行われ、ネットワーク通信は不要です。完全オフラインで使うには:

1. ページを保存: Ctrl+S(Windows/Linux)または Cmd+S(macOS)で「ウェブページ、完全」として保存。保存された HTML からデコーダーが動作します。
2. PWA としてインストール(対応ブラウザの場合): 「このアプリをインストール」を選択 — オフライン起動可能なランチャーが作成されます。
3. DevTools: ブラウザコンソールで atob('SGVsbG8=') を実行すれば、本ページなしでもデコードできます。

エアギャップのセキュリティ調査、ペンテストラボ、データ持ち出し制限のある企業環境、インターネットのないフライトや列車内で便利です。

// RELATED TOOLS

// OTHER LANGUAGES