JWT-декодер

Вставьте JSON Web Token, чтобы прочитать его header и payload, узнать, когда он истекает, и разобраться в каждом claim. Токен не покидает ваш браузер.

Работает в браузереБез регистрацииНичего не загружается

Декодирование — это не проверка. Заголовок и payload JWT может прочитать кто угодно: они лишь закодированы в base64url. Инструмент показывает, что токен заявляет, но не доказывает его подлинность. Всегда проверяйте подпись на своём сервере.

Заголовок

Payload


      

Проверить подпись (необязательно, HS256/HS384/HS512)

Проверяет подпись HMAC с введённым вами секретом через Web Crypto API браузера. Секрет не покидает эту страницу. Для токенов RSA/ECDSA нужен открытый ключ издателя, здесь они не проверяются.

Как пользоваться: JWT-декодер

  1. Вставьте токен в поле Закодированный токен. Префикс Bearer из заголовка Authorization игнорируется.
  2. Header и payload декодируются мгновенно и выводятся как отформатированный JSON.
  3. Изучите таблицу Расшифровка claims: exp, iat и nbf преобразуются в даты с пометками «истекает через» / «истёк … назад».
  4. Проверьте строку состояния на проблемы со сроком действия и предупреждения о рискованных настройках вроде alg: none.
  5. При желании введите общий секрет, чтобы локально проверить подпись HS256, HS384 или HS512.

Что внутри JWT?

JSON Web Token (RFC 7519) — это три строки base64url, соединённые точками: header.payload.signature. Header указывает алгоритм подписи (alg) и тип токена. Payload содержит claims: например, кто пользователь и когда истекает токен. Подпись вычисляется над первыми двумя частями с помощью секрета или закрытого ключа.

Декодирование — не проверка

Header и payload лишь закодированы, а не зашифрованы, поэтому их может прочитать любой, у кого есть токен. Именно поэтому никогда не кладите пароли и секреты в payload JWT. Декодирование показывает, что токен говорит. Проверка подписи, обычно на вашем API-сервере с библиотекой вроде jose или PyJWT, доказывает, кто его выпустил и что он не изменён. Сервер также должен проверять exp, nbf, iss и aud и отклонять неожиданные алгоритмы.

Шпаргалка по зарегистрированным claims

ClaimЗначение
issIssuer: кто создал и подписал токен
subSubject: обычно ID пользователя
audAudience: для какого API предназначен токен
expВремя истечения в секундах с начала эпохи Unix
nbfНедействителен до этого момента
iatВремя выпуска
jtiУникальный ID токена, полезен для списков отзыва

Отладка ошибок «token expired»

Если API отклоняет токен, который выглядит свежим, сравните exp и nbf с часами сервера. Небольшое расхождение часов между машинами — обычное дело, поэтому большинство библиотек допускают запас в 30–60 секунд. Также убедитесь, что exp указан в секундах: значение в миллисекундах — частая ошибка, которая отодвигает истечение на тысячи лет вперёд.

Часто задаваемые вопросы

Безопасно ли вставлять сюда продакшен-JWT?
Декодирование полностью выполняется в браузере на JavaScript. Токен не загружается, не логируется и не сохраняется. Но, как и с любыми учётными данными, обращайтесь с рабочими токенами аккуратно и для скриншотов используйте истёкшие или тестовые.
Проверяет ли инструмент подпись JWT?
Само декодирование — нет. По желанию можно проверить токены HS256, HS384 и HS512, введя общий секрет; HMAC вычисляется локально через Web Crypto API. Токены RS256 и ES256 нужно проверять открытым ключом издателя на сервере.
Почему мой токен показан как истёкший?
Claim exp находится в прошлом относительно часов вашего компьютера. Запросите новый токен или обновите его с помощью refresh token. Если время выглядит странно, проверьте расхождение часов или значение exp, записанное в миллисекундах.
Чем отличаются JWT, JWS и JWE?
JWT — это формат claims. JWS — подписанный JWT из трёх частей, именно его декодирует этот инструмент. JWE — зашифрованный JWT из пяти частей; его payload нельзя прочитать без ключа расшифровки.
Чем опасен alg «none»?
Неподписанный токен может подделать кто угодно. Серверы должны отклонять alg: none и принимать только конкретный ожидаемый алгоритм.

Похожие инструменты