JWT デバッガー / デコーダー

任意の JWT を貼り付けると、ドット区切りの 3 部分がデコードされます — base64url のヘッダー、ペイロード、署名が整形済み JSON として表示され、 登録クレーム(exp、iat、nbf など)は現地時刻に変換されます。その後、WebCrypto API で署名を検証できます: シークレットによる HMAC(HS256/384/512)、または PEM 公開鍵による RSA/ECDSA(RS256/384/512、ES256/384/512)。 実験用の HS256 サンプルトークンもワンクリック。すべてローカルで動作 — トークン、シークレット、鍵がどこかに送られることは決してありません。
JWT トークン 形式:header.payload.signature(base64url 3 セグメント)。
警告:このトークンは alg:none を宣言しており、署名されていないことを意味します。 本番サービスは署名なしトークンを拒否しなければなりません — 信頼できないものとして扱ってください。
クレーム値解釈
シークレット
このコンテキストでは crypto.subtle を利用できないため、署名検証は無効です。 https: またはローカルファイルからページを開くと有効になります。デコードは引き続き機能します。
結果の読み方:ヘッダーは通常 alg(署名アルゴリズム)と typ を運びます。 現地時刻変換つきで表示される登録クレームは iat(発行時刻)、nbf(有効開始)、 exp(有効期限)です — 赤バッジは期限切れ、黄色は 24 時間以内の期限切れを意味します。 署名検証は発行者と同じ MAC を計算するか、貼り付けた RSA/ECDSA 公開鍵を確認し、トークンを 有効または無効とマークします。 検証できるのはブラウザーの WebCrypto 層が実装するアルゴリズムだけで、それ以外は推測せず未対応として報告されます。

主な登録クレーム:sub(サブジェクト)はトークンの対象となるユーザーやエンティティです — サンプルでは単なる数値 ID ですが、サービスはここにメール、ユーザー名、UUID を置くことがよくあります。 iss は発行者、aud は想定される受け手、jti はリプレイ防止に使う一意なトークン ID です。 これらのクレームは暗号化されていません。トークンを持つ誰でも読めるため、JWT ペイロードにパスワードや秘密を決して入れないでください。

プライバシー:デコードと検証はすべてこのページ内で WebCrypto API により行われます — トークン、 シークレット、公開鍵が送信されることは決してありません。alg:none トークンに対しては明確な警告を表示します: 署名なしトークンは実 API で受け入れてはなりません。