本文へスキップ

JWTデコーダー — ヘッダー・ペイロードのデコード、有効期限の確認、HS256署名の検証

JWTを貼り付けるとヘッダーとペイロードをJSONに展開し、exp・iatなどの時刻を読める日付に変換します。HS256・HS384・HS512の署名は秘密鍵で検証でき、トークンと鍵はサーバーに送信しません。

JSON整形・検証

JSONを貼り付けるとすぐに検証し、間違いは行と列で示します。インデント整形・1行への圧縮・YAML変換・ツリー表示に対応し、大きな数値やキーの順序は変えずにそのまま保ちます。

結果
左側にJSONを貼り付けると、ここに結果が表示されます。初めてなら上の「サンプル」ボタンを押してみてください。
入力を待っています。

正規表現テスター

パターンとフラグを入れると、テスト文字列の一致箇所を色付けし、キャプチャグループと置換結果を表示します。ブラウザのJavaScript正規表現エンジンでそのまま実行します。

パターンを入力してください。
一致一覧

一致する箇所はありません。

$1・$2 は番号付きグループ、$<名前> は名前付きグループ、$& は一致全体です。空欄なら置換しません。

cron式の解説

cron式を読みやすい文章に直し、選んだタイムゾーンで次回実行時刻を5件計算します。分・時・日・月・曜日の5フィールドからなる標準crontab形式です。

フィールドごとの意味
次回実行時刻

    サーバーのcronは通常サーバーのタイムゾーンで動きます。GitHub Actionsのscheduleや多くのクラウドスケジューラーはUTC基準なので、日本時間(UTC+9)に合わせるには9時間引いて書く必要があります。

    JWTデコーダー

    JWTを貼り付けるとヘッダーとペイロードを展開し、有効期限(exp)・発行(iat)・有効開始(nbf)の時刻を日付に変換します。HS256・HS384・HS512の署名は秘密鍵で検証でき、トークンと鍵はこのブラウザの外に出ません。

    トークンを待っています。
    ヘッダー
    
                    
    ペイロード
    
                    
    時刻クレーム

    exp・iat・nbfクレームはありません。

    秘密鍵を入れると署名を検証します。

    Base64・URLエンコード

    テキストやファイルをBase64に、Base64を元のテキストに戻します。URLセーフのアルファベット、パディングなしの値、data: URLも読み取れます。URLエンコード(パーセントエンコード)もここで行い、常にUTF-8で扱います。

    結果
    
                    
    入力を待っています。

    UNIXタイムスタンプ変換

    UNIXタイムスタンプを日時に、日時をタイムスタンプに変換します。秒・ミリ秒・マイクロ秒・ナノ秒は桁数で自動判別し、タイムゾーンのない日時は選んだタイムゾーンの時刻として読みます。

    現在
    ミリ秒
    タイムスタンプか日時を入力してください。
    変換結果

    タイムゾーンのない日時(例: 2026-09-24 09:30)は上で選んだタイムゾーンの時刻として読みます。末尾にZや+09:00があればそのタイムゾーンに従います。値をクリックするとコピーされます。

    ハッシュ生成

    テキストやファイルのMD5・SHA-1・SHA-256・SHA-384・SHA-512を一度に計算します。受け取ったハッシュ値を貼り付けると、どれと一致するかを表示します。ファイルはアップロードせず、このブラウザで計算します。

    入力を待っています。

    MD5とSHA-1は衝突を作る方法が知られているため、署名やパスワードなどのセキュリティ用途には使えません。ダウンロードしたファイルが元と同じか確かめるにはSHA-256を使ってください。値をクリックするとコピーされます。

    よくある質問

    貼り付けたJSONやテスト文字列はサーバーに送信されますか?
    いいえ。検証・変換・マッチ・計算はすべてこのブラウザの中で完結し、入力した内容はどこにも送らず保存もしません。APIレスポンスや設定ファイルのような機密性のある内容を貼り付けても大丈夫です。このブラウザには、最後に開いたタブやインデントなどの表示設定だけを残します。
    整形すると数値やキーの順序が変わりませんか?
    変わりません。このフォーマッターはJavaScriptのJSON.parseを通さず自前で読むため、2の53乗を超える大きな整数(例:Twitter・DiscordのID)や1.0のような数値の書き方も原文のまま残します。"10"、"2"のような数字のキーが先頭に移動することもありません。同じキーが2回出てきた場合は両方残し、警告でお知らせします。
    コメントや末尾のカンマがあるJSONも使えますか?
    標準のJSONはコメント、最後の項目の後のカンマ、シングルクォートの文字列を認めていないため、エラーとして表示します。ただしよくある間違いなので、「末尾にカンマが残っています」「シングルクォートは使えません」のように何が問題かとその位置を示します。その箇所だけ直せば大丈夫です。
    正規表現はどの言語の文法に従いますか?
    ブラウザのJavaScript(ECMAScript)正規表現エンジンでそのまま実行します。名前付きグループ、後読み(lookbehind)、Unicodeプロパティ(uフラグでの\p{L}など)が使えます。PCRE・Pythonにしかない強欲な量指定子、アトミックグループ、\A・\Zなどの文法には対応していないので、他の言語で使うパターンなら文法の違いを一度確認してください。
    「1.5秒以内に終わりませんでした」とはどういう意味ですか?
    (a+)+$ のように量指定子が入れ子になったパターンは、一致しない入力で組み合わせを爆発的にたどり直し、数分間止まることがあります(壊滅的バックトラック)。このページは正規表現を別のワーカースレッドで実行し、1.5秒を過ぎると打ち切るため、画面が固まりません。このメッセージが出たら、実際のサービスでも同じ入力でサーバーが止まりうるというサインなので、量指定子の入れ子を解消してください。
    cronで日と曜日を両方指定するとどうなりますか?
    標準のcrontabでは、両方ともアスタリスクでなければ「どちらか一方が合えば」実行します。たとえば 0 9 1 * 1 は毎月1日と、毎週月曜日の午前9時に動きます。曜日の0と7はどちらも日曜日で、MON・JANのような英語の略称も使えます。秒フィールド付きの6フィールド形式(Quartz・Spring)やL・W・#などの拡張文法には対応していません。
    JWTの秘密鍵を入れても安全ですか?
    トークンと鍵はサーバーに送らず、署名の検証はブラウザに組み込まれたWeb Cryptoだけで計算し、どこにも保存しません。それでも本番サービスの実際の秘密鍵はどんなWebツールにも入れないのが原則なので、開発・テスト用の鍵で確認してください。RS256・ES256のように公開鍵で検証するトークンは内容の展開だけを行います。JWTのペイロードは暗号化ではなく、誰でも読めるエンコードだという点も覚えておいてください。
    MD5やSHA-256でパスワードを保存してもいいですか?
    いけません。MD5とSHA-1は同じハッシュになる2つの入力を作る方法が知られており、SHA-256も計算が速すぎるため、パスワードのような短い値は総当たりですぐに見つかります。パスワードはbcrypt・scrypt・Argon2のように意図的に遅くした関数にソルトを加えて保存する必要があります。このツールのハッシュは、ダウンロードしたファイルが元と同じか確かめる用途に使ってください。
    タイムスタンプが秒かミリ秒かはどう見分けますか?
    桁数で見分けます。現在の時刻なら秒は10桁、ミリ秒は13桁、マイクロ秒は16桁、ナノ秒は19桁です。そのため11桁までは秒、14桁まではミリ秒、17桁まではマイクロ秒、それより長ければナノ秒として読み、どう読んだかを結果の上に書いておきます。JavaScriptのDate.now()はミリ秒、UNIXコマンドのdate +%sやほとんどのサーバー言語は秒を使います。

    関連ツール