Декодер JWT
Декодируйте JWT-токены онлайн бесплатно. Просмотр header, payload, signature, срока действия, алгоритма и claims. 100% в браузере — токен не покидает устройство. Без регистрации.
Что такое JWT?
JSON Web Token, или JWT (произносится «джот») — компактный URL-безопасный формат токена для переноса claims между двумя сторонами. Определён в RFC 7519 и доминирует как формат учётных данных у access-токенов OAuth 2.0, ID-токенов OpenID Connect, API-ключей у современных провайдеров аутентификации (Auth0, Okta, Clerk, Supabase, Firebase) и межсервисных токенов в архитектурах микросервисов.
«JSON Web Token (JWT) — компактный формат представления claims для сред с ограниченным пространством, таких как заголовки HTTP Authorization и параметры запросов URI». — RFC 7519, раздел 1
JWT — это три Base64URL-кодированных JSON-объекта, соединённых точками: header.payload.signature. Header описывает, как токен подписан (claim alg — например, HS256 или RS256 — и claim typ, обычно «JWT»). Payload несёт claims: зарегистрированные вроде iss, sub, aud, exp, iat, плюс любые пользовательские (role, scope, email, tenant ID). Signature — криптографическое доказательство, вычисленное над header и payload секретом или приватным ключом эмитента, позволяющее получателю обнаружить подделку.
Крайне важно: JWT закодирован, а не зашифрован. Любой, у кого есть токен, может прочитать payload — декодирование сводится к Base64URL и разбору JSON. Гарантия безопасности — в signature: атакующий может прочитать JWT, но не может выпустить другой JWT, проходящий проверку подписи без ключа. Поэтому JWT безопасно передавать по сети, но небезопасно наполнять секретами.
Декодер JWT показывает точно, что внутри токена — алгоритм, claims, exp — не трогая signature. Это самый быстрый способ ответить «истёк ли токен?», «какая роль у пользователя?», «какой issuer выпустил токен?» или «это alg:none, который надо отвергнуть?». Всё декодирование в этом инструменте локальное, поэтому вставка живого production-токена безопасна.
Работа с JWT часто пересекается с другими инструментами разработчика. Может понадобиться декодировать сегмент Base64URL при отладке некорректного токена, URL-декодировать заголовок Authorization после захвата с прокси или конвертировать claim exp в человеческую дату вручную.
// Decode a JWT in the browser — header & payload only
function decodeJwt(token) {
const [h, p, s] = token.split('.');
const pad = (seg) => seg + '==='.slice((seg.length + 3) % 4);
const decode = (seg) => JSON.parse(
atob(pad(seg).replace(/-/g, '+').replace(/_/g, '/'))
);
return { header: decode(h), payload: decode(p), signature: s };
}
const { header, payload } = decodeJwt(token);
console.log(header); // → { alg: 'HS256', typ: 'JWT' }
console.log(payload); // → { sub: 'user_123', exp: 1999999999, ... }
// Expiration check
const expired = payload.exp * 1000 < Date.now(); Ключевые возможности
Мгновенное декодирование JWT
Вставьте и наблюдайте декодирование в реальном времени — header, payload и signature разбираются на лету. Кнопки «Декодировать» нет, обращений к серверу нет.
Определение срока действия
Автоматически читает claim exp и показывает красный бейдж, когда токен истёк, с точной датой в локальной таймзоне.
Любой алгоритм
Декодирует все алгоритмы JWS — HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512, EdDSA и alg:none.
Полностью локально
Декодирование в браузере через нативные atob и JSON.parse. Токен не загружается на сервер — безопасно для production-учётных данных.
Подсветка claims
Подсвечивает зарегистрированные claims RFC 7519 (iat, exp, nbf, iss, aud, sub, jti), чтобы сразу заметить проблемы с авторизацией.
Копирование в один клик
Скопируйте JSON header, JSON payload или сырой signature в буфер обмена одним кликом — удобно для баг-репортов и тестов.
Примеры
HS256 токен (валидный)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.4NhxPjwoZxPNuxG-2C5ugGxaUsUJ0QyskAz7Ymz5Sg0
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
} Токен с подписью HMAC-SHA256, subject, role и будущим сроком истечения — самая частая схема для аутентификации сессий.
RS256 токен (истёк)
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtleS0yMDI1LTAxIn0.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsImlhdCI6MTYwMDAwMDAwMCwiZXhwIjoxNjAwMDAzNjAwLCJzY29wZSI6InJlYWQ6dXNlciB3cml0ZTpwb3N0In0.signature_placeholder
{
"alg": "RS256",
"typ": "JWT",
"kid": "key-2025-01"
}
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"iat": 1600000000,
"exp": 1600003600,
"scope": "read:user write:post"
} Подписанный RSA access-токен в стиле OAuth — обратите внимание на kid (key ID) в header и claim exp, показывающий, что токен уже истёк.
OIDC ID-токен
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJzdWIiOiIxMTA1MDIyNTExNTU4OTkwNzY2Mzk1IiwiYXpwIjoiY2xpZW50LWlkIiwiYXVkIjoiY2xpZW50LWlkIiwiZW1haWwiOiJhbGljZUBleGFtcGxlLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OSwibm9uY2UiOiJhYmMxMjMifQ.signature
{
"alg": "ES256",
"typ": "JWT"
}
{
"iss": "https://accounts.google.com",
"sub": "110502251155899076639",
"azp": "client-id",
"aud": "client-id",
"email": "alice@example.com",
"email_verified": true,
"iat": 1715000000,
"exp": 1999999999,
"nonce": "abc123"
} OpenID Connect ID-токен с подписью ECDSA, claims email и nonce для защиты от replay.
alg:none (без подписи)
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJkZWJ1Zy11c2VyIiwiaWF0IjoxNzE1MDAwMDAwfQ.
{
"alg": "none",
"typ": "JWT"
}
{
"sub": "debug-user",
"iat": 1715000000
} Токен без подписи с alg:none. Принимать такой в production — классическая уязвимость JWT; всегда отвергайте alg:none на сервере.
Как использовать
- 1
Вставьте JWT для декодирования
Вставьте полный JWT — все три сегмента, разделённые точками — в поле ввода. Декодер запускается мгновенно в браузере; кнопку нажимать не нужно.
- 2
Прочитайте header, payload и статус
Прочитайте алгоритм и тип токена в декодированном header, claims в payload и плашки exp / iat вверху. Истёкший токен помечен красным.
- 3
Скопируйте декодированный вывод
Используйте кнопку «Скопировать» на каждой панели, чтобы скопировать JSON header, JSON payload или сырой signature. Токен никуда не отправлялся — декодирование прошло локально в браузере.
Common Errors
Принятие alg:none
Неподписанный JWT может подделать любой. Никогда не разрешайте alg:none в production — всегда передавайте явный список алгоритмов в вызов verify.
jwt.verify(token, secret) // library default may allow 'none'
jwt.verify(token, secret, { algorithms: ['RS256'] }) Отсутствует claim exp
JWT без exp живёт вечно. При утечке нет естественной точки отзыва. Всегда задавайте срок действия, подходящий типу токена.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } Хранение секретов в payload
Payload JWT не зашифрован — любой с токеном может его прочитать. Никогда не помещайте пароли, API-ключи или необрезанные PII в payload JWT.
{ "sub": "user_123", "password": "hunter2" } { "sub": "user_123", "role": "admin" } // payload stays minimal Типичные сценарии
- Декодирование Authorization Bearer токенов
- Декодируйте JWT-токены из заголовков Authorization: Bearer, чтобы проверить claims, audience и срок действия, которые получает ваш бэкенд.
- Декодирование OAuth 2.0 и OIDC токенов
- Декодируйте access-токены и ID-токены, возвращаемые серверами авторизации (Auth0, Okta, Google, Keycloak), при интеграции OAuth 2.0 и OpenID Connect.
- Диагностика истёкших сессий
- За секунду подтвердите, истёк ли отвергнутый токен, неверный ли у него audience или есть ли расхождение часов.
- Проверка ротации ключей
- Прочитайте kid (key ID) в header, чтобы убедиться, что ротация JWKS выдаёт токены, подписанные ожидаемым ключом.
- Security review
- Замечайте токены с alg:none, без exp или с утечкой PII в payload при code review и pentest.
- Изучение токенов микросервисов
- Декодируйте сервис-в-сервис токены внутри mesh, чтобы увидеть, какие scope и subject авторизуют downstream-вызов.
Технические детали
- Соответствие RFC 7519
- Поддерживает JWS-токены по RFC 7519 (JWT), RFC 7515 (JWS) и RFC 7518 (JWA) — все зарегистрированные алгоритмы декодируются.
- Декодирование Base64URL
- Использует URL-безопасный алфавит Base64 (- и _ вместо + и /), определённый в RFC 4648, с разбором, толерантным к padding.
- Браузерный, без зависимостей
- Построен на atob, TextDecoder и JSON.parse браузера — без внешних библиотек, без сетевых вызовов, без телеметрии.
Лучшие практики
- Никогда не доверяйте без проверки
- Декодер показывает claims; не доказывает их. Всегда проверяйте signature на сервере по ключу эмитента, прежде чем доверять любому claim.
- Отвергайте alg:none в production
- Настройте библиотеку JWT с явным списком разрешённых алгоритмов. Никогда не принимайте alg:none и относитесь подозрительно к несовпадениям alg при ротации ключей.
- Держите payload компактным
- В JWT кладите идентификаторы и короткоживущие claims; объёмные данные держите за непрозрачным session ID. Большие токены дороги в трафике на каждом запросе.
Часто задаваемые вопросы
Как декодировать JWT-токен онлайн?
header.payload.signature) — в декодер выше. Декодирование происходит мгновенно в браузере: header и payload декодируются из Base64URL в читаемый JSON, а signature отображается как сырая строка. Строка статуса показывает алгоритм подписи, время выпуска и срок действия — истёкший токен виден сразу. Чтобы декодировать JWT вручную, разделите токен по точкам, декодируйте первые два сегмента из Base64URL и разберите как JSON — любой, у кого есть токен, может прочитать его claims, потому что payload закодирован, а не зашифрован. Декодер безопасен для production-токенов: ничего не покидает устройство — нет сетевых запросов, логирования и трекинга. Что такое JWT (JSON Web Token)?
Безопасен ли мой токен в этом декодере JWT?
Как работает декодер JWT?
Может ли инструмент проверить подпись JWT?
Что такое iat, exp, nbf, iss, aud, sub и jti?
Мой JWT истёк — почему декодер всё равно его декодирует?
В чём разница между JWT, JWS и JWE?
Почему alg:none опасен?
alg:none не имеет signature — любой может его создать, выдавая себя за любого пользователя. Ранние библиотеки JWT принимали alg:none по умолчанию, что привело к известному классу обходов аутентификации: атакующий снимал signature, ставил alg в none и подделывал admin-токен. Все зрелые библиотеки JWT теперь отвергают alg:none, если он явно не разрешён, и принимать его для аутентифицированных запросов нельзя. Декодер всё равно покажет alg:none-токен — изучать его при отладке законно — но любой такой токен в production считайте враждебным. Какие алгоритмы поддерживает этот декодер JWT?
Хранить JWT в localStorage или cookie?
Как декодировать JWT в Node.js, Python или Go?
jsonwebtoken.decode(token) для чтения, jsonwebtoken.verify(token, key) для проверки. Python: PyJWT.decode(token, options={'verify_signature': False}) для чтения, передайте key для проверки. Go: jwt.ParseUnverified(token, claims) для чтения, jwt.Parse(token, keyFunc) для проверки. В любом языке никогда не используйте options={'verify_signature': False} в production-коде — этот веб-инструмент делает так намеренно для отладки, и это безопасно только при просмотре, а не при аутентификации. Каков максимальный размер JWT?
Я вставил токен и получил «Invalid JWT format» — что не так?
header.payload.signature. Частые причины: (1) случайно скопирован только сегмент payload, (2) внутри пробелы или переносы строк, (3) токен обрезан при передаче (часто из-за переноса в терминале), (4) токен — JWE с форматом header.encryptedKey.iv.ciphertext.tag (пять сегментов), (5) токен URL-кодирован, и нужно сначала URL-декодировать. Проверьте сырое значение из API — большинство редакторов показывают невидимые символы при наведении. Можно ли декодировать JWT без секретного ключа?
JWT работает в Postman, но бэкенд его отвергает — как отлаживать?
HS256 провалится при библиотеке, настроенной только на RS256. (4) kid — если используете ротацию ключей, есть ли key ID из header в JWKS? (5) signature — вставлен правильный секрет/открытый ключ? Декодер показывает (1), (2), (3), (4) в header и payload, чтобы быстро их исключить. Похожие инструменты
Все инструменты →Генератор MD5-хешей и контрольных сумм файлов
Безопасность
Создавайте MD5, SHA-256, SHA-1 и SHA-512 хеши онлайн бесплатно. Хеширование текста или файлов в браузере, проверка контрольных сумм и копирование результатов. Без регистрации.
Генератор случайных паролей — настраиваемый и безопасный
Безопасность
Генерируйте сильные случайные пароли мгновенно — бесплатно, 100% в браузере. Настройка длины и символов, batch до 50 с анализом энтропии.
Генератор и декодер UUID — v1, v4, v5, v7
Безопасность
Бесплатный генератор UUID — создавайте UUID v1, v4, v5, v7 мгновенно. Декодирование и проверка любого UUID. Пакетная генерация до 50 штук. Без регистрации, всё в браузере.
Конвертер систем счисления — bin, hex, dec, oct
Конвертеры
Конвертация между системами счисления — двоичной, hex, десятичной, восьмеричной и любой базой 2-36 мгновенно. Бесплатно, приватно — вся обработка в браузере.
Base64 декодер и кодировщик
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
Сжатие изображений онлайн — JPEG, PNG и WebP
Конвертеры
Сжимайте JPEG, PNG и WebP до 80% меньше — в браузере, без загрузки. Batch до 20 изображений, регулировка качества, сравнение «до и после». Бесплатно и приватно.