utilduck
Home · 開発 · JWTデコーダー

JWTデコーダー

下にJSON Web Tokenを貼り付けるとヘッダー・ペイロードがデコードされます。

このツールはJWTのヘッダー・ペイロードのみをデコードし、署名の検証は行いません。デコードできたトークンでも期限切れ・改ざん・無効の可能性があります。サーバー側で検証せずにJWTの内容を信用しないでください。

100%ローカル処理 — トークンはブラウザ内だけでデコードされ、どこにも送信されません。

-
-
発行日時 (iat)-
有効期限 (exp)-

JWT(JSON Web Token)について

JWTはドットで区切られた3つのbase64urlエンコード部分からなるURLセーフなトークンです。署名アルゴリズムを示すヘッダー、クレーム(データ)を保持するペイロード、トークンが改ざんされていないか検証する署名で構成されます。このツールはヘッダー・ペイロードを読みやすいJSONに戻してデコードします。

ヘッダー・ペイロードは暗号化ではなくbase64urlエンコードのみなので、秘密鍵なしで誰でもデコードして読むことができます。これは設計上想定された動作です。JWTの署名が防ぐのは改ざんであって内容を読めなくすることではないため、デコーダーだけではトークンが本当に有効かどうかは確認できません。

JWTのデコード方法と、exp・iatが意味するもの

JWT(JSON Web Token)は、ドットで区切られた3つのbase64url符号化パーツ(header.payload.signature)で構成されています。デコードするには文字列をドットで分割し、ヘッダーとペイロードをbase64urlデコードしてJSONとして解析します。秘密鍵は署名検証にのみ必要で、デコード自体には不要です。iat(発行時刻)・exp(有効期限)はUnixタイムスタンプで、人が読める日付に変換されます。

JWTをデコードする手順

  1. 3つのパーツすべてを含む完全なJWT文字列を入力欄に貼り付けます。
  2. ツールがトークンをドットで分割し、ヘッダーとペイロードをbase64urlデコードします。
  3. デコードされた各パーツはJSONとして解析され、読みやすい形に整形されます。
  4. iatやexpクレームがあれば、Unixタイムスタンプを読みやすい日付・時刻に変換します。
  5. 署名部分はそのまま扱われ、デコードや検証は行いません。検証には発行者の鍵が必要で、このツールは持っていません。

JWTの構造とタイムスタンプの変換

JWT = base64url(ヘッダー) + "." + base64url(ペイロード) + "." + 署名 ・ 人が読める日付 = new Date(expまたはiatの秒数 × 1000)
  • iat(発行時刻) = トークンが作成された時点を表す秒単位のUnixタイムスタンプ
  • exp(有効期限) = これ以降トークンを期限切れとみなすべき秒単位のUnixタイムスタンプ
  • base64url = +と/を-と_に置き換え、パディングを省略したURLセーフなbase64エンコーディングの派生形式

よく使われるJWTペイロードのクレーム

クレーム意味
iss発行者 — トークンを作成し署名した主体
sub主体 — トークンが指し示す対象(例: ユーザーID)
aud受信者 — トークンの想定される受け取り手
iat発行時刻 — トークンが作成された時点(Unixタイムスタンプ)
exp有効期限 — トークンが無効になる時点(Unixタイムスタンプ)

よくある質問

JWTをデコードできれば、そのトークンが有効で信頼できるということですか?

いいえ。デコードはヘッダーとペイロードの中身を表示するだけで、署名が本物かどうか・改ざんされていないかどうかは何も示しません。トークンが本物であることを確認するには、正しい鍵で署名を検証する必要があります。

パスワードなしで、なぜ誰でも自分のJWTペイロードを読めるのですか?

ヘッダーとペイロードは暗号化ではなくbase64urlエンコードされているだけなので、デコードは元に戻せる単なるテキスト変換で、セキュリティの壁にはなりません。この理由から、機密情報をJWTペイロードに入れてはいけません。

トークンのexp時刻が過去だった場合はどうなりますか?

expの値が過去のJWTは、チェックするシステムでは一般的に期限切れとみなされ拒否されるべきですが、このデコーダーは日付を表示するだけで、現在時刻との比較や拒否は行いません。その判断はサーバー側の責任です。

デコードしたトークンでエラーが表示されるのはなぜですか?

多くの場合、貼り付けたテキストが完全な形式のJWTになっていないことが原因です。区切りが欠けている、base64urlが不正、デコード結果が有効なJSONでないなどが考えられます。余分な空白や改行なしでトークン全体をコピーできているか確認してください。

このツールはヘッダーとペイロードのみをデコードして表示し、署名の検証や有効期限の比較は行いません。デコードに成功しても、検証済みの信頼できるトークンとは限りません。

Sources: RFC 7519 (JSON Web Token)

プライバシーと安全性

  • ブラウザ内で計算 — 入力した値はお使いの端末内だけで計算され、utilduckのサーバーへ送信されません。
  • 暗号化された通信 — すべてのページはHTTPSで配信され、通信経路で内容を読み取られません。
  • 第三者へ渡しません — 入力内容は解析・広告サービスへ渡されません。
  • 保存しません — 計算結果をサーバーに保存せず、アカウント登録も不要です。

最終更新: 2026-08-17