JWTデコーダー|ペイロードと有効期限を日本語で即確認
JWTトークンをブラウザ内でデコードし、ヘッダー・ペイロード・有効期限を日本語で確認できる無料ツール。データはサーバーに送信されません。
このツールについて
使い方・特徴・補足情報
JWTデコーダーとは
JWT(JSON Web Token)は、認証や権限の情報を伝えるための標準トークン形式です。ドット区切りのヘッダー・ペイロード・署名で構成されます。
このデコーダーは、トークンを貼るだけで中身を読みやすい JSON で表示します。exp や iat の Unix 時刻は日本語の日時へ自動変換します。
トークンが現在有効かはバッジで一目で分かります。標準クレームには日本語の説明も付きます。
処理はすべてブラウザ内で完結し、本番トークンを外部へ送りません。
👤 こんな人におすすめ✨
認証を扱う開発者
✅ 楽になること
JWTの中身と有効期限の確認
✍️ 避けたい手間
有効期限切れや漏洩の不安
解決できる困りごと
- トークンを外部サイトに貼らずに中身を確認でき、情報漏洩のリスクを抑えられる
- 有効期限切れや iat/exp の取り違えを素早く確認できる
- 認証エラーの切り分けでヘッダーとペイロードを確認する時間を短縮できる
使い方
- JWTトークン(eyJ...で始まる文字列)を入力欄に貼り付ける
- ヘッダー・ペイロード・署名が自動でデコードされてJSON形式で表示される
- 有効期限バッジでトークンが現在有効かどうかを確認する
- 各セクションのコピーボタンでJSON内容をクリップボードにコピーする
使用例
標準的な JWT をデコード
ヘッダー・ペイロード・署名の 3 パーツを分けて表示し、sub / iat / exp の意味も補足する例です。
入力
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NSIsIm5hbWUiOiJ0YW5ha2EiLCJpYXQiOjE3NDgwMDAwMDAsImV4cCI6MTc0ODYwNDgwMH0.signature
出力
[Header]
{ "alg": "HS256", "typ": "JWT" }
[Payload]
{
"sub": "12345",
"name": "tanaka",
"iat": 1748000000, // 発行日時: 2025-05-23 17:33
"exp": 1748604800 // 有効期限: 2025-05-30 17:33
}
[Signature]
signature (HMAC-SHA256 で生成)
有効期限切れトークンの判定
exp が過去日時のトークンを貼り付けると「期限切れ」バッジが表示される例です。認証エラー切り分けに便利です。
入力
eyJ...exp:1600000000... のトークン
出力
[Status] 期限切れ(exp: 2020-09-13 20:26 / 現在より以前)
[Payload]
{ "sub": "user-42", "iat": 1599000000, "exp": 1600000000 }
活用シーン
APIデバッグ時のペイロード確認
API が返す JWT の中身を即座に確認できます。どのユーザーID(sub)や権限が入っているかを見て、認証の不具合を特定できます。
ログイン失敗の切り分け
401 が返るとき、exp 切れが原因の場合があります。exp を日時に変換して確認し、トークンの失効かどうかを判断できます。
JWTの学習・仕様の理解
Base64URL の仕組みや、iss・aud・jti などの標準クレームの意味を学べます。クレーム名の隣に日本語説明が出るので、仕様書なしで構造を掴めます。
OAuth・OpenID Connectの確認
アクセストークンや ID トークンは JWT で発行されます。認可サーバーが sub・iss・aud などを正しく設定しているかを目視で確認できます。
チームでのトークン内容共有
Base64URL のままでは読みにくく、伝達ミスの元です。デコードした JSON をコピーして共有すれば、内容を正確に伝えられます。
有効期限切れのトークン検出
ステージングで取得したトークンが期限切れでないかを確認できます。exp を日時に変換して表示するので、失効を即座に判定できます。
技術的な解説
補足: 仕組み
JWT は RFC 7519 の Base64URL 符号化に基づきます。ヘッダーとペイロードは atob() でデコードできます。
ただし atob() は URL-safe を受けないため、記号を戻し = を補ってから渡します。結果は JSON.parse() でオブジェクトにします。
exp などの Unix 時刻は Date に変換し、Date.now() と比べて有効期限を判定します。
もっと詳しく
署名は「復号」ではなく「検証」
JWT は暗号化されていません。ヘッダーとペイロードは Base64URL なだけで誰でも中身を読めるため、秘密情報を入れてはいけません。
3つ目の署名は改ざん検出用で、内容から署名を再計算して一致を確かめます。検証には鍵が要るため、本ツールはデコード専用です。
Base64URLと通常のBase64の違い
JWT は + / = を避ける Base64URL を使い、+→-・/→_ と置換します。そのため atob() にそのまま渡すと失敗します。
本ツールは内部で元に戻し、長さが4の倍数になるよう = を補ってから呼びます。手作業デコードが失敗するのは、たいていこの補完忘れです。
よくある質問
署名の検証はできますか?
本ツールはデコード(内容確認)専用です。署名検証には秘密鍵や公開鍵が必要なため安全性を考えてスコープ外としており、検証が要るときは専用ライブラリを使ってください。
JWE(暗号化JWT)には対応していますか?
JWE は暗号化された5パート形式で、復号に秘密鍵が要ります。本ツールは通常の3パート JWT のデコードのみ対応し、JWE を入れるとフォーマットエラーになります。
「期限切れ」と表示される場合はどうすれば?
exp の値が現在時刻より過去であることを意味します。ログイン画面から再認証してトークンを取り直すか、認証サーバーの有効期間の設定を確認してください。
トークンの内容はサーバーに送信されますか?
送信されません。処理はすべてブラウザ内で完結し、入力したトークンが外へ出ることはないため、本番トークンでも手元で確認できます。
関連ツール
同じカテゴリの他のツールも合わせてどうぞ。