JWTデコーダー
JWTを貼り付けると、ヘッダーとペイロードを展開し、有効期限を日付で表示します。
デコードは署名の検証ではありません。JWTの内容は誰でも読めるため、秘密情報を入れないでください。
JWT
ヘッダー
ペイロード
署名
| Base64URL | — | |
|---|---|---|
| 長さ | — | |
| アルゴリズム (alg) | — |
シークレットはこのブラウザ内だけで使い、保存しません。
JWTデコーダーの使い方
- 1入力欄にJWTを貼り付けるか、「例を入れる」を押します。先頭に Bearer が付いていてもかまいません。
- 2ヘッダーとペイロード、exp・nbf・iat の日付を確認します。タイムゾーンを変えると日付の表記が変わります。
- 3「コピー」でヘッダーやペイロードをコピーするか、「ダウンロード」でペイロードを .json ファイルとして保存します。
JWTデコーダーのオプション
- タイムゾーン
- exp・nbf・iat の日付を表示するタイムゾーンです。ブラウザ(既定)、UTC、KST、JSTから選びます。ブラウザのタイムゾーンは UTC+09:00 のようにUTCとの差で表記します。
- HS256・HS384・HS512 署名検証用のシークレット
- シークレットを入力するとHMAC署名を計算し、「署名一致」または「署名不一致」を表示します。シークレットは保存しません。RS256・ES256などの公開鍵アルゴリズムは検証しません。
JWTの構造
JWTは RFC 7519 で定められたトークン形式で、最もよく使われる署名付きトークン(JWS)の形は RFC 7515 で定められています。header.payload.signature のようにドットで区切った3つの部分からなり、それぞれパディングのないBase64URLです。ヘッダーには署名アルゴリズム(alg)が、ペイロードにはクレーム(sub、exp など)がJSONで入っています。
exp(有効期限)、nbf(有効開始)、iat(発行日時)は、1970-01-01 00:00:00 UTCからの秒数です。このツールはこの値を選んだタイムゾーンの日付に変換し、現在時刻と比べて期限切れかどうかをお知らせします。現在時刻が exp と同じか、それより後であれば期限切れです。
デコードと署名の検証は別のものです
デコードは署名の検証ではありません。JWTの内容は誰でも読めるため、秘密情報を入れないでください。ヘッダーとペイロードは暗号化されているわけではなく、Base64URLで書かれたJSONなので、トークンを見た人は鍵がなくても内容を読めます。
署名は、内容が書き換えられていないことを確認するための仕組みです。HS256・HS384・HS512は、1つの共有シークレットで署名と確認を行うHMAC方式(RFC 7518)なので、シークレットを入力すれば、このブラウザで署名が合っているかを計算できます。実際のサービスでは、サーバーが署名とあわせて exp、発行者(iss)、対象(aud)をすべて確認する必要があります。
JWTデコーダーの例
Bearer が付いたトークンのヘッダー
Authorization ヘッダーの値をそのまま貼り付けても、Bearer と前後の空白を取り除いて読み取ります。
入力
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlpFS0lMTyIsImlhdCI6MTc2NzIyNTYwMCwiZXhwIjoxNzY3MjI5MjAwfQ.218DR4r7DRNkKO3XJcQYXE0ztwbqxYMeQpkIp9S18oE
出力
{ "alg": "HS256", "typ": "JWT" }同じトークンのペイロード
iat 1767225600 は 2026-01-01 00:00:00 UTC、exp 1767229200 は 2026-01-01 01:00:00 UTC です。2026-10-02 時点では期限切れのトークンです。
入力
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlpFS0lMTyIsImlhdCI6MTc2NzIyNTYwMCwiZXhwIjoxNzY3MjI5MjAwfQ.218DR4r7DRNkKO3XJcQYXE0ztwbqxYMeQpkIp9S18oE
出力
{ "sub": "1234567890", "name": "ZEKILO", "iat": 1767225600, "exp": 1767229200 }シークレットで署名を確認(HS256)
シークレット zekilo-secret を入力した場合です。別の値(例:wrong)を入力すると「署名不一致」になります。
入力
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlpFS0lMTyIsImlhdCI6MTc2NzIyNTYwMCwiZXhwIjoxNzY3MjI5MjAwfQ.218DR4r7DRNkKO3XJcQYXE0ztwbqxYMeQpkIp9S18oE
出力
署名一致
JWTの形式ではない入力
入力
abc.def
出力
ドットで区切った部分が2個です。JWTは3つです。
例は、このツールを検証している基準ケースの値です。
JWTデコーダーのよくある質問
入力したデータはサーバーに送信されますか?
いいえ。入力と結果はこのブラウザ内だけで処理され、保存もしません。再読み込みすると消えます。
デコードできれば正しいトークンということですか?
いいえ。デコードは署名の検証ではありません。JWTの内容は誰でも読めるため、秘密情報を入れないでください。ヘッダーとペイロードはBase64URLで書かれているだけなので、鍵がなくても読めます。トークンを信頼できるかどうかは、サーバーが署名や exp などを確認して判断する必要があります。
トークンの有効期限はどこで分かりますか?
ペイロードの exp が有効期限です。このツールは exp・nbf・iat の数値(1970-01-01 UTCからの秒数)を日付に変換して表示します。exp を過ぎていれば「期限切れ(n日前)」、nbf がまだ来ていなければ「まだ有効ではありません」と表示します。
「署名のないトークンです」という警告は何ですか?
ヘッダーの alg が none の場合、そのトークンには署名がありません。誰が書いたのか、途中で書き換えられていないかを確認する方法がないため、サーバーはこのようなトークンを受け入れてはいけません。
RS256・ES256のトークンも検証できますか?トークンを作成できますか?
署名の検証は、共有シークレットを使うHS256・HS384・HS512だけに対応しています。RS256・ES256などの公開鍵方式のトークンは、内容の確認だけができます。トークンを作成したり、署名し直したりする機能はありません。
「JWTの形式ではありません」と表示されます。
JWTはドットで区切った header.payload.signature の3つの部分でできており、それぞれBase64URLです。部分が3つでない場合や、Base64URLではない文字がある場合はエラーになります。5つの部分からなる暗号化トークン(JWE)は、鍵がなければ内容を見られないため解読しません。
関連ツール
処理方法・標準
- 処理する場所:このブラウザ(お使いの端末)。送信も保存もしません。
- 標準: RFC 7519 · RFC 7515
- エンジン: ZEKILO Dev Base64URLデコーダー・JSON出力器 (自社実装) · Web Crypto API(HMAC署名の検証) (ブラウザ内蔵)
- ヘッダーとペイロードの数値は書かれたとおりに表示します。大きな整数も変わりません。
- 現在時刻が exp と同じか、それより後であれば期限切れとして扱います。
- シークレットはUTF-8のテキストとして読み取ります。
- 基準日 2026.10.03
- 変更履歴: 2026.10.03 公開