JWT Decoder

Декодирование и инспекция JSON Web Token

Попробовать пример

JWT-токен

Работает локально · Безопасно вставлять секреты
Также попробуйте:JWT Encoder

Что такое JWT (JSON Web Token)?

JSON Web Token (JWT) — это компактный формат токена, безопасный для URL, определённый в RFC 7519. Он кодирует набор claims как объект JSON, затем подписывает — и при необходимости шифрует — его, чтобы получатель мог убедиться в том, что данные не были изменены. JWT являются де-факто стандартом для безгражданской аутентификации в REST API, системах единого входа и авторизации микросервисов.

Структура JWT: Header · Payload · Подпись

Каждый JWT состоит из трёх сегментов в кодировке base64url, разделённых точками. Header и payload — это обычный JSON, доступный для чтения любому, тогда как подпись — это криптографическое значение, которое можно проверить только с помощью правильного ключа.

Закодированный токен

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

HeaderPayloadПодпись
Header
json
{
  "alg": "HS256",
  "typ": "JWT"
}
Payload
json
{
  "sub":  "user123",
  "name": "Alice",
  "role": "admin",
  "iat":  1717200000,
  "exp":  1717203600
}

Зачем использовать декодер JWT?

Необработанные JWT выглядят как случайный текст. Этот инструмент мгновенно отображает header и payload в виде отформатированного JSON, чтобы можно было инспектировать claims, проверять сроки действия и анализировать выбор алгоритмов без написания единой строки кода.

🔍
Мгновенная проверка claims
Просматривайте каждый claim в payload — sub, iss, aud, exp, пользовательские роли, разрешения — отформатированный и читаемый в один клик.
🔓
Секретный ключ не нужен
Header и payload общедоступны; только подпись требует секрета. Этот инструмент декодирует оба без вашего ключа подписи.
⏱️
Разбор сроков действия и временных меток
Unix-временные метки (exp, iat, nbf) автоматически преобразуются в понятные даты, чтобы сразу видеть, истёк ли срок действия токена.
🔒
Работает полностью в браузере
Всё обрабатывается локально — никакие данные токена не отправляются на сервер. Безопасно использовать с production-токенами при отладке.

Справочник стандартных claims JWT

RFC 7519 определяет семь зарегистрированных имён claims. Они не являются обязательными, но их использование настоятельно рекомендуется для совместимости. Вы можете добавлять любые пользовательские claims в payload.

ClaimОписаниеТип
issИздательИдентифицирует того, кто выдал токен — например, URL вашего сервера аутентификации или название приложения.string
subСубъектИдентифицирует субъект, которому посвящён JWT — как правило, ID пользователя или сервисная учётная запись.string
audАудиторияИдентифицирует предполагаемых получателей. Принимающая сторона должна проверить, что это соответствует её идентификатору.string | string[]
expВремя истеченияUnix-временная метка, после которой токен не должен приниматься. Всегда устанавливайте её, чтобы ограничить ущерб от украденного токена.number
nbfНе раньшеUnix-временная метка, до которой токен не должен приниматься. Полезно для планирования токенов с будущей датой.number
iatВыдан вUnix-временная метка, когда был выдан токен. Используется для вычисления возраста токена.number
jtiJWT IDУникальный идентификатор токена. Позволяет реализовать отзыв, сохраняя и проверяя использованные значения JTI на стороне сервера.string

Алгоритмы подписи JWT

Claim header alg объявляет, каким алгоритмом подписан токен. Выбор влияет на безопасность, производительность и возможность сторонних сервисов проверять токены без закрытого ключа.

АлгоритмСемействоТип ключаПримечания
HS256HMACSymmetricСамый распространённый. Общий секрет — любой, у кого есть секрет, может подписывать и проверять.
HS384HMACSymmetricБолее надёжный вариант HMAC; умеренная нагрузка на производительность.
HS512HMACSymmetricСамый надёжный вариант HMAC.
RS256RSAAsymmetricНаиболее используемый асимметричный алгоритм (Google, Auth0, Okta). Публичный ключ проверяет без закрытого.
RS384RSAAsymmetricВариант RS с повышенной безопасностью.
RS512RSAAsymmetricСамый надёжный вариант RS.
ES256ECDSAAsymmetricЭллиптическая кривая — подписи короче, чем у RSA; популярен на мобильных устройствах и в IoT.
PS256RSA-PSSAsymmetricRSA-PSS: более современный и безопасный, чем RS256 на основе PKCS1v1.5.
noneБез подписи — критически опасно. Никогда не принимайте токены с alg: none в production.

Соображения безопасности

Декодирование JWT всегда безопасно. Доверие JWT без надлежащей проверки подписи — нет. Помните об этих правилах при работе с токенами в вашем приложении.

Всегда безопасно
  • Декодировать и инспектировать JWT в инструментах разработчика или этом инструменте
  • Использовать exp, iat и nbf для понимания времени жизни токена
  • Записывать claims payload для отладки (опускать конфиденциальные PII)
  • Читать header alg, чтобы понять, как был подписан токен
Никогда не делайте это
  • Доверять claims в payload без проверки подписи на стороне сервера
  • Принимать токены с alg: none — это означает полное отсутствие подписи
  • Хранить токены доступа в localStorage в высокозащищённых приложениях (предпочтительнее cookies httpOnly)
  • Устанавливать exp далеко в будущем для токенов с конфиденциальными правами доступа

Распространённые случаи использования

Отладка процессов аутентификации
Вставьте токен из сетевой вкладки браузера для проверки claims, встроенных ролей и сроков действия без изменения production-кода.
Инспекция токенов сторонних сервисов
Быстро читайте токены от Google, Auth0, Okta или Azure AD, чтобы видеть, какие claims включает ваш провайдер, и сравнивать их с ожидаемой схемой.
Разработка и тестирование API
При написании или тестировании API-эндпоинтов декодируйте заголовок авторизации, чтобы убедиться, что ваша логика генерации токенов правильно устанавливает значения sub, aud и scope.
Авторизация микросервисов
В сервисных мешах каждый сервис проверяет JWT от вышестоящего вызывающего. Декодируйте токены, чтобы отследить, какой сервис выдал токен и какие разрешения он заявляет.
Поддержка и реагирование на инциденты
Когда пользователь сообщает об ошибке аутентификации, декодируйте его токен, чтобы проверить, не истёк ли срок, неверна ли аудитория или отсутствует ли обязательный claim.
Аудит безопасности
Проводите аудит использования JWT в сервисах, проверяя выбор алгоритмов, окна истечения срока действия и случайное хранение конфиденциальных данных в незашифрованном payload.

Декодирование JWT в коде

Header и payload закодированы в base64url — просто обратите кодирование. Base64url заменяет + на - и / на _, и опускает набивку =. Только подпись требует секретного ключа.

JavaScript (browser)
function decodeJWT(token) {
  const [, payload] = token.split('.')
  const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
  return JSON.parse(json)
}
Node.js
const [, payload] = token.split('.')
const decoded = JSON.parse(
  Buffer.from(payload, 'base64url').toString()
)
Python
import base64, json

def decode_jwt(token):
    payload = token.split('.')[1]
    padding = '=' * (-len(payload) % 4)
    return json.loads(base64.urlsafe_b64decode(payload + padding))
CLI (bash + jq)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .

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

Можно ли декодировать JWT без секретного ключа?
Да. Header и payload JWT — это просто JSON в кодировке base64url, а не зашифрованные данные. Любой может их декодировать и прочитать. Секрет (или закрытый ключ для алгоритмов RS/ES) нужен только для проверки подписи, подтверждающей, что токен не был изменён.
Означает ли декодирование JWT, что подпись проверена?
Нет. Декодирование только читает claims. Верификация — это отдельный шаг, проверяющий криптографическую подпись с помощью правильного ключа. Всегда проверяйте подпись перед тем, как доверять claims в вашем приложении.
В чём разница между HS256 и RS256?
HS256 использует единый симметричный секрет, разделённый между издателем и верификатором — любой, у кого есть секрет, может создавать и проверять токены. RS256 использует асимметричную пару ключей: закрытый ключ подписывает, публичный проверяет. С RS256 можно распространять публичный ключ, чтобы внешние сервисы могли проверять токены, не имея возможности их подделать.
Почему декодирование base64 иногда не работает?
JWT используют кодировку base64url, которая заменяет + на - и / на _, и опускает символы набивки =. Стандартные декодеры base64 требуют + и / и могут требовать набивки. Добавьте набивку (до кратного 4 с помощью =) и замените символы перед ручным декодированием.
Безопасно ли вставлять production JWT в этот инструмент?
Да — этот инструмент работает полностью в вашем браузере и не отправляет данные ни на какой сервер. Однако учитывайте, кто может видеть ваш экран или историю браузера. Для особо чувствительных токенов декодируйте их локально в терминале.
Что означает alg: none и опасно ли это?
alg: none означает, что токен не имеет криптографической подписи — любой может создать токен с произвольными claims и установить alg в none. Некоторые ранние библиотеки JWT принимали такие токены, создавая критическую уязвимость. Безопасная библиотека JWT всегда отклоняет токены с alg: none, если явно не настроено иначе. Никогда не отключайте эту проверку.