Skip to content

Декодер JWT

Декодируйте JWT-токены онлайн бесплатно. Просмотр header, payload, signature, срока действия, алгоритма и claims. 100% в браузере — токен не покидает устройство. Без регистрации.

Без отслеживания Работает в браузере Бесплатно
JWT-токен
Проверено на соответствие RFC 7519 и гарантии приватности — Команда безопасности Go-Tools · Apr 22, 2026

Что такое 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. 1

    Вставьте JWT для декодирования

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

  2. 2

    Прочитайте header, payload и статус

    Прочитайте алгоритм и тип токена в декодированном header, claims в payload и плашки exp / iat вверху. Истёкший токен помечен красным.

  3. 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-токен онлайн?
Вставьте полный JWT — все три сегмента, разделённые точками (header.payload.signature) — в декодер выше. Декодирование происходит мгновенно в браузере: header и payload декодируются из Base64URL в читаемый JSON, а signature отображается как сырая строка. Строка статуса показывает алгоритм подписи, время выпуска и срок действия — истёкший токен виден сразу. Чтобы декодировать JWT вручную, разделите токен по точкам, декодируйте первые два сегмента из Base64URL и разберите как JSON — любой, у кого есть токен, может прочитать его claims, потому что payload закодирован, а не зашифрован. Декодер безопасен для production-токенов: ничего не покидает устройство — нет сетевых запросов, логирования и трекинга.
Что такое JWT (JSON Web Token)?
JSON Web Token (JWT) — это компактный URL-безопасный токен (удостоверяющий контейнер), переносящий claims между двумя сторонами. Определена в RFC 7519, состоит из трёх Base64URL-кодированных секций, разделённых точками: header (алгоритм и тип токена), payload (claims — данные о пользователе и самом токене) и signature (криптографическое доказательство, что токен выпущен доверенной стороной). JWT — стандартный способ представления access-токенов в OAuth 2.0 и ID-токенов в OpenID Connect.
Безопасен ли мой токен в этом декодере JWT?
Да. Всё декодирование выполняется в браузере через нативные JavaScript API (atob и TextDecoder). Токен не отправляется на сервер, не логируется, не сохраняется и не используется для аналитики. Нет cookie и трекинга. Это важно, потому что JWT может содержать живые access-токены — вставка в удалённый отладчик равносильна передаче учётных данных. Наш инструмент безопасен для production-токенов.
Как работает декодер JWT?
Декодер JWT разбивает токен по точкам на три части, декодирует header и payload из Base64URL и разбирает их как JSON. Signature остаётся непрозрачной строкой Base64URL, потому что её проверка требует секрета или открытого ключа эмитента — клиентский декодер не может сделать это безопасно. Декодирование мгновенно показывает claims, но подпись нужно проверять на сервере с правильным ключом, прежде чем доверять чему-либо внутри.
Может ли инструмент проверить подпись JWT?
Нет, и это намеренно. Проверка подписи требует секрета эмитента (для HMAC) или открытого ключа (для RSA/ECDSA/EdDSA), которые никогда не следует вставлять в публичный веб-инструмент. Проверка должна происходить на сервере, в auth-middleware или в SDK с доступом к JWKS-endpoint. Этот декодер — для просмотра содержимого токена; он не означает, что токен подлинный или не изменён.
Что такое iat, exp, nbf, iss, aud, sub и jti?
Это зарегистрированные claims из RFC 7519. iat (issued at) — Unix timestamp создания токена. exp (expiration) — момент окончания действия токена; инструмент конвертирует его в читаемую дату и помечает токен истёкшим, если exp в прошлом. nbf (not before) — самое раннее время использования токена. iss (issuer) — кто создал токен. aud (audience) — предполагаемый получатель. sub (subject) — субъект, обычно ID пользователя. jti — уникальный ID токена для защиты от replay. Прикладные claims (role, scope, email, name) живут рядом.
Мой JWT истёк — почему декодер всё равно его декодирует?
Декодирование — не то же самое, что валидация. Декодер JWT читает содержимое независимо от срока действия — это позволяет изучить истёкший или невалидный токен и понять, почему он отклонён. Бейдж «Истёк» в этом инструменте сравнивает claim exp с локальными часами и помечает токены, у которых exp в прошлом. Реальный сервер аутентификации сразу отверг бы токен — но декодер, отказывающийся показывать истёкшие токены, был бы бесполезен для отладки.
В чём разница между JWT, JWS и JWE?
JWT — общая концепция: JSON-объект, закодированный как компактный токен. JWS (RFC 7515) — подписанный JWT: payload читаем любым, кто декодирует, а signature доказывает отсутствие подделки. Это самый частый JWT, с которым вы столкнётесь. JWE (RFC 7516) — зашифрованный JWT: сам payload — шифротекст, его нельзя декодировать без ключа. Этот инструмент декодирует JWS-токены. JWE-токен декодируется только до header — зашифрованный payload без ключа нечитаем.
Почему alg:none опасен?
JWT с alg:none не имеет signature — любой может его создать, выдавая себя за любого пользователя. Ранние библиотеки JWT принимали alg:none по умолчанию, что привело к известному классу обходов аутентификации: атакующий снимал signature, ставил alg в none и подделывал admin-токен. Все зрелые библиотеки JWT теперь отвергают alg:none, если он явно не разрешён, и принимать его для аутентифицированных запросов нельзя. Декодер всё равно покажет alg:none-токен — изучать его при отладке законно — но любой такой токен в production считайте враждебным.
Какие алгоритмы поддерживает этот декодер JWT?
Декодирование header и payload работает для любого алгоритма — нужны только Base64URL и разбор JSON, что не зависит от алгоритма. Инструмент корректно читает токены, подписанные HS256, HS384, HS512 (HMAC), RS256, RS384, RS512 (RSA + SHA), PS256, PS384, PS512 (RSA-PSS), ES256, ES384, ES512 (ECDSA), EdDSA (Ed25519/Ed448), и неподписанные (alg:none). Только проверка signature зависит от алгоритма, и её этот инструмент не выполняет.
Хранить JWT в localStorage или cookie?
Предпочитайте HttpOnly, Secure, SameSite=Strict cookie для токенов сессии. Токен в localStorage читается любым JavaScript на странице — одна XSS-уязвимость утекает все активные сессии. HttpOnly cookie невидимы для JavaScript, что сужает радиус поражения XSS до того, что атакующий может сделать на живой странице, а не до украденного токена для повторного использования на дни. Если localStorage необходим (например, для cross-domain приложений), держите время жизни access-токенов коротким (минуты, не часы) и используйте отдельный refresh-токен в HttpOnly cookie.
Как декодировать JWT в Node.js, Python или Go?
Node.js: 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?
Стандарт JWT не задаёт жёсткого предела, но заголовки большинства веб-серверов по умолчанию ограничены ~8 КБ. Держите токены до 4 КБ, чтобы они помещались в Authorization-заголовки и cookie. Если токен больше, вы, вероятно, кладёте слишком много claims в payload — переместите громоздкие данные за непрозрачным session ID и подгружайте их с бэкенда по необходимости. Раздутые JWT дороги при каждом запросе, потому что отправляются с каждым вызовом API.
Я вставил токен и получил «Invalid JWT format» — что не так?
Валидный JWT имеет ровно три части, разделённые точками: header.payload.signature. Частые причины: (1) случайно скопирован только сегмент payload, (2) внутри пробелы или переносы строк, (3) токен обрезан при передаче (часто из-за переноса в терминале), (4) токен — JWE с форматом header.encryptedKey.iv.ciphertext.tag (пять сегментов), (5) токен URL-кодирован, и нужно сначала URL-декодировать. Проверьте сырое значение из API — большинство редакторов показывают невидимые символы при наведении.
Можно ли декодировать JWT без секретного ключа?
Да — header и payload закодированы Base64URL, не зашифрованы. Любой, у кого есть токен, может прочитать claims без ключа. Это сделано намеренно: payload должен быть читаемым, чтобы получатель мог принимать решения авторизации. Секрет или открытый ключ нужны только для проверки целостности. Поэтому никогда не помещайте чувствительные данные (пароли, приватные ключи, PII сверх того, что получатель уже знает) в payload JWT.
JWT работает в Postman, но бэкенд его отвергает — как отлаживать?
Декодируйте токен здесь и проверьте: (1) exp — он в будущем относительно часов сервера? Расхождение часов сервера — частая причина. (2) iss / aud — точно совпадают с ожидаемым на бэкенде? Несовпадение aud — самый частый ложный негатив. (3) alg — позволяет ли ваш код этот алгоритм? Токен 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 изображений, регулировка качества, сравнение «до и после». Бесплатно и приватно.