ファイルを選択
  1. base64hub
  2. Web・トークンツール
  3. Base64URL デコード

Base64URL デコーダー:URL セーフな Base64 をデコード

トークンのセグメントや URL パラメーターなど、URL セーフな Base64 文字列を貼り付けて中身を読めます。- と _ は自動で認識し、省略された = のパディングも補います。

無料 登録不要・制限なし ローカル アップロードなし 自動 パディングを補完 更新日 2026/10/27
入力 0 B出力 0 Bサイズ –

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

Base64URL をデコードする手順

  1. 文字列を 入力 · Base64 に貼り付けます。ページを開くと URL セーフのサンプルが入っています。
  2. 結果を 出力 · テキスト で確認します。ステータス行にはバリアント(Base64URL または Standard)、デコード後のバイト数、検出された種類が表示されます。パディングが欠けていた場合は「不足していたパディングを自動で補いました。」と表示されます。
  3. トークンの中身として一般的な JSON は、JSON を整形 でインデントされます。
  4. ハッシュやランダムな ID などバイナリの内容の場合、ツールはバイナリデータであることを示し、適したデコーダーへのリンクを表示します。
  5. 結果は 出力をコピー または ダウンロード で取り出せます。

エンコードには Base64URL エンコーダー を使います。デコードせずに Base64URL 文字列を標準の Base64 に変換するには、Base64URL から Base64 へ を使ってください。

例

Base64URLデコード結果補足
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9{"alg":"HS256","typ":"JWT"}典型的な JWT ヘッダー
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImFkbWluIjp0cnVlfQ{"sub":"1234567890","name":"Ada","admin":true}JWT のペイロード。パディングを補完
c3ViamVjdHM_X2Qsubjects?_d_ は URL セーフ版の /
8J-Riw👋- は URL セーフ版の +
E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM32 バイトのバイナリSHA-256 ハッシュ。RFC 7636 の PKCE の例

最後の行のハッシュは、テキストとして出力しても意味がありません。Base64 から 16進数へ で開けば、13 d3 1e 96 ... のようにバイト列を確認できます。

パディングと、それを復元できる理由

Base64URL は通常 = なしで書かれます。それで失われる情報はありません。有効な文字列の長さは 4n、4n + 2、4n + 3 文字のいずれかで、その余りから、最後のグループに 1 バイトと 2 バイトのどちらが入っているかをデコーダーが判断できるからです。ツールはデコードの前に不足している = を補い、ステータス行でその旨を知らせます。

長さが 4n + 1 になることはありえません。「長さが不正です。1 文字多いか少ないようです。」というエラーが出たら、値をコピーしたときに、たとえばメールやログの改行位置で文字が欠けたか増えています。計算の詳細は パディングの解説 をご覧ください。

標準的なデコーダーの多くは、ここまで寛容ではありません。ブラウザの atob() は - と _ を InvalidCharacterError で拒否し、Python の base64.urlsafe_b64decode は = がないと Incorrect padding を送出します。

トークン、Cookie、URL パラメーター

  • JWT。 トークンは xxxxx.yyyyy.zzzzz のような形をしています。最初の 2 つの部分は Base64URL の JSON で、3 つ目は署名でバイナリです。ここで 1 つずつデコードするか、トークン全体を JWT デコーダー に貼り付けてください。JWT デコーダーは有効期限も表示し、署名も検証します。形式の説明は JWT の Base64 にあります。
  • Cookie とセッション ID。 フレームワークのセッション Cookie の中には、たとえば Flask のように、Base64URL のデータと署名をドットでつないだものがあります。デコードするのはデータ部分だけにしてください。
  • URL パラメーター。 OAuth の state、リダイレクト先、共有リンクには、Base64URL の JSON が入っていることがあります。値に %2F や %2B が含まれている場合はさらにパーセントエンコードされているので、先に URL デコードが必要です。

文字列に - や _ と + や / が混在していると、デコーダーは「標準(+ /)と URLセーフ(- _)の文字が混在しています」と表示して止まります。たいていは 2 つの値がつながったか、一方だけが途中まで変換されたことを意味します。

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

// Node.js
Buffer.from("c3ViamVjdHM_X2Q", "base64url").toString("utf8");   // "subjects?_d"

// Browsers with Uint8Array.fromBase64
new TextDecoder().decode(Uint8Array.fromBase64("c3ViamVjdHM_X2Q", { alphabet: "base64url" }));
import base64

def b64url_decode(s: str) -> bytes:
    return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))

b64url_decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9")   # b'{"alg":"HS256","typ":"JWT"}'

パディングを補う行は、Base64 として有効な長さの入力ならどれにも使えます。詳しくは Node.js での Base64、JavaScript、Python をご覧ください。

よくある質問

Base64URL をデコードするには?

上の入力欄に貼り付けるだけで、設定は不要です。コードでは - を + に、_ を / に置き換え、長さが 4 の倍数になるまで = を足して通常の Base64 としてデコードするか、Node の Buffer.from(s, "base64url") のような URL セーフ対応のデコーダーを使います。

文字「.」についてのエラーが出るのはなぜですか?

JWT をまるごと貼り付けています。JWT の 3 つの部分はドットで区切られており、それぞれ個別にデコードする必要があります。1 つの部分だけを貼り付けるか、トークン全体なら JWT デコーダー を使ってください。

Base64URL 文字列なのにステータス行に Standard と表示されるのはなぜですか?

その文字列には -、_、+、/ のどれも含まれていないため、どちらのアルファベットでも有効で、どちらでデコードしても結果は同じです。JWT のヘッダーの多くはこれに当てはまります。

値がまだパーセントエンコードされている場合は?

エンコードされた =(%3D)は処理できます。%2F など、それ以外のエスケープがある場合は値が URL エンコードを経ているので、先に URL デコーダー に通してください。