JWTデコーダー|トークンを貼るだけでヘッダー・ペイロードを整形表示(ブラウザ内で解析・送信なし)
JWT(JSON Web Token)を貼り付けると、ヘッダーとペイロードを整形表示し、exp や iat などの時刻クレームを日本時間(JST)に変換します。
処理はすべてブラウザ内で完結します。入力したトークンはサーバーに送信されないので、開発中のトークンも安心して貼り付けられます。
JWT を貼り付け(ヘッダー.ペイロード.署名)
※入力されたトークンはブラウザ内だけで解析し、サーバーには送信しません。また、署名の検証は行いません(中身の確認用です)。
トークンの中身(誰向けの、いつ切れるトークンか)をサッと確認したいときに便利です。
JWT(JSON Web Token)とは
JWT とは、認証・認可の情報を JSON で表し、コンパクトな文字列にまとめたトークンです。
ログイン後に発行され、API リクエストのたびに送ることで「このユーザーは認証済み」と伝える、といった用途で広く使われています。
見た目は xxxxx.yyyyy.zzzzz のようにピリオドで3つに区切られた文字列です。
JWTの3つの構成(ヘッダー・ペイロード・署名)
ピリオドで区切られた3つのパートは、それぞれ次の役割を持ちます。
| パート | 中身 | エンコード |
|---|---|---|
| ヘッダー | 署名アルゴリズム(alg)やトークン種別(typ) | Base64URL |
| ペイロード | ユーザーIDや有効期限などのクレーム | Base64URL |
| 署名 | 改ざん検知のための署名 | 秘密鍵/公開鍵で生成 |
ヘッダーとペイロードは Base64URL でエンコードされているだけなので、鍵がなくても誰でもデコードして中身を読めます。
つまりペイロードに秘密の情報(パスワードなど)を入れてはいけません。
「デコード」と「署名検証」は別物
このツールが行うのはデコード(中身の表示)だけで、署名の検証は行いません。
- デコード:Base64URL を戻して中身を読む。鍵は不要で、誰でもできる
- 署名検証:そのトークンが改ざんされていない・正しい発行者のものかを鍵で確かめる
デバッグで「中身を見たいだけ」ならデコードで十分です。一方、サーバー側で「このトークンを信頼してよいか」を判断する場面では、必ず署名検証が必要です。
各言語での署名検証の実装は、記事末尾の関連記事で解説しています。
ペイロードの主要なクレーム
ペイロードに入る代表的な項目(クレーム)の意味は次のとおりです。
| クレーム | 意味 |
|---|---|
iss | 発行者(issuer) |
sub | 主体(subject)。ユーザーIDなど |
aud | 想定利用者(audience) |
exp | 有効期限。これを過ぎると無効(エポック秒) |
iat | 発行時刻(issued at)(エポック秒) |
nbf | 有効開始時刻(not before)(エポック秒) |
exp / iat / nbf はエポック秒(10桁の数値)で入っています。上のツールでは、これらを自動で日本時間に変換し、exp が切れていないかも判定します。
エポック秒そのものの仕組みは、エポックミリ秒・エポック秒⇔日時 変換ツールで詳しく確認できます。
このツールの安全性(ブラウザ内処理)
JWT には認証情報が含まれるため、外部サービスに貼り付けるのは本来避けたいところです。
このデコーダーはJavaScript ですべてブラウザ内で処理しており、入力したトークンをサーバーへ送信しません。通信を切った状態でも動作します。
とはいえ本番の機密トークンの扱いには十分注意し、不要になったトークンは速やかに失効させましょう。
言語別のJWT検証・実装
中身を確認できたら、次はサーバー側での署名検証です。言語別の実装は以下で解説しています。



まとめ
- JWT はヘッダー・ペイロード・署名の3パートで構成される
- ヘッダー・ペイロードは Base64URL なので鍵なしで中身を読める(=秘密情報は入れない)
- デコード(中身の確認)と署名検証は別物。信頼判断には検証が必須
- 上のツールはブラウザ内で完結し、トークンをサーバーに送信しない
💡 ブックマークしておくと、API デバッグ中にトークンの中身や有効期限をすぐ確認できて便利です。
