Base64 デコーダーへ移動

RFC 4648 §5 · base64url

Base64URL デコード、パディング修復まで。

JWT、URL パラメータ、WebAuthn のチャレンジ、Gmail API などの URL セーフ Base64 を貼り付けると、- と _ を元に戻し、欠けた = パディングを補ってデコードします。JSON Web Token 全体を貼り付ければ、ヘッダーとペイロードが表に展開されます。

更新日 · すべてブラウザ内で動作

Base64URL デコードツール

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

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

Base64URL をデコードする方法

  1. 01

    base64url の値を貼り付ける

    URL セーフ Base64 文字列または JWT 全体を貼り付けます。- と _ の文字や欠けたパディングは自動で処理されます。

  2. 02

    デコード結果を確認する

    通常の値はテキストまたはバイト列にデコードされます。JWT はヘッダーとペイロードに分けられ、iat・nbf・exp は日時で表示されます。

  3. 03

    コピーまたはさらにデコード

    JSON をコピーしたり整形したりできます。ペイロードにさらにエンコードされた値があれば「入力へ送る」を押します。

Base64 と Base64URL の違い

標準 Base64 は URL やファイル名の中で意味を持つ + と / を使い、クエリ文字列では パーセントエンコードが必要な = でパディングします。RFC 4648 第 5 節で定義された Base64URL は、 これらの文字だけを入れ替え、値を URL の中でそのまま運べるようにしています:

標準 Base64 と Base64URL の違い
Base64Base64URL
値 62+-
値 63/_
パディング= が必須通常は省略
定義RFC 4648 §4RFC 4648 §5

残りの 62 文字は同じなので、変換は文字の入れ替えとパディングの追加だけです。

欠けたパディングを復元する

厳密なデコーダーの多くは、パディングのない入力を受け付けません。パディングを戻す規則は、文字列の長さを 4 で割った余りだけで決まります:

  • 余り 0:パディングは不要
  • 余り 2:== を追加
  • 余り 3:= を追加
  • 余り 1:正しい Base64 ではあり得ない。値が途中で切れている

このデコーダーはこの規則を自動で適用し、途中で切れた値は黙って誤った結果を返さずにエラーとして知らせます。

base64url が使われている場所

  • JSON Web Token:ヘッダー、ペイロード、署名はドットでつながれた 3 つの base64url セグメントです。署名は表示しますが、鍵が必要なため検証はしません。
  • WebAuthn とパスキー:チャレンジ、クレデンシャル ID、クライアントデータ。
  • OAuth PKCE:code_challenge は SHA-256 ダイジェストの base64url です。
  • Gmail API:メッセージ本文と添付ファイルは base64url でエンコードされています。
  • 短い ID やトークン:URL、Cookie、ファイル名の中で使われます。

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

# Python: urlsafe_b64decode still needs the padding back
import base64
def b64url_decode(s: str) -> bytes:
    return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))

// Node.js 16+
Buffer.from(token, "base64url").toString("utf8");

// Go
base64.RawURLEncoding.DecodeString(s)

// Java 8+: the URL decoder accepts unpadded input
Base64.getUrlDecoder().decode(s);

標準 Base64 やほかの言語については、メインの Base64 デコードページをご覧ください。

その他のデコーダー

Base64 をデコードするその他の方法

よくある質問

Base64URL デコード:よくある質問。

Base64URL をデコードするには?

- を + に、_ を / に置き換え、長さが 4 の倍数になるまで = でパディングしてから、通常の Base64 としてデコードします。このページはこの 3 つを自動で行うので、値を貼り付けるだけで結果がすぐに表示されます。

Base64URL と URL エンコードは同じですか?

いいえ。URL エンコード(パーセントエンコード)は個々の文字を %XX の形にエスケープします。Base64URL は、バイト列を URL で安全に使えるアルファベットに変換する Base64 の一種です。値に %2B や %3D が含まれていれば、パーセントエンコードされた Base64 なので、先にパーセントエンコードを解除してください。

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

はい。トークン全体を貼り付けると、ヘッダーとペイロードが base64url からデコードされて表に表示され、タイムスタンプは日時に変換されます。署名は表示されますが、秘密鍵または公開鍵が必要なため検証はしません。

base64url を Python でデコードすると「Incorrect padding」になるのはなぜ?

base64.urlsafe_b64decode は、base64url では通常省略される = のパディングを必要とします。このページのコード例のように、デコード前に文字列へ "=" * (-len(s) % 4) を追加してください。