コンテンツへスキップ

JWTデコード

ブラウザ内処理ファイルはアップロードされませんこの処理はブラウザ内で完結します。ファイルはどこにも送信されません。

JWTを貼ると、ヘッダーとペイロードを整形して表示し、発行日時と有効期限を読める形に直します。署名の検証はできないので、そのことも画面に出しています。

入力

⚠️ この道具は署名を検証しません(発行者の鍵が必要で、ここにはありません)。中身が読めることは、そのトークンが正しいことを意味しません。

「Bearer 」が付いたままでも読み取ります。

⚠️ 本番のトークンを貼るのは避けてください。この道具は送信しませんが、値そのものが資格情報で、画面共有や録画、ブラウザの履歴に残ります。

出力

トークンを貼ると、ヘッダと本体の中身、有効期限の判定がここに出ます。
貼ったトークンeyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMiLCJl….dBjftJeZ4CVP…読める形にalg: HS256sub: "123"exp: 2026-09-05 09:00(有効期限切れ)署名の検証はできません。鍵が要るので、そのことも画面に出しています。
JWTのヘッダーとペイロードは暗号化ではなく、Base64URLで符号化されているだけ。誰でも読めるので、秘密をペイロードに入れてはいけない。
ツール一覧

特長

期限を日時で見せる
exp・iat・nbf はUnix秒で入っているため、そのままでは読めません。日時に直したうえで、いまの時刻と突き合わせて「期限切れ」「まだ有効」を判定します。
日本語のクレームが化けない
base64を解いた結果はバイト列で、UTF-8として解き直さないと日本語が壊れます。名前や所属が入ったトークンでも、そのまま読める形で出します。
できないことを隠さない
署名の検証には発行者の鍵が必要で、この道具は持っていません。「読めた=正しい」ではないことを、結果より前に常に表示します。alg が none のトークンには追加で警告を出します。

使い方

  1. トークンを貼る

    「Bearer 」が付いたままでも構いません。取り除いて読みます。

  2. 中身を読む

    ヘッダーとペイロードが整形されて出ます。日時のクレームは下の欄で読める形に直されます。

  3. 期限を確かめる

    有効期限があれば、いまの時刻と比べた状態が上に出ます。

用語と読み方

3つの部分
ピリオドで区切られた「ヘッダー・ペイロード・署名」です。前の2つはただのbase64urlなので、誰でも読めます。秘密にしたい情報をペイロードに入れてはいけないのはこのためです。
exp / iat / nbf
順に、有効期限・発行日時・有効開始日時です。いずれもUnix秒(1970年1月1日からの秒数)で入っています。
alg
署名の方式です。HS256は共通鍵、RS256は公開鍵方式。noneは「署名なし」で、受け取る側がこれを許すと誰でも偽造できます。
sub / aud / iss
順に、そのトークンが指す相手(多くは利用者のID)、使ってよい宛先、発行した主体です。認証が通らないときは、まず aud と iss が受け取る側の設定と一致しているかを見ます。期限より先に、この2つの不一致で弾かれていることがよくあります。
なぜbase64urlなのか
JWTはURLやHTTPヘッダーに載ることを前提にしているためです。通常のbase64が使う「+」「/」「=」はURLの中で別の意味を持つので、それぞれ「-」「_」と省略に置き換えた変種を使います。手元のbase64変換で読めないことがあるのはこの違いによります。
ヘッダーの kid
署名に使った鍵の名前です。発行者が複数の鍵を持ち回している場合、受け取る側はこの名前で使う鍵を選びます。鍵を入れ替える途中で認証が通らなくなったときは、ここが古い鍵を指していないかを確かめてください。

よくある質問

トークンは送信されますか。
されません。base64を解いてJSONにするだけの処理で、すべてブラウザの中で行われます。
本番のトークンを貼っても大丈夫ですか。
この道具は送信しませんが、勧めません。JWTは資格情報そのもので、画面共有や録画、ブラウザの履歴に残ります。期限が切れたものか、検証用のものを使ってください。
署名が正しいかを確かめられますか。
できません。発行者の鍵が必要で、鍵を預かる仕組みはここにありません。検証はトークンを受け取る側のサーバーで行うものです。
読めたのに認証が通りません。
読めることと有効であることは別です。期限切れ、対象(aud)や発行者(iss)の不一致、署名の不一致のいずれかを疑ってください。
JWTの中身は暗号化されていないのですか。
されていません。署名は「途中で書き換えられていないこと」を示すもので、「中身を隠すこと」ではありません。ヘッダーとペイロードはbase64urlを解けば誰でも読めます。隠したい値がある場合は、暗号化する別の仕様(JWE)を使うか、そもそもトークンに入れずにサーバー側で引く設計にしてください。
ログアウトしたのに、そのトークンがまだ使えます。
JWTは「発行した時点で有効期限まで有効」という作りで、あとから取り消す仕組みを持っていません。ログアウトで無効にしたい場合は、受け取る側が失効リストを持つか、有効期限を短くして更新用のトークンで回す設計が要ります。この性質は実装の不備ではなく、仕様上の前提です。
有効期限が切れているかを、ここで判定できますか。
exp の値を人が読める日時として表示するので、現在時刻と比べれば分かります。ただし判定そのものは受け取る側のサーバーが行うもので、しかもサーバーの時計とお使いの端末の時計がずれていると結果が変わります。境目に近い場合は、この画面だけで結論を出さないでください。
スポンサーリンク