無料オンライン JWT デコーダー — トークンを安全に確認
JSON Web Token を貼り付けて、デコードされた header、payload、claims、有効期限のステータスを即座に確認。すべてブラウザ上で処理され、トークンは外部に送信されません。
トークンはブラウザ内に留まります。サーバーには送信されません。
JWT とは?
JSON Web Token(JWT)は、二者間でクレームを受け渡すためのコンパクトで URL セーフな形式です。OAuth 2.0、OpenID Connect、現代の API 認証の標準 bearer トークン形式です。
JWT は3つの Base64URL エンコード部分をドットで区切って構成されます:header.payload.signature。Header は署名アルゴリズム(HS256、RS256 など)を宣言します。Payload は "exp"(有効期限)や "iat"(発行時刻)などの登録クレームとカスタムデータを持ちます。Signature はトークンが改ざんされていないことを保証します。
このデコーダーはトークンを分割し、header と payload を Base64URL デコードして JSON として解析し、"exp" クレームを現在時刻と比較してトークンが有効かどうかを判定します。
使い方
- テキストエリアに JWT を貼り付けます。入力と同時にデコードされます。
- デコードされた Header でアルゴリズムとトークンタイプを確認します。
- Payload の sub、exp、iat などのクレームとカスタムフィールドを確認します。
- ステータスバッジで期限切れか有効かを確認します。
- コピーボタンでフォーマット済み JSON を取得できます。
利用シーン
認証フローのデバッグ
ステージングでは動くがプロダクションで失敗する場合、各環境のトークンを貼り付けて claims を比較。issuer の違い、audience エラー、ロール不足などを即座に発見できます。
トークン有効期限の確認
API が 401 を返すとき、トークンの問題かエンドポイントの問題か分からない場合、ここに貼り付けて正確な UTC 有効期限を確認できます。
ログ共有前のトークン確認
Slack やバグレポートにトークンを貼る前に、デコードして共有すべきでない個人情報が含まれていないか確認します。
JWT 構造の学習
初めて JWT 認証を実装する場合、サンプルトークンを貼り付けて header、claims、signature の構造を理解できます。
セキュリティのヒント
署名を検証せずに JWT を信頼しない
デコードは検証ではありません。本ツールはトークンの内容を表示しますが、プロダクションでは発行者の公開鍵または共有秘密鍵で署名を検証する必要があります。
トークンの有効期間を短く
アクセストークンは数分で期限切れにし、refresh トークンで長期セッションを維持します。exp が数週間先のトークンはセキュリティ上の問題です。
payload に秘密情報を入れない
JWT は暗号化ではなくエンコードです。トークンを持つ人は誰でもデコードできます。パスワード、API キー、機密個人情報を claims に保存しないでください。
アルゴリズムヘッダーを確認
"alg":"none" 攻撃は周知の脆弱性です。header に "none" が表示されたら問題があります。プロダクションでは常に HS256、RS256 以上を使用してください。
例
標準 HS256 トークン
標準クレームを含む典型的なアクセストークン。
Input
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiZXhwIjoyMDAwMDAwMDAwfQ.signatureOutput
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "Jane Doe",
"exp": 2000000000
}期限切れトークン
exp が過去に設定されたトークン — デコーダーが期限切れとしてフラグを立てます。
Input
eyJhbGciOiJub25lIn0.eyJleHAiOjF9.signatureOutput
Header: { "alg": "none" }
Payload: { "exp": 1 }
ステータス: 期限切れ (1970-01-01T00:00:01.000Z)機能
- 入力と同時にデコード — ボタン不要
- 100% クライアントサイド、ページ読込後はネットワークリクエストなし
- 正確な UTC タイムスタンプで有効期限表示
- header、payload、signature を分離表示
- セクションごとにワンクリックコピー
- プライバシー優先:トークンはブラウザから出ません
よくある質問
プロダクションの JWT を貼り付けても安全ですか?
はい。ブラウザの atob() 関数を使い完全にローカルで動作します。DevTools のネットワークタブで確認できます:リクエストは一切発生しません。
署名の検証はできますか?
できません。署名検証には署名鍵が必要です。本ツールはトークンの内容のデコードと表示のみを行います。
"alg: none" とは何ですか?
トークンに暗号署名がないことを意味します。既知の攻撃ベクター(CVE-2015-9235)です。正規システムはプロダクションで "none" を使用しません。
JWE(暗号化トークン)をデコードできますか?
できません。本ツールは JWS(署名トークン)のみ対応です。JWE はドット区切りで5つの部分を持ち、復号鍵が必要です。
ヒントと関連ワークフロー
- Base64 payload を手動でデコードしたい場合はBase64 エンコーダー.
- デコードした JSON を整形したい場合はJSON フォーマッター.
- トークンのタイムスタンプを確認する場合はタイムスタンプ変換器.