無料オンラインJWTデコーダーと検査ツール
JWTのヘッダーとペイロードのクレームをブラウザ上ですぐにデコードします。機密情報を公開せずに、有効期限のタイムスタンプやトークン構造を確認できます。
JWTトークンをデコードする方法
トークンを貼り付けます。
Bearerの文字を除いたJWTをコピーして、ボックスに貼り付けてください。ドットで区切られた3つのパートがそろうと、すぐにデコードされます。
ヘッダーとペイロードを確認します。
どちらもインデント付きのJSONで表示されます。上のステータスバーには、アルゴリズム、「Expired」または「Active」、現地時間のexpとiatの日付が表示されます。
必要な部分をコピーします。
HeaderまたはPayloadパネルのコピーボタンで、JSONを取得できます。署名はテキストとして表示され、検証はされません。
よくある質問
デコード、検証、有効期限、トークンの安全な取り扱いについての回答です。
JWTトークンはどうやってデコードしますか?
上のボックスにトークンを貼り付けてください。2つのドットで分割され、最初の2つのパートがBase64urlデコードされてJSONになります。ヘッダーとペイロードがすぐに表示され、アルゴリズムやexp、iatの日付も確認できます。
シークレットキーなしでJWTをデコードできますか?
はい。ヘッダーとペイロードはBase64urlでエンコードされているだけで暗号化されていないため、トークンを持っていれば誰でも読めます。シークレットキーや秘密鍵が必要なのはトークンの署名や検証のためであり、クレームを読むためではありません。そのため、トークンにパスワードを含めてはいけません。
JWTのデコードと検証の違いは何ですか?
デコードはクレームを読み取ることです。検証は、シークレット(HS256)または公開鍵(RS256、ES256)で署名を再計算し、クレームが改ざんされていないことを証明することです。このツールはデコードのみを行うため、サーバー側のコードがJWTライブラリで検証するまで、アプリ内でトークンを信用しないでください。
ここにJWTを貼り付けても安全ですか?
有効なトークンはブラウザ内でデコードされ、PixConvertに送信されることはありません。アナリティクスにはCopyなどのクリックとデコードにかかった時間が記録されます。トークンが壊れている場合はエラーテキストも送信され、Chromeではデコードされた数文字が引用されることがあります。貼り付けるなら、期限切れのトークンやテスト用トークンが最も安全です。
expクレームとは何ですか?
expは、1970年1月1日からの経過秒数(Unix時間)で表した有効期限です。このデコーダーはそれをお使いのローカルタイムゾーンの日付で表示し、その時刻を過ぎるとトークンに「Expired」と表示します。expのないトークンは「Active」と表示されます。
トークンが有効でないのに「Active」と表示されるのはなぜですか?
「Active」は、expの時刻をまだ過ぎていないか、トークンにexpがないことを意味するだけです。このツールは署名、nbf(not before)、発行者、オーディエンスを検証しないため、偽造されたトークンやまだ有効でないトークンでも「Active」と表示されることがあります。これらのクレームはご自身で確認してください。
JWTが無効と表示されたり、セグメント数が足りないと表示されたりするのはなぜですか?
デコードには、2つのドットで区切られたちょうど3つのパートが必要です。Bearerの文字や引用符を削除し、コピーが途中で切れていないか確認してください。暗号化されたJWEトークンは5つのパートで構成されており、鍵がなければデコードできません。
署名アルゴリズムがわからなくてもJWTをデコードできますか?
はい。デコードの方法はどのアルゴリズムでも同じで、HS256、RS256、ES256、noneなど、ヘッダーのalgの値はステータスバーに表示されます。アルゴリズムを知っておく必要があるのは、ご自身のコードで署名を検証するときだけです。
アクセストークンとIDトークンの違いは何ですか?
IDトークンは常にJWTで、sub、email、nameなどのクレームを使って、誰がサインインしたかをアプリに伝えます。アクセストークンはクライアントがAPIを呼び出すためのもので、JWTの場合もあれば、不透明な文字列の場合もあります。ここでデコードできるのはJWT形式のトークンだけです。
署名がランダムな文字のように見えるのはなぜですか?
署名はHMAC、RSA、ECDSAのバイナリ出力を、Base64urlのテキストとして表したものです。それ自体には読み取れる意味はなく、ヘッダーとペイロードが変更されていないことを証明するだけです。このデコーダーは署名をテキストとして表示するだけで、検証は行いません。
アクセント付きの名前が文字化けするのはなぜですか?
現在のデコーダーはペイロードのバイトをUTF-8としてではなく1バイトずつ読み取るため、JoséはJoséと表示され、絵文字は奇妙な記号になります。トークン自体には問題ありません。sub、iat、expなどの通常のASCIIのクレームは影響を受けません。
ヘッダー、ペイロード、有効期限を確認できるJWTデコーダー
3つのパートからなるJWTのヘッダーとペイロードを整形済みのJSONで読み取り、alg、exp、iatをひと目で確認して、どちらのパートもワンクリックでコピーできます。

JWTのヘッダーとペイロードをJSONにデコード
トークンを貼り付けると、入力中にヘッダーとペイロードがインデント付きのJSONで表示されます。デコードボタンは不要です。生の署名はその下に表示され、各JSONパネルにはそれぞれコピーボタンがあります。
- 変更のたびにデコード、ボタン不要
- インデント2スペースのJSON
- ヘッダーとペイロードを個別にコピー

JWTの有効期限とアルゴリズムを確認
ステータスバーはexpを読み取って「Expired」または「Active」を表示し、ヘッダーのalgも並べて表示します。expとiatはお使いのローカルタイムゾーンの日付で表示されるため、Unix秒を変換する必要はありません。
- expクレームから「Expired」または「Active」を表示
- HS256やRS256などのalgを表示
- expとiatを現地時間で表示
デコードのみ、検証は行いません
このツールは署名を一切チェックせず、シークレットキーや公開鍵の入力欄もありません。クレームの確認にお使いいただき、トークンの検証はご自身のコードでJWTライブラリを使って行ってください。
Base64urlも自動で処理
各パートをBase64urlデコードします。-と_を元に戻し、不足しているパディングも補うため、編集なしでデコードできます。algがnoneで署名が空の署名なしトークンにも対応しています。
無料、アカウント不要
登録も制限もありません。アナリティクスにはCopyなどのクリックとデコードにかかった時間が記録されますが、有効なトークンは記録されません。デコードに失敗した場合はエラーテキストも送信され、その中にトークンの一部が含まれることがあります。
IDトークンとアクセストークン
OpenID ConnectのIDトークン、JWT形式のOAuthアクセストークン、APIセッショントークンをデコードできます。暗号化されたJWEトークンは5つのパートで構成されているため読み取れず、エラーが表示されます。
JWTデコーダーが役立つ場面
トークンの中身が読めると、認証フローのデバッグがぐっと楽になります。
APIのデバッグ
AuthorizationヘッダーからBearerトークンをコピーし、Bearerの文字を除いて貼り付けると、APIが受け取るユーザー、ロール、スコープを確認できます。
- アクセストークンのsub、roles、scopeクレームを確認
- 401エラーの原因が期限切れのトークンかどうかを確認
- ペイロードのJSONをテスト用フィクスチャにコピー
OAuth・OIDCの開発
OAuth 2.0やOpenID Connectのログインを構築する際にIDトークンとアクセストークンをデコードして、発行者、オーディエンス、emailのクレームが正しいか確認できます。
- id_tokenのiss、aud、emailを確認
- テスト環境と本番環境のログインのトークンを比較
- iatとexpからトークンの有効期間を確認
セキュリティ監査
セキュリティチェックの際に、トークンのアルゴリズムとクレームを確認できます。algがnoneのトークンを見つけ、誰でも読めるペイロードに含めるべきでない個人情報がないかを調べましょう。
- algがnoneで署名のないトークンを発見
- ペイロードに含まれたメールアドレスやユーザーIDを検出
- iatとexpの日付から長すぎるトークンの有効期間を把握
その他のツールを見る
このツールと組み合わせて使える、ほかの無料ツールもご覧ください