Кодировщик / декодер JWT
Вставьте токен, чтобы прочитать заголовок и payload, или подпишите свой из собственных claims — без кнопок и загрузок.
Необязателен при декодировании (заполните для проверки), обязателен для подписи.
Подпись:
Токен
Заголовок
Payload
Как пользоваться
- Вставьте токен: заголовок и payload появляются сразу, нажимать нечего. Всё, что пришло из токена, остаётся точно таким, каким было подписано, — ввод никогда не переписывается.
- Добавьте секрет под полем ввода, чтобы проверить подпись. Пустое поле означает «не проверена»: claims всё равно читаются как есть.
- Переключитесь на «Кодировать», напишите claims в JSON, выберите HS256/384/512 и секрет, затем скопируйте получившийся токен. Смена режима никогда не очищает введённое.
- Стандартные claims exp / iat / nbf расписываются на вашем языке и в вашем часовом поясе, с пометками об истечении и о ещё не наступившем сроке.
Пример
Токен
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1LTEwMjQiLCJuYW1lIjoiSmFuZSBDb29wZXIiLCJyb2xlIjoiZWRpdG9yIiwiaXNzIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc5ODc2MTYwMH0.jCqliF6m-TAglXcHrjuXj7kYIjjsRO7kv6_8O1yb_7Q
Заголовок и payload
Заголовок
{
"alg": "HS256",
"typ": "JWT"
}
Payload
{
"sub": "u-1024",
"name": "Jane Cooper",
"role": "editor",
"iss": "https://api.example.com",
"iat": 1767225600,
"exp": 1798761600
}Подписано секретом "dev-secret-change-me"; введите его в поле «Секрет», и строка состояния сменится на «Подпись подтверждена». Переключитесь на «Кодировать» и нажмите «Пример», чтобы получить тот же payload: с тем же секретом токен соберётся символ в символ.
Правила, ограничения и известные проблемы
- Поддерживаются только HS256, HS384 и HS512 — и для подписи, и для проверки. Токены RS*, ES* и PS* декодируются и показываются как есть, но их подпись никогда не проверяется: для этого нужен открытый ключ, поэтому строка состояния говорит об этом, а не угадывает.
- Токены без подписи (alg: none) декодируются и явно помечаются, но никогда не создаются: попытка подписать без секрета даёт ошибку, а не токен без подписи.
- При кодировании заголовок строится сам (`{"alg": … ,"typ": "JWT"}`). Поля заголовка вроде kid, jku, x5c или cty не переносятся — инструмент подписывает claims, а не цепочки сертификатов.
- Ваш JSON с claims перед подписью сериализуется компактно, поэтому отступы и комментарии в токен не попадают. Порядок ключей следует объектам JavaScript: повторяющиеся ключи схлопываются в последний, а ключи, похожие на числа, уходят вперёд.
- Очень большие целые теряют точность — `12345678901234567890` вернётся округлённым, потому что так работают числа JavaScript. Ничего не исправляется молча; если важны точные цифры, используйте строки.
- Claims показываются с отступами для чтения, а подпись покрывает сырые сегменты точно в том виде, в каком они в токене. Ничего не перекодируется за вашей спиной, поэтому токен, проверенный здесь, проверится и в вашем коде.
- Base64url строг: `+`, `/` и `=` сообщаются как ошибки, а не принимаются молча, а байты, не являющиеся UTF-8, сообщаются, а не заменяются символами замены. Пробелы внутри вставленного токена игнорируются, поскольку в токенах их не бывает.
- Зашифрованные JWE (пять частей) не расшифровываются — вы узнаете, что вставили именно их.
- Ограничение размера — 10 000 символов. Ничего не загружается, не сохраняется, не пишется в URL и не передаётся: кнопка «Поделиться» делится только адресом страницы, никогда вашим токеном или секретом.
Похожие инструменты
Когда claims прочитаны, обычно переходят к этому.