CodeKitHub
Інструменти кодування

Декодер JWT

Останнє оновлення:

Вставте будь-який JWT (JSON Web Token) і миттєво побачите його заголовок і корисне навантаження в декодованому й відформатованому вигляді — включно з тим, чи закінчився термін дії. Усе відбувається у вашому браузері: токен нікуди не надсилається, і перевірка підпису не виконується (цей інструмент лише декодує, а не перевіряє, чи справжній токен).

Header

Payload

Decoded entirely in your browser — no signature verification, and the token is never sent anywhere.

Що це за інструмент?

JWT (JSON Web Token) — це компактний, безпечний для URL рядок, що використовується для передачі claims між двома сторонами — найчастіше як токен автентифікації після входу. Він складається з трьох частин, розділених крапками: заголовка (алгоритм і тип токена), корисного навантаження (фактичні claims — ID користувача, ролі, термін дії тощо) і підпису (використовується сервером для перевірки, що токен не був змінений).

Заголовок і корисне навантаження — це просто JSON, закодований у Base64URL, а не зашифрований, тож будь-хто може декодувати й прочитати їх без секретного ключа. Лише для перевірки підпису потрібен секрет. Саме це й робить цей інструмент: декодує читабельні частини й показує їх у вигляді відформатованого JSON, не намагаючись перевірити підпис.

JWT стандартизовано в RFC 7519, а рівень підпису (JWS) визначено окремо в RFC 7515 — корисні джерела, коли потрібен офіційний перелік зареєстрованих claims, таких як exp, iat, sub та aud.

Навіщо його використовувати?

  • Миттєво читабельний заголовок і корисне навантаження, відформатовані як JSON — більше не потрібно вручну розділяти рядок і декодувати Base64.
  • Автоматична перевірка терміну дії: якщо корисне навантаження містить claim "exp", воно перетворюється на читабельну дату й позначається як прострочене чи дійсне.
  • Копіювання в один клік для заголовка чи корисного навантаження окремо.
  • 100% на стороні клієнта — токен декодується локально й ніколи не передається, безпечно використовувати навіть із токенами з продакшн-системи.
  • Перевірка підпису не виконується й не заявляється — це інструмент для налагодження/перегляду, а не валідатор.

Як користуватися

  1. Вставте ваш JWT у поле (повний рядок, включно з усіма трьома частинами, розділеними крапками).
  2. Заголовок і корисне навантаження декодуються автоматично під час вводу.
  3. Перевірте рядок терміну дії, якщо токен має claim "exp" — він показує точну дату й чи закінчився термін дії токена.
  4. Натисніть "Копіювати" під будь-яким полем, щоб скопіювати цю частину як JSON.

Приклад

Введення

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQ

Результат

Заголовок: {"alg": "HS256"}
Корисне навантаження: {"sub": "1234", "name": "John Doe", "exp": 1700000000}

Підпис (третя частина) ніколи не декодується й не перевіряється — це непрозорий хеш, що використовується на сервері для перевірки автентичності.

Практичні поради

  • Налагодження помилок "недійсний токен": спочатку декодуйте корисне навантаження, щоб перевірити claim "exp" — прострочений токен є найпоширенішою причиною, і це не завжди очевидно з самого повідомлення про помилку.
  • Перевірка вмісту токена стороннього API: багато API повертають непрозорий на вигляд JWT як токен доступу — декодуйте його тут, щоб побачити області доступу, ID користувача чи термін дії, які фактично отримує ваша інтеграція.
  • Ніколи не вважайте, що JWT зашифрований: якщо ви бачите чутливі дані (email, внутрішні ID) у декодованому корисному навантаженні під час розробки, це сигнал перенести ці дані на сервер, а не покладатися, що клієнт їх не прочитає.

Поширені claims, які ви побачите в корисному навантаженні

ClaimЗначення
subSuject — зазвичай ID користувача, якого представляє токен
expЧас закінчення терміну дії (Unix-мітка) — токен недійсний після цього моменту
iatIssued at — коли токен було створено
issIssuer — який сервіс/сервер видав токен
audAudience — для якого сервісу призначений токен
role / roles / scopeВласні claims — права чи ролі, надані користувачу (не є частиною стандарту JWT, але зустрічаються дуже часто)

Часті запитання

Чи перевіряє цей інструмент підпис JWT?

Ні. Перевірка підпису вимагає секретного або публічного ключа, використаного для підписання токена, який має лише видавний сервер. Цей інструмент лише декодує заголовок і корисне навантаження — читабельні частини — щоб ви могли переглянути claims і термін дії без потреби в будь-якому ключі.

Чи безпечно вставляти сюди реальний продакшн-токен JWT?

Декодування відбувається повністю у вашому браузері за допомогою JavaScript — токен ніколи не надсилається на жоден сервер, включно з нашим. Тим не менш, ставтеся до токенів як до паролів: не вставляйте їх в інструменти, яким не довіряєте, і уникайте показу скриншотів декодованих токенів, що містять чутливі claims.

Чому будь-хто може прочитати корисне навантаження мого JWT без пароля?

Так і задумано — заголовок і корисне навантаження JWT кодуються в Base64URL, а не шифруються. Кодування — це не безпека; воно просто робить JSON безпечним для URL при передачі. Ніколи не кладіть секрети (паролі, номери кредитних карт) безпосередньо в корисне навантаження JWT — вважайте, що будь-хто, у кого є токен, може прочитати його вміст.

Що означає claim "exp" і чому це важливо?

"exp" — це час закінчення терміну дії токена, у вигляді Unix-мітки часу (секунди з 1970 року). Сервери відхиляють JWT, щойно цей час минув, змушуючи клієнта повторно автентифікуватися. Цей інструмент перетворює його на читабельну дату й позначає, чи термін уже минув, що корисно для налагодження проблем на кшталт "чому мене вилогінило".

Мій токен показує помилку розбору JSON — чому?

Або рядок не є дійсним JWT (має складатися рівно з трьох частин, розділених крапками), або він був обрізаний чи змінений — поширена причина — токен, випадково розбитий на кілька рядків, або відсутні кінцеві символи при копіюванні.

Схожі інструменти