本文へ移動
ZEKILO Dev

JWTデコーダー

JWTを貼り付けると、ヘッダーとペイロードを展開し、有効期限を日付で表示します。

入力はブラウザの外に出ませんRFC 7519RFC 7515基準日 2026.10.03

デコードは署名の検証ではありません。JWTの内容は誰でも読めるため、秘密情報を入れないでください。

JWT

Escを押してからTabを押すと、入力欄から移動できます。

ヘッダー

ペイロード

署名

署名
Base64URL—
長さ—
アルゴリズム (alg)—

シークレットはこのブラウザ内だけで使い、保存しません。

JWTデコーダーの使い方

  1. 1入力欄にJWTを貼り付けるか、「例を入れる」を押します。先頭に Bearer が付いていてもかまいません。
  2. 2ヘッダーとペイロード、exp・nbf・iat の日付を確認します。タイムゾーンを変えると日付の表記が変わります。
  3. 3「コピー」でヘッダーやペイロードをコピーするか、「ダウンロード」でペイロードを .json ファイルとして保存します。

JWTデコーダーのオプション

タイムゾーン
exp・nbf・iat の日付を表示するタイムゾーンです。ブラウザ(既定)、UTC、KST、JSTから選びます。ブラウザのタイムゾーンは UTC+09:00 のようにUTCとの差で表記します。
HS256・HS384・HS512 署名検証用のシークレット
シークレットを入力するとHMAC署名を計算し、「署名一致」または「署名不一致」を表示します。シークレットは保存しません。RS256・ES256などの公開鍵アルゴリズムは検証しません。

JWTの構造

JWTは RFC 7519 で定められたトークン形式で、最もよく使われる署名付きトークン(JWS)の形は RFC 7515 で定められています。header.payload.signature のようにドットで区切った3つの部分からなり、それぞれパディングのないBase64URLです。ヘッダーには署名アルゴリズム(alg)が、ペイロードにはクレーム(sub、exp など)がJSONで入っています。

exp(有効期限)、nbf(有効開始)、iat(発行日時)は、1970-01-01 00:00:00 UTCからの秒数です。このツールはこの値を選んだタイムゾーンの日付に変換し、現在時刻と比べて期限切れかどうかをお知らせします。現在時刻が exp と同じか、それより後であれば期限切れです。

デコードと署名の検証は別のものです

デコードは署名の検証ではありません。JWTの内容は誰でも読めるため、秘密情報を入れないでください。ヘッダーとペイロードは暗号化されているわけではなく、Base64URLで書かれたJSONなので、トークンを見た人は鍵がなくても内容を読めます。

署名は、内容が書き換えられていないことを確認するための仕組みです。HS256・HS384・HS512は、1つの共有シークレットで署名と確認を行うHMAC方式(RFC 7518)なので、シークレットを入力すれば、このブラウザで署名が合っているかを計算できます。実際のサービスでは、サーバーが署名とあわせて exp、発行者(iss)、対象(aud)をすべて確認する必要があります。

JWTデコーダーの例

  • Bearer が付いたトークンのヘッダー

    Authorization ヘッダーの値をそのまま貼り付けても、Bearer と前後の空白を取り除いて読み取ります。

    入力

    Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlpFS0lMTyIsImlhdCI6MTc2NzIyNTYwMCwiZXhwIjoxNzY3MjI5MjAwfQ.218DR4r7DRNkKO3XJcQYXE0ztwbqxYMeQpkIp9S18oE

    出力

    {
      "alg": "HS256",
      "typ": "JWT"
    }
  • 同じトークンのペイロード

    iat 1767225600 は 2026-01-01 00:00:00 UTC、exp 1767229200 は 2026-01-01 01:00:00 UTC です。2026-10-02 時点では期限切れのトークンです。

    入力

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlpFS0lMTyIsImlhdCI6MTc2NzIyNTYwMCwiZXhwIjoxNzY3MjI5MjAwfQ.218DR4r7DRNkKO3XJcQYXE0ztwbqxYMeQpkIp9S18oE

    出力

    {
      "sub": "1234567890",
      "name": "ZEKILO",
      "iat": 1767225600,
      "exp": 1767229200
    }
  • シークレットで署名を確認(HS256)

    シークレット zekilo-secret を入力した場合です。別の値(例:wrong)を入力すると「署名不一致」になります。

    入力

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlpFS0lMTyIsImlhdCI6MTc2NzIyNTYwMCwiZXhwIjoxNzY3MjI5MjAwfQ.218DR4r7DRNkKO3XJcQYXE0ztwbqxYMeQpkIp9S18oE

    出力

    署名一致
  • JWTの形式ではない入力

    入力

    abc.def

    出力

    ドットで区切った部分が2個です。JWTは3つです。

例は、このツールを検証している基準ケースの値です。

JWTデコーダーのよくある質問

入力したデータはサーバーに送信されますか?

いいえ。入力と結果はこのブラウザ内だけで処理され、保存もしません。再読み込みすると消えます。

デコードできれば正しいトークンということですか?

いいえ。デコードは署名の検証ではありません。JWTの内容は誰でも読めるため、秘密情報を入れないでください。ヘッダーとペイロードはBase64URLで書かれているだけなので、鍵がなくても読めます。トークンを信頼できるかどうかは、サーバーが署名や exp などを確認して判断する必要があります。

トークンの有効期限はどこで分かりますか?

ペイロードの exp が有効期限です。このツールは exp・nbf・iat の数値(1970-01-01 UTCからの秒数)を日付に変換して表示します。exp を過ぎていれば「期限切れ(n日前)」、nbf がまだ来ていなければ「まだ有効ではありません」と表示します。

「署名のないトークンです」という警告は何ですか?

ヘッダーの alg が none の場合、そのトークンには署名がありません。誰が書いたのか、途中で書き換えられていないかを確認する方法がないため、サーバーはこのようなトークンを受け入れてはいけません。

RS256・ES256のトークンも検証できますか?トークンを作成できますか?

署名の検証は、共有シークレットを使うHS256・HS384・HS512だけに対応しています。RS256・ES256などの公開鍵方式のトークンは、内容の確認だけができます。トークンを作成したり、署名し直したりする機能はありません。

「JWTの形式ではありません」と表示されます。

JWTはドットで区切った header.payload.signature の3つの部分でできており、それぞれBase64URLです。部分が3つでない場合や、Base64URLではない文字がある場合はエラーになります。5つの部分からなる暗号化トークン(JWE)は、鍵がなければ内容を見られないため解読しません。

処理方法・標準

  • 処理する場所:このブラウザ(お使いの端末)。送信も保存もしません。
  • 標準: RFC 7519 · RFC 7515
  • エンジン: ZEKILO Dev Base64URLデコーダー・JSON出力器 (自社実装) · Web Crypto API(HMAC署名の検証) (ブラウザ内蔵)
  • ヘッダーとペイロードの数値は書かれたとおりに表示します。大きな整数も変わりません。
  • 現在時刻が exp と同じか、それより後であれば期限切れとして扱います。
  • シークレットはUTF-8のテキストとして読み取ります。
  • 基準日 2026.10.03
  • 変更履歴: 2026.10.03 公開
オープンソースライセンス →
結果がおかしい場合は、エラーを報告する(入力内容は添付されません)