てもとツール

JWTデコーダー|ペイロードと有効期限を日本語で即確認

JWTトークンをブラウザ内でデコードし、ヘッダー・ペイロード・有効期限を日本語で確認できる無料ツール。データはサーバーに送信されません。

ブラウザ内処理 完全無料 登録不要

このツールについて

使い方・特徴・補足情報

JWTデコーダーとは

JWT(JSON Web Token)は、認証や権限の情報を伝えるための標準トークン形式です。ドット区切りのヘッダー・ペイロード・署名で構成されます。

このデコーダーは、トークンを貼るだけで中身を読みやすい JSON で表示します。expiat の Unix 時刻は日本語の日時へ自動変換します。

トークンが現在有効かはバッジで一目で分かります。標準クレームには日本語の説明も付きます。

処理はすべてブラウザ内で完結し、本番トークンを外部へ送りません。

👤 こんな人におすすめ✨

認証を扱う開発者

✅ 楽になること

JWTの中身と有効期限の確認

✍️ 避けたい手間

有効期限切れや漏洩の不安

解決できる困りごと

  • トークンを外部サイトに貼らずに中身を確認でき、情報漏洩のリスクを抑えられる
  • 有効期限切れや iat/exp の取り違えを素早く確認できる
  • 認証エラーの切り分けでヘッダーとペイロードを確認する時間を短縮できる

使い方

  1. JWTトークン(eyJ...で始まる文字列)を入力欄に貼り付ける
  2. ヘッダー・ペイロード・署名が自動でデコードされてJSON形式で表示される
  3. 有効期限バッジでトークンが現在有効かどうかを確認する
  4. 各セクションのコピーボタンで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 の値が現在時刻より過去であることを意味します。ログイン画面から再認証してトークンを取り直すか、認証サーバーの有効期間の設定を確認してください。

トークンの内容はサーバーに送信されますか?

送信されません。処理はすべてブラウザ内で完結し、入力したトークンが外へ出ることはないため、本番トークンでも手元で確認できます。

関連ツール

同じカテゴリの他のツールも合わせてどうぞ。