JWT-декодер

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

Разбор идёт в браузере, токен никуда не уходит.
—
—

Заголовок

Полезная нагрузка

JWT по RFC 7519: header.payload.signature в base64url; сроки exp, iat, nbf — секунды Unix. Подпись не проверяется. Проверено 04.09.2026.

Из чего состоит токен

Декодер разбирает токен JWT на три части и показывает их содержимое: заголовок с алгоритмом подписи, полезную нагрузку с данными и саму подпись. Разбор идёт в браузере, токен никуда не отправляется.

Токен состоит из трёх блоков, разделённых точками, каждый закодирован в base64url. Кодирование — не шифрование: содержимое читается любым, кто получил токен, и класть в него пароли или личные данные нельзя.

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

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

Ключ
Кодирование — не шифрование: содержимое токена читает любой, кто его получил. Фото: York Museums Trust, Rebecca Griffiths, 2, CC BY-SA 4.0.
ЧастьЧто содержит
ЗаголовокАлгоритм и тип токена
НагрузкаДанные и стандартные поля
ПодписьКонтроль целостности

Алгоритм «none» и подмена ключа

Стандарт JWT опубликован в 2015 году и вырос из нужды передавать сведения о пользователе между службами без обращения к общей базе сессий. Токен несёт данные с собой, и каждая служба проверяет их сама.

Ранняя реализация допускала алгоритм подписи «none» — токен без подписи. Несколько библиотек принимали такой токен как действительный, и это дало известную уязвимость: атакующий менял алгоритм в заголовке и подписывал что угодно.

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

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

Код на экране
Уязвимость с алгоритмом «none» стала хрестоматийным примером. Фото: MikeRun, CC BY-SA 4.0.
Замок
Алгоритм проверки задаётся на стороне сервера; полю в заголовке токена доверять нельзя. Фото: Lacz02, CC BY-SA 4.0.

Что проверять и чего не класть внутрь

Проверяйте срок действия в первую очередь. Поле exp хранит время в секундах от начала эпохи, и просроченный на минуту токен даёт ту же ошибку, что и полностью неверный.

Не кладите в токен ничего чувствительного. Всё содержимое видно получателю и любому, кто перехватит токен; для секретов существуют шифрованные варианты.

Сверяйте часы на серверах. Проверка срока действия опирается на системное время, и расхождение в несколько минут между службами даёт случайные отказы в доступе.

Не храните токен в постоянном хранилище браузера без нужды. Сценарий на странице читает его так же легко, как и ваш код, и утечка через стороннюю библиотеку — обычный сценарий.

Держите срок жизни коротким. Токен на неделю, попавший в чужие руки, работает неделю; отозвать его без отдельного механизма невозможно.

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

Разбирайте чужой токен только для отладки. Содержимое читается, но полагаться на него без проверки подписи нельзя даже в собственном коде.

Не пересылайте токены в адресной строке. Они попадают в журналы сервера, в историю браузера и в заголовок источника перехода — заголовок запроса для этого надёжнее.

Разделяйте токен доступа и токен обновления. Первый живёт минуты и ходит в каждом запросе, второй хранится надёжнее и служит для получения нового.

Проверяйте подпись на сервере при каждом запросе. Разбор содержимого без проверки подписи равносилен доверию любому, кто прислал строку нужного вида.

Посчитать контрольную сумму поможет генератор хешей, а разобрать структуру данных — форматирование JSON.

Частей в токенетри
Кодированиеbase64url
Шифрованиеотсутствует
Подписьконтроль целостности
Стандарт опубликован2015
Известная уязвимостьалгоритм «none»
Алгоритм задаётпроверяющая сторона
Разборв браузере

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

Декодер раскладывает токен на части, показывает JSON с отступами, расшифровывает стандартные поля — iss, sub, aud, exp, iat, nbf, jti — и переводит сроки из секунд Unix в даты, считая, сколько токену осталось жить. Подпись не проверяется: для этого нужен секрет или публичный ключ, и это делает сервер. Токен никуда не отправляется, разбор идёт в браузере, поэтому сюда можно вставлять рабочие токены. Проверено 04.09.2026.

  1. Целиком, с точками; префикс «Bearer » можно оставить, он отрежется.
  2. Алгоритм подписи alg и тип typ; для ключей — kid.
  3. Стандартные поля подписаны по-русски, сроки показаны датами и оставшимся временем.
  4. Три части, корректный base64url, валидный JSON — декодер отмечает, что не так.

Частые вопросы

Что такое JWT

JSON Web Token — компактный токен для передачи утверждений между сторонами: заголовок, полезная нагрузка и подпись, каждая часть в base64url, разделены точками. Используется для авторизации в API и веб-приложениях.

Почему токен можно прочитать без ключа

Заголовок и полезная нагрузка только закодированы, шифрования здесь нет. Подпись защищает их от подделки, но не от чтения, поэтому в JWT нельзя класть пароли и секреты.

Проверяет ли декодер подпись

Нет. Для HS256 нужен общий секрет, для RS256 и ES256 — публичный ключ; проверка выполняется на сервере. Декодер показывает алгоритм и длину подписи и предупреждает, если alg равен none.

Что означают exp, iat и nbf

exp — момент истечения, iat — момент выдачи, nbf — момент, раньше которого токен недействителен. Все три — секунды Unix, декодер переводит их в даты по вашему часовому поясу и считает оставшееся время.

Что такое base64url

Вариант base64 без символов «+» и «/», заменённых на «-» и «_», и без выравнивающих «=», чтобы токен можно было передавать в адресной строке. Декодер восстанавливает выравнивание сам.

Токен не разбирается — почему

Обычно обрезан при копировании, содержит пробелы или перенос строки, либо это токен другого, непрозрачного формата без структуры JWT. Декодер называет, какая из трёх частей не читается.

Куда уходит вставленный текст?

Нет, всё считается в браузере; сетевых запросов при разборе нет.

Спросите нейросети об инструменте

Отвечает DeepSeek по данным этой страницы и тому, что у вас сейчас на экране: что делает, как устроен, ограничения

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

Генератор хешей и контрольных сумм

MD5, SHA-1, SHA-256, SHA-384, SHA-512 и CRC32 от текста или файла сразу. Есть HMAC с ключом, вывод в Base64 и сверка с эталоном, которая сама узнаёт алгоритм.

Открыть
JSON-форматтер и валидатор

Разбирает JSON с отступами и в одну строку, показывает дерево с путями к узлам и объясняет ошибку по-русски: где висячая запятая, где кавычки из Word, где комментарий.

Открыть
Картинка в Base64

Изображение в data URI для HTML и CSS и обратно: размер до и после, готовые фрагменты img и background, предпросмотр из строки.

Открыть
Сканер QR-кода

Считывает QR-код и штрихкод камерой или с картинки прямо в браузере: ссылка, Wi-Fi, визитка, телефон и номер товара разбираются по полям.

Открыть
HTML-сущности

Кодирование спецсимволов в &, < и числовые сущности и обратное декодирование, таблица частых сущностей с кодами.

Открыть
Азбука Морзе

Текст в код Морзе и обратно на русском и латинице, цифры и знаки, звук с регулируемой скоростью, полная таблица.

Открыть

Ещё инструменты для кода и данных

Base64 и URL, форматтер и сравнение JSON, хеши, регулярные выражения, cron, подсети, UUID, QR-код и Unix-время — в разделе 42 инструмента.