Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Dekoder tokenów JWT

Darmowy dekoder JWT online. Wklej token JWT, aby zobaczyć zdekodowany nagłówek (header) i ładunek (payload) w czytelnym formacie JSON. Obsługa weryfikacji podpisów HS256/RS256.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
172 znaków

Algorytm

HS256

Pole alg z nagłówka

Typ

JWT

Pole typ z nagłówka

Pola w ładunku

4

Token

Bez exp

Ładunek nie zawiera pola wygaśnięcia

Podpis

Nie weryfikowano

Długość tokenu

172 znaków
{
    "alg": "HS256",
    "typ": "JWT"
}
{
    "sub": "1234567890",
    "name": "Jane Doe",
    "admin": true,
    "iat": 1516239022
}
Bez daty wygaśnięcia token nie zawiera pola exp
Wystawiony
18.01.2018 01:30:22
8 lat temu · 1516239022
Podmiot
1234567890
sub
Algorytm
HS256
JWT
Pozostałe pola
Nazwa
Jane Doe
Admin
Tak
Pełny raport tekstowy
JWT Decoder Report
==================

Parts
-----
Header (b64url):  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload (b64url): eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0
Signature (b64url): SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Algorithm
---------
alg: HS256

Claims (highlights)
-------------------
sub: 1234567890
iat: 1516239022 (2018-01-18T01:30:22+00:00Z)

Decoded Header
--------------
{
    "alg": "HS256",
    "typ": "JWT"
}

Decoded Payload
---------------
{
    "sub": "1234567890",
    "name": "Jane Doe",
    "admin": true,
    "iat": 1516239022
}

Token JWT to trzy ciągi zapisane alfabetem base64url („-” i „_” zamiast „+” i „/”, bez znaku „=” dopełnienia), sklejone kropkami: header.payload.signature. Dwa pierwsze fragmenty to zwykły JSON — ich odczytanie nie jest weryfikacją, bo treść może podmienić każdy. Dopiero podpis potwierdza, że nagłówek i ładunek pochodzą od posiadacza klucza. Przykład poniżej to token demonstracyjny, którym narzędzie startuje po wejściu na stronę.

Struktura tokenu na przykładzie startowym z kodu narzędzia
CzęśćCo zawieraCiąg base64url (przykład)
Header JSON z typem tokenu i algorytmem (typ, alg) — ten fragment nie jest podpisany eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 → {"alg":"HS256","typ":"JWT"}
Payload JSON z claimami — dane i daty (sub, iat, exp…), tu żyje cała treść tokenu eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0 → {"sub":"1234567890","name":"Jane Doe","admin":true,"iat":1516239022}
Signature Podpis HMAC lub RSA liczony nad tekstem „header.payload” — potwierdza, że treści nie zmieniono SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Tryb „Tylko dekoduj” nie weryfikuje podpisu — dekodowanie to nie uwierzytelnienie. Aby sprawdzić podpis, przełącz tryb na „Weryfikuj podpis” i podaj sekret HMAC (dla HS*) albo klucz publiczny RSA (dla RS*).

Algorytmy obsługiwane przez narzędzie i sposób weryfikacji podpisu
algRodzaj podpisuPotrzebny kluczWeryfikacja w tym narzędziu
none Brak podpisu — (token niesygnowany) Nie — weryfikacja zawsze kończy się niepowodzeniem, treść może zmienić każdy
HS256 HMAC z SHA-256 Symetryczny sekret Tak — hash_hmac + hash_equals
HS384 HMAC z SHA-384 Symetryczny sekret Tak — hash_hmac + hash_equals
HS512 HMAC z SHA-512 Symetryczny sekret Tak — hash_hmac + hash_equals
RS256 RSA z SHA-256 Asymetryczny klucz publiczny (PEM) Tak — openssl_verify
RS384 RSA z SHA-384 Asymetryczny klucz publiczny (PEM) Tak — openssl_verify
RS512 RSA z SHA-512 Asymetryczny klucz publiczny (PEM) Tak — openssl_verify

Uwaga: dekodowanie wykonuje się po stronie serwera (PHP), więc treść wklejonego tokenu jest przesyłana w żądaniu — nie wklejaj prawdziwych tokenów produkcyjnych. Do tokenów prywatnych używaj narzędzi działających wyłącznie lokalnie w przeglądarce.

JWT a bezpieczeństwo — co warto wiedzieć

Dekodowanie to nie weryfikacja

Odczytanie treści tokenu nie mówi nic o jego autentyczności — podpis trzeba sprawdzić osobno z kluczem. Szczególna pułapka to algorytm „none”: taki token nie ma podpisu w ogóle, więc narzędzie od razu oznacza go jako nieweryfikowalny. Serwer, który akceptuje „none” bez sprawdzenia, jest podatny na pełne podszywanie się pod dowolnego użytkownika.

Traktuj token jak hasło

Token JWT zwykle przenosi tożsamość sesji: podmiot, uprawnienia, czas życia. Wklejenie go w publiczne miejsce daje innym możliwość użycia Twojej sesji, dopóki nie wygaśnie. Ten dekoder liczy po stronie serwera, więc prywatne tokeny wklejaj tylko w narzędziach, które pracują w całości w Twojej przeglądarce.

Daty exp, iat i nbf

Claimy czasowe to sekundy uniksowe: iat to moment wydania, nbf „nie używać przed”, a exp — wygaśnięcie. Powyżej widzisz je przetłumaczone na czytelne daty z informacją, ile czasu zostało. Brak pola exp oznacza token wiecznie ważny — praktycznie zawsze jest to błąd projektowy.

HS* kontra RS*

HS256/384/512 to HMAC — ten sam sekret podpisuje i sprawdza podpis, więc musi być pilnie strzeżony po obu stronach. RS256/384/512 to RSA: podpisuje klucz prywatny, a weryfikuje publiczny, który można swobodnie publikować. Sekretu HMAC nigdy nie wysyłaj do narzędzi internetowych, których nie kontrolujesz.

Wskazówka: ładunek zdekodowanego tokenu pobierzesz jednym kliknięciem jako plik JSON („Pobierz plik”), a w trybie weryfikacji kafelek „Podpis” pokaże wynik porównania podpisu z kluczem.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Dekoder tokenów JWT

Dekoder tokenów JWT (JSON Web Token) pozwala natychmiast zdekodować każdy token JWT i odczytać jego nagłówek oraz ładunek w czytelnej postaci JSON. Narzędzie obsługuje weryfikację podpisów HMAC (HS256, HS384, HS512) i RSA (RS256, RS384, RS512) — bez instalacji bibliotek, bez backendu.

JWT decoder HS256 / RS256 weryfikacja podpisu base64url darmowe online

Czym jest JWT?

JSON Web Token (JWT) to otwarty standard (RFC 7519) bezpiecznej wymiany informacji w postaci podpisanego JSON. Token składa się z trzech segmentów oddzielonych kropkami: header (nagłówek z metadanymi i algorytmem), payload (ładunek z tzw. claimami, np. sub, exp, iat) i signature (podpis cyfrowy). Każdy segment jest zakodowany w formacie base64url. JWT jest szeroko stosowany w uwierzytelnianiu (OAuth 2.0, OIDC) i wymianie danych między mikroserwisami.

Jak używać dekodera?

Wklej token JWT w pole tekstowe — narzędzie automatycznie rozdzieli go na trzy segmenty i zdekoduje header oraz payload do czytelnego JSON. Aby zweryfikować podpis HMAC, wybierz tryb „Weryfikuj podpis", ustaw algorytm (lub zostaw „Automatycznie") i wpisz sekret w polu klucza. Dla tokenów RS256/RS384/RS512 wybierz typ „Klucz publiczny RSA" i wklej klucz w formacie PEM. Wynik pokazuje badge algorytmu, badge ważności podpisu oraz ostrzeżenia (np. token wygasł).

Algorytmy i bezpieczeństwo

JWT obsługuje wiele algorytmów podpisu. HS256/HS384/HS512 to algorytmy HMAC — do podpisania i weryfikacji używany jest ten sam sekret (klucz symetryczny). RS256/RS384/RS512 to algorytmy RSA — serwer podpisuje kluczem prywatnym, klient weryfikuje kluczem publicznym (asymetryczne). Wartość alg: none oznacza brak podpisu i jest niebezpieczna w produkcji. Zawsze sprawdzaj pole exp (czas wygaśnięcia) i iss (wystawca). Nigdy nie wklejaj produkcyjnych sekretów ani prywatnych kluczy w narzędzia online — do testów używaj przykładowych wartości.

Jak działa dekodowanie i weryfikacja JWT krok po kroku

Token JWT to trzy segmenty base64url połączone kropkami: header, payload i signature. Dekoder nie wykonuje tu żadnej magii — dzieli tekst po kropkach, a następnie zamienia każdy segment z powrotem na bajty. Base64url to odmiana base64 przygotowana pod adresy URL i nagłówki HTTP: zamiast znaków + i / używa - oraz _, a znak = (padding) jest zwykle pomijany. Dlatego zwykły dekoder base64 potrafi zwrócić błąd — najpierw trzeba podmienić znaki i uzupełnić padding do wielokrotności czterech znaków.

Po dekodowaniu bajty są interpretowane jako UTF-8 i parsowane jako JSON. Widać to już na pierwszym segmencie: tokeny zaczynają się od eyJ, bo te trzy znaki base64url odpowiadają bajtom 0x7B 0x22, czyli początkowi JSON-a {". Nagłówek zawiera pole alg (algorytm podpisu) i zwykle typ, a ładunek — claimy: sub, iat, exp, iss, aud oraz pola własne aplikacji. Oba segmenty dekodowane są niezależnie, więc uszkodzony ładunek nie blokuje odczytu nagłówka.

Weryfikacja podpisu to osobny krok. Dla HMAC narzędzie liczy skrót z dokładnego łańcucha base64url(header) + "." + base64url(payload) — czyli z tych samych znaków, które są w tokenie, a nie ze zdekodowanego JSON-a: HMAC-SHA256(header.payload, sekret), po czym porównuje wynik z trzecim segmentem. Dla RSA podpis sprawdzany jest kluczem publicznym: nagłówek i ładunek trafiają do funkcji weryfikującej z funkcją skrótu SHA-256/384/512, a wynik to potwierdzenie albo odrzucenie podpisu. Każda zmiana choćby jednego znaku w pierwszych dwóch segmentach zmienia wyliczany skrót, więc sygnatura przestaje pasować.

Przykład: odczyt i weryfikacja tokenu HS256

  1. Wklej w pole tekstowe token złożony z trzech segmentów. W przykładzie użyjemy nagłówka eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 i ładunku eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ, a trzeci segment to podpis.
  2. Narzędzie dzieli tekst po kropkach i pokazuje rozmiary części. Nagłówek ma 36 znaków base64url, czyli 27 bajtów; ładunek ma 74 znaki, czyli 55 bajtów. Zgodność długości potwierdza, że segmenty nie zostały obcięte w schowku.
  3. Odczyt nagłówka daje {"alg":"HS256","typ":"JWT"}. Pole alg wskazuje HMAC-SHA256, więc do weryfikacji potrzebny jest sekret, a nie klucz RSA.
  4. Odczyt ładunku daje claimy: sub = 1234567890, name = John Doe oraz iat = 1516239022, co odpowiada 18 stycznia 2018 (UTC). W tokenie nie ma pola exp, więc narzędzie nie zgłosi ostrzeżenia o wygaśnięciu — nie znaczy to jednak, że token jest wieczny.
  5. Przełącz tryb na „Weryfikuj podpis”, ustaw algorytm HS256 (albo zostaw „Automatycznie”) i wpisz sekret, którym token został podpisany.
  6. Narzędzie składa łańcuch z 36 znaków nagłówka, kropki i 74 znaków ładunku (razem 111 znaków), liczy z niego HMAC-SHA256, koduje wynik base64url i porównuje go z trzecim segmentem. Zgodny sekret daje badge ważnego podpisu, a sekret różniący się choćby jednym znakiem — wynik nieprawidłowy, mimo że nagłówek i ładunek nadal dekodują się poprawnie.

Algorytmy obsługiwane przy weryfikacji — ściągawka

AlgorytmTyp kluczaFunkcja skrótu i długość skrótu
HS256symetryczny — ten sam sekret do podpisania i weryfikacjiSHA-256, 32 bajty
HS384symetrycznySHA-384, 48 bajtów
HS512symetrycznySHA-512, 64 bajty
RS256asymetryczny — podpis kluczem prywatnym, weryfikacja kluczem publicznymSHA-256, 32 bajty
RS384asymetrycznySHA-384, 48 bajtów
RS512asymetrycznySHA-512, 64 bajty
nonebrak klucza — token niepodpisanybrak skrótu, trzeci segment pusty
Automatycznietryb wyboru: narzędzie czyta alg z nagłówka i dopasowuje sposób weryfikacjizależna od algorytmu z tokenu

Praktyczne wskazówki przy czytaniu tokenów

  • Zacznij od nagłówka, nie od podpisu — pole alg mówi, którego trybu weryfikacji użyć. Wpisanie sekretu HMAC do tokenu RS256 zawsze zakończy się błędem, choć token jest poprawny.
  • Podawaj sekret dokładnie tak, jak w backendzie — bez cudzysłowów, bez spacji na końcu i bez zmiany kodowania. Ten sam ciąg znaków zapisany inaczej da inny skrót i wynik nieprawidłowy.
  • Do RSA używaj klucza publicznego w PEM — razem z liniami BEGIN i END. Klucz prywatny nie jest potrzebny do weryfikacji i nie powinien krążyć poza serwerem podpisującym.
  • Sprawdzaj komplet claimów czasowych — exp to nie wszystko: iat pozwala ustalić, kiedy token wystawiono, a brak exp w tokenie sesyjnym bywa celowy albo bywa przeoczeniem.
  • Testuj weryfikację na tokenie, który znasz — zanim uznasz, że narzędzie się myli, porównaj zdekodowany alg z wybranym trybem. Najczęstsza przyczyna fałszywego błędu to niezgodność trybu z algorytmem.

Czego ta weryfikacja nie obejmuje

  • Brak oceny zaufania klucza — narzędzie sprawdza tylko matematyczną zgodność podpisu z kluczem, który mu podano. Nie ustala, czy klucz pochodzi z zaufanego źródła, czy nie wygasł i czy nie został podmieniony.
  • Brak kontroli unieważnienia — poprawnie podpisany token może być już odwołany po stronie serwera. Narzędzie nie sięga do list odwołań ani do stanu sesji w bazie.
  • Zakres obsługiwanych algorytmów — weryfikacja obejmuje algorytmy HMAC i RSA wymienione w tabeli. Token podpisany innym algorytmem zdekodujesz i odczytasz, ale podpisu nie potwierdzisz.
  • Brak reguł biznesowych — narzędzie nie wie, jakie wartości sub, aud, iss czy zakres uprawnień są oczekiwane w Twojej aplikacji. Zgodny podpis i niewygasły exp to warunek konieczny, ale nie wystarczający.

Najczęstsze pytania

Czy dekodowanie JWT wymaga klucza?

Nie. Segmenty header i payload są jedynie zakodowane w base64url — każdy może je zdekodować bez znajomości klucza. Klucz jest potrzebny wyłącznie do weryfikacji podpisu, czyli sprawdzenia, że token nie został zmodyfikowany. To celowa właściwość standardu: JWT jest podpisany, nie zaszyfrowany (jeśli nie użyjesz JWE).

Co oznacza claim „exp" w tokenie JWT?

Claim exp (expiration time) to uniksowy timestamp określający moment wygaśnięcia tokenu. Aplikacja powinna odrzucać tokeny, w których exp jest w przeszłości. Narzędzie wyświetla ostrzeżenie, jeśli token wygasł. Analogicznie claim nbf (not before) wskazuje, od kiedy token jest ważny.

Jaka jest różnica między HS256 a RS256?

HS256 (HMAC-SHA256) używa jednego wspólnego sekretu do podpisywania i weryfikacji. RS256 (RSA-SHA256) używa pary kluczy: serwer podpisuje kluczem prywatnym, a strony zewnętrzne mogą weryfikować kluczem publicznym bez dostępu do klucza prywatnego. RS256 jest preferowany w architekturach z wieloma usługami i federowanym tożsamościami (np. OIDC).

Czy moje dane są bezpieczne?

Narzędzie działa całkowicie po stronie serwera — token jest przetwarzany tylko podczas aktualnej sesji i nie jest zapisywany ani udostępniany. Mimo to nigdy nie wklejaj w narzędzia online tokenów z produkcyjnymi danymi użytkowników ani sekretów kluczy produkcyjnych. Do testów zawsze używaj przykładowych lub dedykowanych tokenów testowych.

Czy dekoder JWT wysyła token na serwer?

Nie. Podział na segmenty, dekodowanie base64url oraz weryfikacja HMAC i RSA wykonują się w przeglądarce, bez backendu. Mimo to token wklejony do schowka lub zapisany w historii nadal jest danymi, które warto traktować ostrożnie.

Czym różni się dekodowanie tokenu od weryfikacji podpisu?

Dekodowanie to wyłącznie odwrócenie base64url i odczyt JSON-a — dostępne dla każdego, kto ma token. Weryfikacja sprawdza dodatkowo, czy trzeci segment powstał z nagłówka i ładunku przy użyciu właściwego klucza.

Dlaczego weryfikacja HMAC zwraca błąd, choć token jest poprawny?

Najczęściej podano inny sekret, wybrano zły algorytm albo token został w międzyczasie zmodyfikowany. Każda zmiana w nagłówku lub ładunku zmienia wyliczany skrót, więc podpis przestaje pasować.

Czy da się odczytać token JWT bez klucza?

Tak. Nagłówek i ładunek są tylko zakodowane base64url, a nie zaszyfrowane. Klucz potrzebny jest wyłącznie do weryfikacji podpisu, nie do odczytu zawartości.

Co oznacza alg: none w tokenie?

Że token nie ma podpisu — trzeci segment jest pusty. Takie tokeny bywają używane w testach, ale w środowisku produkcyjnym są niebezpieczne, bo pozwalają dowolnie podmienić ładunek.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!