JWT のデコード(署名検証はしません)
エンコード・暗号処理はすべてブラウザ内で完結します。データは送信されません
JWT を header・payload・signature の3つに分けてそれぞれ整形し、iat / nbf / exp の時刻クレームを読める日時に変換して、期限切れかどうかも示します。ここははっきり書いておく必要があります:このツールはデコードのみで、署名は検証しません。 header と payload は Base64URL で符号化された JSON にすぎないので、誰かが中のフィールドを書き換え(たとえば role を admin に変え)、署名部分をそのままにしても、ここでは「デコード成功」と表示されます。デコードの成功は形式が合法であることだけを意味し、信頼できることまでは意味しません —— 信頼を判断するには、秘密鍵か公開鍵で署名を計算し直す必要があり、そのためにはこのツールが持たない、持つべきでもない鍵が要ります。出力の signatureVerification: not-performed は、その一文の機械可読版です。
機能
- header・payload・signature の3つに分けて整形表示
- iat / nbf / exp を ISO の読める日時に変換し、期限切れかどうかも表示
- パディングの欠けた Base64URL を許容し、Authorization ヘッダの Bearer 接頭辞や折り返しも認識
- 出力は 1 つの JSON で、フィールドはそのまま他所へコピーして使えます
- セグメント数が合わないときはどこが違うかを説明 —— 5 つなら暗号化された JWE トークンで、JWT ではないと指摘します
- 署名検証は行わず、そのことを出力に明記(多くの「オンラインデコード」ツールはこの点を教えてくれません)
使い方
- トークンを入力欄に貼り付けます(Bearer 接頭辞は付いていてもいなくても構いません)
- 結果はすぐに表示されます(Ctrl/⌘ + Enter や「実行」でも可)
- 3つのセグメントと時刻情報を確認し、exp が期限切れかどうかを見ます
- 「コピー」で結果を取り出せます —— ただし「トークンが有効」の証明と受け取らないでください
よくある質問
- デコードに成功したら、そのトークンは有効なのですか?
- いいえ。このツールは署名を検証しませんので、トークンが改ざんされていないか、信頼できる発行元のものかは判断できません。誰でも構文的に合法で中身がでたらめな JWT を作れますが、ここではそれも同じようにデコードに成功します。有効性の判断は必ずサーバー側で、秘密鍵(HS256)または公開鍵(RS256)による署名検証で行ってください —— フロントエンドの公開鍵で検証できるのは非対称署名だけで、HS256 の秘密鍵は絶対にブラウザへ置いてはいけません。
- payload は暗号化されていますか?
- いいえ。Base64URL は符号化であって暗号化ではなく、トークンを手にした人は誰でも中身を読めます(このツールがやっているのはまさにそれです)。ですからトークンにはパスワードや電話番号、身分証番号のような情報を入れないでください。機密性が必要なら JWE(暗号化トークン)を使ってください。そのトークンは5つのセグメントからなり、このツールではデコードできません。
- 結果に signatureVerification: not-performed と書かれているのはなぜですか?
- 署名の検証には鍵が必要で、その鍵はブラウザに置くべきものではないからです。ツールにできるのは「検証していない」と正直に伝えることで、「デコードできた = 検証済み」と誤解させることではありません。この行は、別のトークンに変えても performed にはなりません。
- 有効期限は誰の時計で判定していますか?
- お使いの端末の時計です。exp と現在時刻を比べて期限切れかどうかを判定するので、端末の時刻がずれていれば判定もずれます。本来の期限判定は常にサーバー側で行うべきです —— クライアントの時刻はいくらでも書き換えられます。
- トークンがデコードできないのはなぜですか?
- 最も多いのは、貼り付けるときに文字が欠けた場合です(トークンは長く、途中で切れやすいからです)。次に多いのは、5 セグメントの JWE 暗号化トークンをつかんでいる場合です —— あれは暗号化されており、JWT ではありません。なお JWT は Base64URL(+ と / の代わりに - と _ を使い、= のパディングを付けません)を使っており、この点は本ツールが仕様どおりに処理しています。
関連ツール
Base64 変換
エンコード・暗号テキストを Base64 に変換し、Base64 からテキストへ戻します。日本語や中国語、emoji も UTF-8 として正しく処理。すべてブラウザ内で完結し、内容は送信しません。
JSON 整形
整形JSON をオンラインで整形・圧縮し、構文エラーは行・列まで特定。キー名の再帰的な並べ替えにも対応。解析はすべてブラウザ内で行い、送信しません。
タイムスタンプ変換
変換・計算Unix タイムスタンプと日時を相互変換。秒とミリ秒を自動判別し、タイムゾーンを選べます。結果は行ごとにコピーでき、すべてブラウザ内で処理します。
URL エンコード
エンコード・暗号日本語や中国語、空白・記号を %XX にエスケープし、復元します。URL 全体とパラメータ値では方式が異なり、間違えるとリンクが開けません。ブラウザ内で処理します。
HTML 実体参照
エンコード・暗号< > & と引用符を HTML 実体参照に変換し、文字へ戻します。デコードは1回だけで、&lt; は山括弧ではなく < になります。すべてブラウザ内で処理します。
Unicode エスケープ
エンコード・暗号日本語や中国語、emoji などの非 ASCII 文字を \uXXXX・\xXX・&#xXXXX; のエスケープ表記に変換し、復元もできます。すべてブラウザ内で処理し、送信しません。