JWTデコーダー

JWTを貼ると、ヘッダーとペイロードをJSONで表示します。exp・nbf・iatは日時に直して期限切れかどうかも判定。署名の検証はしません。日本語のペイロードも読めます。

読み込み中…

使い方と仕様

ピリオドで区切られた3つの部分(ヘッダー・ペイロード・署名)のうち、前の2つを Base64URL から UTF-8 の文字列に戻し、JSON として整形して表示します。日本語や絵文字を含むペイロードも、文字化けせずに読めます。末尾の = の有無、前後や途中の空白・改行、先頭の「Bearer 」、前後の引用符は無視します。

登録済みクレーム(RFC 7519 の iss・sub・aud・exp・nbf・iat・jti)は、日本語の説明つきの表にします。exp・nbf・iat は UNIX 秒として、ローカル時刻(この端末のタイムゾーン)・UTC・ISO 8601 に直し、いまの時刻との差を「あと2日3時間」「1時間30分前」の形で出します。exp は、いまの時刻がちょうど exp のときも期限切れとして扱います。値が1e11 以上のときは、ミリ秒で入っていないか確認する注記を付けます。

署名の検証は、このツールではしません。検証には署名用の鍵(共通鍵または公開鍵)が要るため、画面に出る「期限内」は、時刻の数字を見ただけの結果で、トークンが本物かどうかとは別の話です。alg が none のトークンは署名がないので、誰でも作れる旨を表示します。ピリオドが4個の暗号化された JWT(JWE)は、鍵がないと読めません。

JWT は、ログイン状態を表す秘密情報になりうるものです。貼り付けた文字列はこのページの中で処理するだけで、外には送られません。ただし、本番で使っているトークンは、チャットや課題管理ツールに貼らないほうが無難です。数値が桁の大きい整数のクレームは、JSON の整形で丸まることがあります。

よくある質問

「期限内」と出れば、そのトークンは有効ですか?
いいえ。署名を検証していないので、改ざんされていないかは分かりません。見ているのは exp の数字と、この端末の時計との比較だけです。サーバー側の判定とは、時計のずれの分だけ食い違うことがあります。
exp の日時が、1970年や遠い未来になります。
exp は UNIX 秒(1970年1月1日 0時 UTC からの秒数)で入る決まりです。ミリ秒(13桁)で入っていると、数千年先の日付になります。そのときは、1000で割った値が本来の秒です。
「ピリオドが4個」と言われます。
5つに分かれたトークンは、暗号化された JWT(JWE)で、中身は復号用の鍵がないと読めません。署名だけの JWT(JWS)は、ピリオドが2個です。

関連ツール