Skip to content

JWT-энкодер и генератор

Бесплатный онлайн-генератор и энкодер JWT. Соберите header и payload, подпишите с HS256, RS256 или ES256 мгновенно. 100% в браузере — ваш секрет и ключ не покидают устройство.

Без отслеживания Работает в браузере Бесплатно
Payload (claims)
Вставить зарегистрированный claim:
Секрет
Подписано локально в браузере — ваш секрет и приватный ключ не покидают устройство.
Следует поведению подписи RFC 7515/7518, вывод перекрёстно проверен независимой проверяющей стороной с открытым ключом — Команда безопасности Go-Tools · Jun 11, 2026

Что такое JWT-энкодер?

JWT-энкодер собирает и криптографически подписывает JSON Web Token из header и payload claims. JWT, определённый в RFC 7519 — это три Base64URL-кодированных секции, соединённых точками: header.payload.signature. Header называет алгоритм подписи; payload несёт claims (о ком токен, что он разрешает, когда истекает); а signature — криптографическое доказательство, вычисленное над header и payload секретом или приватным ключом, позволяющее получателю обнаружить подделку.

«JSON Web Token (JWT) — компактный формат представления claims для сред с ограниченным пространством, таких как заголовки HTTP Authorization и параметры запросов URI». — RFC 7519, раздел 1

Энкодинг — обратная операция к декодированию. Декодер JWT читает claims существующего токена; энкодер берёт предоставленные вами claims и создаёт совершенно новый подписанный токен. Именно шаг подписи отличает настоящий JWT от произвольного Base64 — без валидной подписи ни один проверяющий не примет токен. Этот инструмент подписывает нативным Web Crypto API браузера в семействах HMAC (HS), RSA (RS, PS) и ECDSA (ES), поэтому вся операция происходит на вашем устройстве без зависимостей и без сетевых вызовов.

Разработчики берут JWT-энкодер постоянно: чтобы выпустить токен для проверки защищённого endpoint API, воспроизвести точную форму claims, которую выпускает OAuth-сервер, чтобы отладить баг, собрать фикстуры для интеграционных тестов или передать коллеге готовый Bearer-токен для curl-команды. Поскольку payload закодирован, а не зашифрован, JWT безопасно передавать по сети, но он никогда не должен нести секреты — любой, у кого есть токен, может прочитать каждый claim, и только signature не даёт его изменить.

Работа с JWT естественно пересекается с другими инструментами разработчика. После подписи декодируйте токен, чтобы подтвердить его claims, преобразуйте exp и iat между Unix-временем и человеческими датами или вычислите SHA-256-хеш, когда нужна базовая хеш-функция, на которой построен HMAC у HS256. Поскольку каждый сегмент JWT закодирован в Base64URL, инструмент Base64 удобен при ручном разборе токена; для подробного разбора кодирования смотрите наше руководство по основам Base64.

// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
  const b64url = (bytes) =>
    btoa(String.fromCharCode(...new Uint8Array(bytes)))
      .replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
  const enc = (obj) =>
    b64url(new TextEncoder().encode(JSON.stringify(obj)));

  const header = { alg: 'HS256', typ: 'JWT' };
  const signingInput = `${enc(header)}.${enc(payload)}`;

  const key = await crypto.subtle.importKey(
    'raw', new TextEncoder().encode(secret),
    { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
  const sig = await crypto.subtle.sign(
    'HMAC', key, new TextEncoder().encode(signingInput));

  return `${signingInput}.${b64url(sig)}`;
}

const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0....

Ключевые возможности

Мгновенная генерация и подпись JWT

Редактируйте payload и наблюдайте обновление подписанного токена в реальном времени — header, payload и signature вычисляются на лету. Кнопки «Сгенерировать» нет, обращений к серверу нет.

Полное покрытие алгоритмов

Подписывайте с HS256/384/512, RS256/384/512, PS256/384/512 и ES256/384/512 — все распространённые семейства JWS, всё через нативный Web Crypto API браузера.

Ключи не покидают устройство

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

Помощники быстрых claims

Вставьте iss, sub, aud, iat, nbf или часовой exp одним кликом — без ручных Unix timestamp, без синтаксических ошибок.

Вывод с цветовой разметкой

Подписанный токен разбит на сегменты header, payload и signature разными цветами, так что структура очевидна с первого взгляда и удобна для копирования.

Без зависимостей

Построен только на Web Crypto API браузера и JSON — без внешних библиотек, без телеметрии, без каких-либо сетевых вызовов.

Примеры

HS256 токен сессии

{
  "sub": "user_123",
  "name": "Alice",
  "role": "admin",
  "iat": 1715000000,
  "exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>

Токен с подписью HMAC-SHA256 на общем секрете — самая частая схема для stateless-аутентификации сессий. Любой, у кого есть тот же секрет, может его проверить.

RS256 access-токен

{
  "iss": "https://auth.example.com",
  "aud": "api.example.com",
  "sub": "90087165",
  "scope": "read:user write:post",
  "iat": 1715000000,
  "exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8)
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>

Подписанный RSA access-токен в стиле OAuth. Токен подписывается вашим приватным ключом и проверяется любым, у кого есть соответствующий открытый ключ — идеально, когда проверяющая сторона не должна уметь выпускать токены.

ES256 компактный токен

{
  "sub": "device-42",
  "iat": 1715000000,
  "exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256)
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>

ECDSA-токен на кривой P-256. Подписи ES256 значительно короче RSA при сопоставимой стойкости, что сохраняет токен компактным для устройств с ограниченными ресурсами.

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

  1. 1

    Отредактируйте claims payload

    Запишите нужные токену claims как JSON в редакторе payload. Используйте чипы быстрых claims, чтобы вставить iss, sub, aud, iat, nbf или часовой exp, не набирая timestamp.

  2. 2

    Выберите алгоритм и введите ключ

    Выберите алгоритм подписи. Для HS256/384/512 введите секрет; для алгоритмов RS, PS или ES вставьте приватный ключ PKCS8 PEM. Токен подписывается локально по мере ввода.

  3. 3

    Скопируйте подписанный JWT

    Подписанный токен появляется мгновенно, с цветовой разметкой по сегментам. Нажмите «Скопировать», чтобы перенести его в Authorization-заголовок, curl-команду или тест. Ваш ключ не покидал браузер.

Common Errors

Использование слабого HMAC-секрета

Безопасность HS256 целиком зависит от энтропии секрета. Короткий или предсказуемый секрет позволяет атакующим подобрать его и подделать токены. Используйте не менее 256 бит случайности.

✗ Неверно
secret: "password123"  // guessable, low entropy
✓ Верно
secret: base64(crypto.randomBytes(32))  // >=256 random bits

Пропуск claim exp

Токен без exp никогда не истекает. При утечке нет естественной точки отзыва. Всегда задавайте срок действия, подходящий типу токена.

✗ Неверно
{ "sub": "user_123", "role": "admin" }  // no exp
✓ Верно
{ "sub": "user_123", "role": "admin", "exp": 1715003600 }

Вставка ключа PKCS1 вместо PKCS8

Web Crypto API импортирует только приватные ключи PKCS8. Традиционный RSA-ключ PKCS1 не импортируется — сначала преобразуйте его.

✗ Неверно
-----BEGIN RSA PRIVATE KEY-----  // PKCS1, not supported
✓ Верно
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem

Типичные сценарии

Генерация токенов для тестирования API
Сгенерируйте HS256 Bearer-токен за секунды, чтобы проверить защищённый endpoint из curl, Postman или интеграционного теста.
Воспроизведение токенов OAuth и OIDC
Соберите RS256 или ES256 токен, повторяющий то, что выпускает ваш сервер авторизации, чтобы отладить несовпадения claims и audience.
Создание тестовых фикстур
Создавайте детерминированные подписанные токены для модульных и интеграционных тестов без поднятия полноценного сервера аутентификации.
Отладка сбоев авторизации
Воссоздайте форму токена клиента — issuer, audience, scope, срок действия — чтобы найти, почему бэкенд его отвергает.
Проверка проверяющей стороны
Подпишите токены известным ключом, чтобы убедиться, что ваше middleware проверки принимает валидные токены и отвергает подделанные.
Прототипирование флоу аутентификации
Передавайте коллегам готовые к использованию токены при сборке нового логина, микросервиса или межсервисного вызова.

Технические детали

Соответствие RFC 7519 / 7515 / 7518
Создаёт JWS-токены, соответствующие RFC 7519 (JWT), RFC 7515 (JWS) и RFC 7518 (JWA), с зарегистрированными идентификаторами алгоритмов в header.
Нативная подпись Web Crypto
Подписывает через crypto.subtle для HMAC, RSASSA-PKCS1-v1_5, RSA-PSS и ECDSA. Подписи ECDSA выдаются как сырые r||s, ровно как требует JWS.
Base64URL, без зависимостей
Header и payload кодируются в Base64URL URL-безопасным алфавитом (RFC 4648), без padding. Без внешних библиотек, без сетевых вызовов, без телеметрии.

Лучшие практики

Всегда задавайте срок действия
Включайте claim exp, чтобы утёкший токен переставал быть валидным. Короткое время жизни сужает радиус поражения — минуты для access-токенов, не дни.
Не держите секреты в payload
Payload JWT читаем любым, у кого есть токен. Кладите в него идентификаторы и scope; никогда — пароли, API-ключи или полные PII.
Подписывайте на сервере в production
Используйте этот инструмент для тестов и отладки. В реальных системах подписывайте токены на сервере поддерживаемой библиотекой с ключом из менеджера секретов.

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

Как сгенерировать JWT онлайн?
Отредактируйте JSON payload в поле выше, выберите алгоритм подписи (HS256 — по умолчанию и требует только секрета) и введите секрет или вставьте приватный ключ в формате PKCS8 PEM. Подписанный токен появляется мгновенно, с цветовой разметкой сегментов header, payload и signature, так что весь токен копируется в один клик. Подпись выполняется целиком в браузере через нативный Web Crypto API — нет кнопки «Сгенерировать», которой надо ждать, и нет запроса на сервер, поэтому подписывать токены реальными ключами безопасно прямо во время разработки.
Что такое генератор JWT?
Генератор JWT — это инструмент, который собирает и криптографически подписывает JSON Web Token из header и payload claims, выдавая строку header.payload.signature, пригодную как Bearer-токен. Это обратная операция к декодеру JWT: вместо чтения существующего токена он создаёт новый, подписанный вашим секретом (HS256) или приватным ключом (RS256/ES256). Этот генератор работает целиком в браузере, поэтому токен создаётся мгновенно, а ключ подписи не покидает устройство.
Бесплатен ли этот генератор JWT и безопасен ли в использовании?
Да — он полностью бесплатен, без регистрации, без рекламы и без трекинга. Он безопасен, потому что вся подпись происходит локально в браузере через Web Crypto API: ваш payload, секрет и приватный ключ никогда не загружаются, не логируются и не сохраняются, а инструмент вообще не делает сетевых запросов. Это делает его пригодным даже при работе с чувствительными ключами, хотя использование одноразовых тестовых ключей всегда самая безопасная привычка.
Безопасно ли вводить здесь секрет или приватный ключ?
Да. Подпись происходит локально в браузере; ваш секрет и приватный ключ никогда не отправляются на сервер, не логируются, не сохраняются и не используются для аналитики. Нет cookie и трекинга. Это важно, потому что ключ подписи JWT может выпускать валидные учётные данные — вставка его в удалённый инструмент равносильна передаче ключей от вашей системы аутентификации. Поскольку всё работает на стороне клиента, этот энкодер безопасен для production-ключей, но по возможности всё же предпочитайте одноразовые или тестовые ключи.
В чём разница между HS256 и RS256?
HS256 (HMAC-SHA256) использует один общий секрет и для подписи, и для проверки. Это просто и быстро, но любая сторона, способная проверить токен, может его и создать, поэтому секрет должен оставаться только на доверенных серверах. RS256 (RSA-SHA256) использует пару ключей: вы подписываете приватным ключом, а другие проверяют открытым. Это позволяет свободно распространять открытый ключ — клиентским приложениям, партнёрским сервисам или JWKS-endpoint — не давая никому возможности подделать токены. Используйте HS256 для симметричных систем с одним владельцем; используйте RS256 или ES256, когда проверяющие не должны уметь выпускать токены.
Какие алгоритмы поддерживает этот JWT-энкодер?
Он подписывает с HS256, HS384, HS512 (HMAC на общем секрете), RS256, RS384, RS512 (RSA PKCS#1 v1.5), PS256, PS384, PS512 (RSA-PSS) и ES256, ES384, ES512 (ECDSA на P-256, P-384 и P-521). Все они создаются нативным Web Crypto API браузера, поэтому нет сторонних библиотек и ничто не покидает вашу машину. Алгоритмы HMAC принимают текстовый или Base64-секрет; семейства RSA и ECDSA принимают приватный ключ в формате PKCS8 PEM.
Как задать claim exp (срок действия)?
Добавьте в payload claim exp как Unix timestamp в секундах — например "exp": 1999999999. Быстрее всего — чип exp +1h под payload, который вставляет срок истечения через час от текущего момента. Так же можно добавить iat (issued-at) и nbf (not-before). Помните, что exp задаётся в секундах, а не миллисекундах, и что проверяющие сравнивают его со своими часами, поэтому синхронизируйте время серверов, чтобы избежать преждевременных отклонений. Чтобы преобразовать дату в Unix timestamp, используйте наш конвертер Unix timestamp.
Как получить приватный ключ PKCS8 PEM для RS256 или ES256?
Для RSA: openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Для ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Обе команды выдают блок PKCS8 PEM, начинающийся с -----BEGIN PRIVATE KEY----- — именно это ожидает инструмент. Вставьте весь блок, включая строки header и footer. Соответствующий открытый ключ — для проверки токена — выводится командой openssl pkey -in private.pem -pubout.
Как проверить только что сгенерированный токен?
Вставьте его в наш декодер JWT, чтобы убедиться, что header и payload декодируются как ожидалось. Чтобы проверить саму подпись, используйте сервер или SDK с правильным ключом: jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) в Node.js, PyJWT.decode(token, key, algorithms=['RS256']) в Python или jwt.Parse(token, keyFunc) в Go. Никогда не проверяйте с пустым списком алгоритмов или с verify_signature=False в production — всегда фиксируйте точный ожидаемый алгоритм.
Что положить в payload?
Держите его компактным. Зарегистрированные claims из RFC 7519 — это iss (issuer), sub (subject — обычно ID пользователя), aud (audience), exp (expiration), nbf (not before), iat (issued at) и jti (ID токена). Помимо них можно добавить прикладные claims вроде role, scope или email. Не помещайте секреты в payload — JWT закодирован, а не зашифрован, поэтому любой, у кого есть токен, может прочитать каждый claim. Держите токены примерно до 4 КБ, чтобы они помещались в Authorization-заголовки и cookie.
Зашифрован ли JWT?
Нет. Стандартный подписанный JWT (это JWS) закодирован в Base64URL, а не зашифрован. Подпись доказывает, что токен не был подделан и выпущен владельцем ключа, но header и payload полностью читаемы любым, у кого есть токен. Если нужно, чтобы сам payload был конфиденциальным, нужен JWE (зашифрованный JWT) — это другой формат. Этот инструмент создаёт подписанные JWS-токены, которые используются в подавляющем большинстве флоу аутентификации и авторизации.
Почему не получается подписать RS256 или ES256?
Самые частые причины: (1) ключ не в формате PKCS8 — преобразуйте традиционный ключ -----BEGIN RSA PRIVATE KEY----- (PKCS1) командой openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem; (2) кривая не соответствует алгоритму — ES256 требует ключа P-256, ES384 требует P-384, ES512 требует P-521; (3) вы вставили открытый ключ или сертификат вместо приватного ключа; либо (4) ключ зашифрован парольной фразой, которую Web Crypto API не может импортировать напрямую. Сначала расшифруйте его командой openssl pkey и вставьте незашифрованный блок PKCS8.
Поддерживает ли инструмент неподписанный токен alg:none?
Нет, и это сделано намеренно. Токен alg:none не имеет подписи, а значит, любой может его подделать — это корень классической уязвимости обхода аутентификации JWT. Поскольку весь смысл энкодера — создать подписанный токен, инструмент предлагает только настоящие алгоритмы подписи. Если вы изучаете alg:none для security-исследований, можно собрать его вручную, закодировав header и payload в Base64URL и оставив сегмент signature пустым — токен всё равно оканчивается точкой (header.payload.) — но в production такой токен принимать нельзя никогда.
Можно ли сгенерировать JWT в коде?
Да. В Node.js: jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). В Python: jwt.encode(payload, key, algorithm='RS256') с PyJWT. В Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Этот инструмент — самый быстрый способ получить токен для быстрого теста, curl-запроса или фикстуры, но в прикладном коде токены следует генерировать на стороне сервера поддерживаемой библиотекой с ключом из менеджера секретов, а не зашитым в код.

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

Все инструменты →

Декодер JWT

Безопасность

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

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

Безопасность

Создавайте MD5, SHA-256, SHA-1 и SHA-512 хеши онлайн бесплатно. Хеширование текста или файлов в браузере, проверка контрольных сумм и копирование результатов. Без регистрации.

Генератор случайных паролей — настраиваемый и безопасный

Безопасность

Генерируйте сильные случайные пароли мгновенно — бесплатно, 100% в браузере. Настройка длины и символов, batch до 50 с анализом энтропии.

Генератор SHA-1 хешей (160-бит, устаревший)

Безопасность

Получайте SHA-1 хеши в браузере — 40-символьный hex-вывод, без загрузки на сервер. Устаревший инструмент для отпечатков Git, проверки старых сертификатов и аудита миграции.

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

Безопасность

Получайте SHA-256 хеши онлайн бесплатно. Хеширование текста или файлов в браузере, проверка контрольных сумм, 64-символьный hex-вывод. Без регистрации; данные не покидают страницу.

Генератор SHA-3 хешей (Keccak SHA3-256)

Безопасность

Получайте SHA-3 хеши онлайн бесплатно. Конструкция губки NIST FIPS 202 — постSHA-2 стандарт. Вывод SHA3-256 в 64 hex-символах. Только в браузере через отложенно загружаемый js-sha3; без загрузки данных.