JWTデコーダー|ペイロードと有効期限を日本語で即確認
JWTトークンをブラウザ内でデコードし、ヘッダー・ペイロード・有効期限を日本語で確認できる無料ツール。データはサーバーに送信されません。
JWTトークンを貼り付けてください
ヘッダー・ペイロード・署名にデコードした結果が表示されます
このツールについて
使い方・特徴・補足情報
JWTデコーダーとは
JWT(JSON Web Token)は、認証や権限の情報を伝えるための標準トークン形式です。ドット区切りのヘッダー・ペイロード・署名で構成されます。
このデコーダーは、トークンを貼るだけで中身を読みやすい JSON で表示します。exp や iat の Unix 時刻は日本語の日時へ自動変換します。
exp と nbf を今の時刻と比べ、期限切れや有効期間前をバッジで示します。署名は確かめないので、時刻の上での判定です。
処理はすべてブラウザ内で完結し、本番トークンを外部へ送りません。
こんな人におすすめ
認証を扱う開発者
楽になること
JWTの中身と有効期限の確認
避けたい手間
有効期限切れや漏洩の不安
解決できる困りごと
- トークンを外部サイトに貼らずに中身を確認でき、情報漏洩のリスクを抑えられる
- 有効期限切れや iat/exp の取り違えを素早く確認できる
- 認証エラーの切り分けでヘッダーとペイロードを確認する時間を短縮できる
使い方
- JWTトークン(eyJ...で始まる文字列)を入力欄に貼り付ける
- ヘッダー・ペイロード・署名が自動でデコードされてJSON形式で表示される
- バッジで、期限切れ(exp)や有効期間前(nbf)でないかを確認する
- 各セクションのコピーボタンでJSON内容をクリップボードにコピーする
使用例
標準的な JWT をデコード
ヘッダー・ペイロード・署名の 3 パーツを分けて表示し、iat / exp の秒数に日時を添える例です。日時は端末の時刻帯(ここでは日本時間)で出ます。
入力
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NSIsIm5hbWUiOiJ0YW5ha2EiLCJpYXQiOjE3NDgwMDAwMDAsImV4cCI6MTc0ODYwNDgwMH0.signature
出力
[ヘッダー]
{
"alg": "HS256",
"typ": "JWT"
}
[ペイロード]
{
"sub": "12345",
"name": "tanaka",
"iat": 1748000000 (2025/05/23 20:33:20),
"exp": 1748604800 (2025/05/30 20:33:20)
}
[署名]
signature
有効期限切れトークンの判定
exp が過去の日時のトークンを貼り付けると「期限切れ」バッジが出る例です。認証エラーの切り分けで、まず時刻を疑えるかが分かります。
入力
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTQyIiwiaWF0IjoxNTk5MDAwMDAwLCJleHAiOjE2MDAwMDAwMDB9.signature
出力
[状態] 期限切れ
[ペイロード]
{
"sub": "user-42",
"iat": 1599000000 (2020/09/02 07:40:00),
"exp": 1600000000 (2020/09/13 21:26:40)
}
活用シーン
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 時刻(秒)は 1000 倍して Date に変換します。exp と nbf を Date.now() と比べ、状態を判定します。
もっと詳しく
署名は「復号」ではなく「検証」
JWT は暗号化されていません。ヘッダーとペイロードは Base64URL なだけで誰でも中身を読めるため、秘密情報を入れてはいけません。
3つ目の署名は改ざん検出用で、内容から署名を再計算して一致を確かめます。検証には鍵が要るため、本ツールはデコード専用です。
Base64URLと通常のBase64の違い
JWT は + / = を避ける Base64URL を使い、+→-・/→_ と置換します。そのため atob() にそのまま渡すと失敗します。
本ツールは内部で元に戻し、長さが4の倍数になるよう = を補ってから呼びます。手作業デコードが失敗するのは、たいていこの補完忘れです。
よくある質問
署名の検証はできますか?
本ツールはデコード(内容確認)専用です。署名検証には秘密鍵や公開鍵が必要なため安全性を考えてスコープ外としており、検証が要るときは専用ライブラリを使ってください。
JWE(暗号化JWT)には対応していますか?
JWE は暗号化された5パート形式で、復号に秘密鍵が要ります。本ツールは通常の3パート JWT のデコードのみ対応し、JWE を入れるとフォーマットエラーになります。
「期限切れ」と表示される場合はどうすれば?
exp の時刻を、端末の今の時刻がすでに過ぎていることを意味します。端末の時計が正しいかを確かめたうえで、トークンを取り直すか、発行側の有効期間の設定を確認してください。
トークンの内容はサーバーに送信されますか?
送信されません。処理はすべてブラウザ内で完結し、入力したトークンが外へ出ることはないため、本番トークンでも手元で確認できます。
関連記事
このツールの使い方や活用例をブログでも紹介しています。
関連ツール
同じカテゴリの他のツールも合わせてどうぞ。