Декодер JWT

Инструмент раскодирует токен JWT: показывает заголовок и данные в виде JSON, поясняет стандартные поля и переводит время выдачи и срок действия (iat, exp, nbf) в обычные даты. Сразу видно, истёк ли токен. Ошибки — обрезанный токен, недопустимый символ, не JSON внутри — подчёркиваются в поле. Пригодится при отладке входа на сайт, запросов к API и настройки авторизации.

Как пользоваться

Вставьте токен в поле — он раскодируется сразу. Можно вставить его вместе с префиксом Bearer из заголовка Authorization. Даты показываются в часовом поясе вашего браузера и в UTC.

Подпись не проверяется: для этого нужен ключ, которым сервер подписывал токен. Токен обрабатывается в браузере и не отправляется на сервер, но остаётся действующим, пока не истечёт, — не публикуйте его.

Для вашего удобства рекомендую использовать полноэкранный режим.

Декодируем…

Токен

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6ItCQ0L3QvdCwIiwicm9sZSI6ImVkaXRvciIsImlhdCI6MTc2MDY4ODAwMCwiZXhwIjo0MTAyNDQ0ODAwfQ.c2lnbmF0dXJlLW5vdC12ZXJpZmllZA

Заголовок

Данные

Для декодирования включите JavaScript. JWT состоит из трёх частей через точку: заголовок и данные — JSON в base64url, третья часть — подпись.

Как устроен JWT

JWT (JSON Web Token) — строка из трёх частей, разделённых точками: заголовок.данные.подпись. Заголовок и данные — JSON-объекты, закодированные в base64url, поэтому их может прочитать кто угодно. Подпись подтверждает, что токен выдан сервером и не изменён: без ключа подделать её нельзя.

JSON
{ "alg": "HS256", "typ": "JWT" }
JSON
{ "sub": "1234567890", "name": "Анна", "iat": 1760688000, "exp": 4102444800 }

Стандартные поля

  • iss — кто выдал токен, sub — кому, aud — для какого сервиса он предназначен.
  • iat — время выдачи, nbf — начало действия, exp — окончание. Время записано в секундах от 1 января 1970 года (UTC), а не в миллисекундах, как Date.now() в JavaScript.
  • jti — уникальный идентификатор, по которому сервер может отозвать токен.

Остальные поля — name, role, email — добавляет сервер по своим правилам.

Что важно для безопасности

  • Данные токена не зашифрованы: не храните в них пароли и другую секретную информацию.
  • Сервер должен проверять подпись и срок действия при каждом запросе. Токен с "alg": "none" не подписан, и принимать его нельзя.
  • Токен из пяти частей — зашифрованный JWE: без ключа доступен только его заголовок.

Вопросы и ответы

Почему подпись не проверяется?

Для проверки нужен секретный ключ (для HS256) или открытый ключ сервера (для RS256 и ES256). Инструмент предназначен для чтения токена; проверка подписи выполняется на сервере.

Как раскодировать JWT в JavaScript?

Возьмите вторую часть токена, замените - и _ на + и /, раскодируйте Base64 через UTF-8 и разберите JSON методом JSON.parse(). Читать данные так можно, но доверять им без проверки подписи на сервере нельзя.

Безопасно ли вставлять сюда рабочий токен?

Токен обрабатывается в вашем браузере и никуда не отправляется. Но не пересылайте его и не публикуйте: любой, у кого есть действующий токен, может выполнять запросы от вашего имени.

Связанные инструменты

Отдельные части токена и другие строки base64url раскодирует инструмент «Base64», а JSON из данных удобно сравнивать в «Сравнении JSON».