JWTデコード

JWTデコードツール(中身の確認・署名検証)

JSON Web Token(JWT)を貼り付けると、ヘッダーとペイロードを整形したJSONで表示し、発行日時と有効期限、標準クレームの意味がわかります。シークレットか公開鍵を入力すれば署名も検証します。JWTデコードはブラウザの中で行われ、トークンはどこにも送信されません。

HS256・HS384・HS512は共通のシークレット。RS・PS・ES・EdDSAは公開鍵をPEM(-----BEGIN PUBLIC KEY-----)、JWK、JWKSのいずれかで。
  • ヘッダー

    { "alg": "HS256", "typ": "JWT" }

  • ペイロード

    { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }

有効期限有効期限(exp)なし
アルゴリズムHS256 — HMAC+SHA-256(共通鍵)
署名未確認 — 鍵を入力すると検証します
タイプ(typ)JWT
主体(sub)1234567890
発行日時(iat)2018/01/18 1:30:22 UTC (9 年前)
その他のクレームname

デコードに鍵は要りません。トークンを持っている人なら誰でもヘッダーとペイロードを読めるので、パスワードなどの秘密をトークンに入れてはいけません。トークンが本物で改ざんされていないことを証明できるのは、正しい署名だけです。トークンはブラウザの外に出ていません。

計算はお使いの端末内で完結 · 計算式は既知の値で検証済み · 検証方法について

JWTデコードツールの使い方

  1. eyJ で始まる長いトークンを入力欄に貼り付けます。Authorization: Bearer … のヘッダーごとコピーしたものや、引用符で囲まれたもの、途中で改行されたものも自動で整えます。
  2. デコードしたヘッダーとペイロードが整形したJSONで表示されます。一番上に有効期限の状態、その下に標準クレームと、日時はお使いのタイムゾーン(日本なら日本時間)での日付と「3 時間後」「16 年前」のような現在からの差が並びます。
  3. 署名を確かめるには鍵を入力します。HS256・HS384・HS512なら共通のシークレット、RS・PS・ES・EdDSAなら公開鍵を、PEM、JWK、またはJWKS全体で貼り付けます。結果に署名は正しいか署名が正しくないかが表示されます。

JWTの中身

JSON Web Token(RFC 7519)は、base64urlのテキスト3つをドットでつないだものです:ヘッダー.ペイロード.署名。ヘッダーとペイロードはJSONオブジェクトをエンコードしただけで暗号化はされていないので、誰でも読めます。どちらも {" をエンコードした eyJ で始まるのはそのためです。ヘッダーには署名アルゴリズム(alg)、ペイロードにはユーザーやセッションについての情報(クレーム)が入ります。署名は最初の2つの部分を書かれたとおりに計算したものなので、1文字でも変えると検証に失敗します。LINEログインやFirebase Authentication、Amazon CognitoなどのIDトークン、多くのWeb APIのアクセストークンがJWTです。

クレーム名前意味
iss発行者トークンを作って署名した者。ログインサーバーのURLが多い
sub主体トークンが表す対象。ふつうはユーザーID
aud受信者受け入れるべきサービス。別のAPI向けのトークンは拒否しなければならない
exp有効期限この時刻を過ぎたら拒否する
nbf有効開始この時刻より前は拒否する
iat発行日時トークンが作られた時刻
jtiJWT ID一意のID。一度使われたトークンを拒否するのに使う

3つの日時は「NumericDate」で、1970年1月1日(UTC)からの秒数、つまりUnixタイムスタンプと同じ数です。13桁ならミリ秒で書かれていて、よくある不具合としてこのツールが指摘します。表示は端末のタイムゾーンで行うので、日本では日本時間(JST、UTC+9)になります。サーバーは時計のずれとして1〜2分の猶予を認めることが多いですが、ここでの判定には猶予を入れていません。

計算例:RFCのサンプルトークンを読む

JSON Web Signatureの規格RFC 7515は、最初の例(付録A.1)で次のトークンに署名しています。

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

ヘッダーをデコードすると { "typ": "JWT", "alg": "HS256" }(HMAC SHA-256のトークン)、ペイロードは { "iss": "joe", "exp": 1300819380, "http://example.com/is_root": true } です。発行者は「joe」、独自のクレームが1つ(http://example.com/is_root)あり、exp の1300819380は2011年3月23日 3:43(日本時間)なので、2026年10月にデコードすると状態は「期限切れ(16 年前)」になります。検証するには、RFCの鍵をJWKとして貼り付けます。

{"kty":"oct","k":"AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow"}

署名は正しいと表示されます。ペイロードを1文字変えると、正しくないと表示されます。

入力欄に最初から入っているのは、jwt.ioでおなじみのサンプルトークンで、シークレットは your-256-bit-secret です。このシークレットは19バイトで、RFC 7518がHS256に求める32バイトより短いため、検証するとその点も指摘します。

署名の検証

セキュリティ上の注意

UUID形式の jti を調べるならUUID生成・チェック、ペイロードのJSONを詳しく見るならJSON整形が使えます。

よくある質問

ここにJWTを貼り付けても安全ですか?

トークンはブラウザのJavaScriptでデコード・検証され、サーバーには送られず、ページにも保存されません。ただし有効なトークンは一時的なパスワードと同じなので、どのWebサイトでも、期限切れかテスト用のトークンを使うのが安全な習慣です。信頼できない場所に有効なトークンを貼ってしまったら、ログアウトする(トークンが無効になる場合があります)などの対策をとってください。

シークレットがなくてもJWTをデコードできますか?

できます。ヘッダーとペイロードはbase64urlでエンコードされているだけなので、鍵がなくても読めます。シークレットや公開鍵が必要なのは、トークンが本物で改ざんされていないことを確かめる署名の検証のときだけです。

「署名が正しくない」と表示されるのはなぜですか?

署名後にトークンが変更されたか、署名した鍵ではないかのどちらかです。別の環境(開発・本番)のシークレット、1文字の欠けや余分な文字、鍵のローテーション後の古い公開鍵、先にBase64デコードすべきシークレット(その場合は種類 oct のJWKとして貼り付けます)などが原因になります。

JWT、JWS、JWEの違いは何ですか?

JWS(RFC 7515)は3つの部分からなる署名付きデータ、JWE(RFC 7516)は5つの部分からなる暗号化データです。JWT(RFC 7519)はそのどちらかで運ばれるクレームの集まりで、ほとんどの場合はJWSです。そのため「JWT」と言えばふつう署名付きのトークンを指します。

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

有効期限(exp)の行を見てください。お使いのタイムゾーンでの日時と、「2 日後」「3 時間前」のような現在からの差を表示します。exp のないトークンは自然には期限が切れないので、アクセストークンとしては危険です。

この計算ツールをあなたのサイトに埋め込む

ウェブサイトやブログで無料でお使いいただけます。表示したい場所に次のコードを貼り付けてください。

最終更新日:2026年10月16日

メニュー

カテゴリー

お金・ローンの計算ツール13種類の計算ツールビジネス・買い物の計算ツール5種類の計算ツール健康・ダイエットの計算ツール6種類の計算ツール数学・学習の計算ツール14種類の計算ツール日付・時間の計算ツール10種類の計算ツール年中行事までのカウントダウン7種類の計算ツール暮らしに役立つツール15種類の計算ツールPDF・画像の変換ツール12種類の計算ツールマイクテスト・カメラテスト・録音ツール6種類の計算ツールエンジニア向け開発ツール9種類の計算ツール

CalcWorthy

運営者情報お問い合わせプライバシーポリシー利用規約

言語

言語
日本語JapaneseEnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanEspañolSpanishفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian한국어KoreanBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese简体中文Simplified Chinese