JWT Decoder

Dekoder / Enkoder JWT

Zdekoduj dowolny JSON Web Token, aby zobaczyć jego nagłówek, payload i podpis — albo podpisz nowy token HS256/384/512. Weryfikuje podpisy HMAC lokalnie. 100% w Twojej przeglądarce.

Dekoder / Enkoder JWT — TL;DR

Zdekoduj dowolny JSON Web Token, aby zobaczyć jego nagłówek, payload i podpis — albo podpisz nowy token HS256/384/512. Weryfikuje podpisy HMAC lokalnie. 100% w Twojej przeglądarce.

Nie. Całe narzędzie to JavaScript wewnątrz tej strony. Wklej token, dekodowanie odbywa się w Twojej przeglądarce, bajty nigdy nie opuszczają karty. Otwórz DevTools → Network i obserwuj — żadne żądania nie są wysyłane podczas dekodowania ani weryfikacji. Dzięki temu można bezpiecznie wklejać prawdziwe tokeny klientów lub produkcyjne.

Udowadnia, że token został podpisany przez kogoś posiadającego sekret (HMAC) lub klucz prywatny (RSA/ECDSA). NIE szyfruje payloadu — nagłówek i payload to po prostu JSON zakodowany w base64url, każdy posiadacz tokenu może je odczytać. Podpis blokuje jedynie modyfikacje: jeśli zmienisz pojedynczy bajt payloadu, podpis przestanie pasować.

JWT często zawiera ID użytkownika, e-mail, scopes i czasem ekwiwalent ciasteczek sesji — dokładnie te dane, których NIE wolno wklejać na obcy serwer. Dekoder iKit działa jako JavaScript już załadowany w karcie Twojej przeglądarki. Możliwe do sprawdzenia w DevTools → Network: żadnego fetch, XHR ani beacon podczas dekodowania czy weryfikacji.

Nagłówek

Payload

Podpis

Standardowe claims


            

Zweryfikuj podpis HMAC

Dla tokenów HS256/384/512 wpisz sekret podpisujący, aby zweryfikować podpis lokalnie. Dla RS256/ES256 (RSA/ECDSA) użyj biblioteki po stronie serwera — weryfikacja klucza publicznego wymaga pliku PEM, którego tutaj nie obsługujemy.

Dlaczego iKit JWT Decoder

Najszybszy sposób na debugowanie JWT — bez wysyłania, bez rejestracji, bez pośrednika między Tobą a Twoim tokenem.

Trzy panele, jedno wklejenie

Wklej JWT, zobacz zdekodowany nagłówek, payload i podpis obok siebie. Standardowe claims (iss, sub, aud, exp, iat) są opatrzone znacznikami czasu i etykietami.

Lokalna weryfikacja HMAC

Dla tokenów HS256/384/512 wpisz sekret, aby zweryfikować podpis za pomocą przeglądarkowego Web Crypto API. Sekret nigdy nie opuszcza Twojej karty.

Podpisuj własne tokeny

Przełącz na tryb Enkoduj, edytuj nagłówek i payload jako JSON, wybierz algorytm, wpisz sekret i otrzymaj podpisany token natychmiast.

Prywatność od projektu

Payloady JWT zawierają identyfikatory użytkowników, e-maile, czasem scopes — nigdy nie wklejaj ich do narzędzia serwerowego. Dekoder iKit działa jako JavaScript w Twojej przeglądarce. Możliwe do sprawdzenia w DevTools → Network.

Świadomość wygaśnięcia

Standardowe claims jak exp, nbf, iat są wyróżniane czytelnymi datami i wyraźnym znacznikiem WYGASŁY / ważny, dzięki czemu od razu widzisz, czy token jest nadal dobry.

Otwarty standard, otwarty kod

Zbudowany na natywnym Web Crypto API przeglądarki i parserze JSON — te same algorytmy co OpenSSL, libjwt, jose. Zachowanie zgodne z każdą nowoczesną biblioteką JWT.

Jak naprawdę działa dekodowanie JWT

JWT to trzy segmenty JSON zakodowane w base64url, oddzielone kropkami — to wszystko.

  1. 1

    Podziel po dwóch kropkach

    JWT wygląda jak aaa.bbb.ccc. Dzielimy po dwóch literalnych kropkach, otrzymując zakodowany nagłówek, payload i podpis. Jeśli nie dostaniemy dokładnie trzech części, token jest zniekształcony.

  2. 2

    Zdekoduj base64url każdą część

    Nagłówek i payload to JSON UTF-8 zakodowany w base64url. Base64URL = Base64 z -/_ zamiast +//= i bez paddingu. Wykonujemy atob po przywróceniu znaków, a następnie JSON.parse na powstałym ciągu.

  3. 3

    Wyrenderuj ze strukturą

    Nagłówek mówi nam o algorytmie (alg: HS256, RS256, itd.) i typie. Payload zawiera claims — standardowe (iss, sub, aud, exp, iat, nbf, jti) plus dowolne pola niestandardowe. Wyświetlamy każde w opisanej sekcji.

  4. 4

    Zweryfikuj (tylko HMAC)

    Dla HS256/384/512 ponownie obliczamy HMAC z header.payload używając wpisanego sekretu i porównujemy z podpisem w trzecim segmencie. Tak samo jak HMAC(SHA-256, secret, signing_input) zakodowane w base64url. Zgodność = podpis poprawny.

Typowe zadania debugowania JWT

Realne sytuacje, w których sięgniesz po dekoder JWT.

Inspekcja tokenu od dostawcy uwierzytelniania

Auth0, Firebase, Keycloak, AWS Cognito zwracają JWT po logowaniu. Wklej access_token, aby zobaczyć, jakie claims faktycznie otrzymuje Twoja aplikacja — jakie jest ID użytkownika, jakie scopes, kiedy wygasa?

Debugowanie 401 Unauthorized

API odrzuca Twoje żądanie? Zdekoduj token, aby sprawdzić: czy wygasł (exp w przeszłości)? Czy claim audience (aud) jest tym, czego oczekuje API? Czy issuer (iss) to właściwy tenant?

Weryfikacja podpisu webhooka

Stripe, GitHub Apps, Slack wysyłają payloady webhooków podpisane jako JWT. Po otrzymaniu wklej go w trybie Dekoduj wraz ze współdzielonym sekretem, aby potwierdzić, że żądanie naprawdę od nich pochodzi.

Generowanie tokenów testowych

Potrzebujesz świeżego podpisanego JWT do testu integracyjnego? Przełącz na tryb Enkoduj, edytuj payload (własne ID użytkownika, własne wygaśnięcie), wybierz HS256 + Twój testowy sekret, otrzymaj token w milisekundach. Bez round-tripu do backendu.

Dlaczego lokalne dekodowanie JWT ma znaczenie

JWT często zawiera ID użytkownika, e-mail, scopes i czasem ekwiwalent ciasteczek sesji — dokładnie te dane, których NIE wolno wklejać na obcy serwer. Dekoder iKit działa jako JavaScript już załadowany w karcie Twojej przeglądarki. Możliwe do sprawdzenia w DevTools → Network: żadnego fetch, XHR ani beacon podczas dekodowania czy weryfikacji.

  • Zero żądań sieciowych podczas dekodowania lub weryfikacji — możliwe do sprawdzenia w DevTools.
  • Sekret wpisany do weryfikacji pozostaje w pamięci przeglądarki i jest czyszczony przy Wyczyść / odświeżeniu.
  • Bezpieczne dla tokenów produkcyjnych, tokenów dostępu klientów i sekretów webhooków.

Powiązane przewodniki

Szczegółowe poradniki i porównania narzędzi z bloga iKit.

Najczęściej zadawane pytania

Czy to bezpieczne? Czy moje JWT są wysyłane?

Nie. Całe narzędzie to JavaScript wewnątrz tej strony. Wklej token, dekodowanie odbywa się w Twojej przeglądarce, bajty nigdy nie opuszczają karty. Otwórz DevTools → Network i obserwuj — żadne żądania nie są wysyłane podczas dekodowania ani weryfikacji. Dzięki temu można bezpiecznie wklejać prawdziwe tokeny klientów lub produkcyjne.

Co tak naprawdę weryfikuje podpis JWT?

Udowadnia, że token został podpisany przez kogoś posiadającego sekret (HMAC) lub klucz prywatny (RSA/ECDSA). NIE szyfruje payloadu — nagłówek i payload to po prostu JSON zakodowany w base64url, każdy posiadacz tokenu może je odczytać. Podpis blokuje jedynie modyfikacje: jeśli zmienisz pojedynczy bajt payloadu, podpis przestanie pasować.

Dlaczego mój zdekodowany payload wygląda dobrze, ale weryfikacja zawodzi?

Trzy najczęstsze przyczyny: (1) zły sekret — sekrety JWT rozróżniają wielkość liter, a każda niezgodność białych znaków łamie weryfikację. (2) Niezgodność algorytmu — nagłówek mówi HS256, ale sekret pierwotnie użyto z HS512. (3) Token został zmodyfikowany po podpisaniu — nawet jeden bajt psuje podpis. Sprawdź, czy header.alg odpowiada temu, czego oczekujesz.

A co z RS256, ES256 i innymi algorytmami klucza publicznego?

iKit obsługuje obecnie tylko weryfikację HMAC (HS256/384/512). RS256 i ES256 używają kryptografii klucza publicznego — weryfikacja wymaga klucza publicznego wystawcy w formacie PEM, co jest bardziej złożonym UI. Na razie dekodowanie nadal działa (części header/payload/signature wyświetlają się poprawnie), ale przycisk Zweryfikuj poinformuje, że nie jest to obsługiwane. Weryfikacja RSA/ECDSA jest planowana.

Czym to się różni od jwt.io?

Ta sama idea, inne ustawienia domyślne. Dekoder iKit działa w całości w Twojej przeglądarce (jwt.io też, ale kod iKit jest otwarty do view-source, a nasza domena nie ma trackerów stron trzecich). Dodajemy wyraźny znacznik WYGASŁY / ważny dla claim exp, ustrukturyzowane notatki claims (iat / nbf / iss / sub / aud / jti jako czytelne wiersze) oraz przycisk skopiuj-wszystko-zdekodowane, który daje pełny ustrukturyzowany output do wklejenia w raporcie błędu.