Kodowanie
JWT Encoder/Decoder
Kodowanie i dekodowanie tokenów JWT — nagłówek, payload, podpis HMAC i standardowe pola.
Podpisane przykłady (wszystkie oprócz none) wymagają HTTPS — strona jest obecnie otwarta bez HTTPS.
Dla RS/PS/ES klucz jest generowany automatycznie i tymczasowo — wyłącznie do demonstracji, nie można go ponownie użyć.
Podpisane przykłady (wszystkie oprócz none) wymagają HTTPS — strona jest obecnie otwarta bez HTTPS.
Claims
A JWT (JSON Web Token) is a compact format for transmitting signed data, made of three dot-separated parts: a header, a payload, and a signature. This tool decodes any JWT and shows all three parts, and can also build a new token signed with HMAC.
Decoding does not verify the signature — reading a token's contents needs no secret key. Verifying the signature only matters when you need to trust the token as genuine.
How to use it
- Decode: paste a JWT and the tool splits it into header, payload, and signature, highlighting standard claims like exp, iat, and sub.
- Encode: fill in the header and payload, provide a secret, and get a signed HMAC token (HS256/HS384/HS512) back.
- Check expiry: the exp claim is shown as a normal date, so you can immediately tell if a token has expired.
Common uses
- Debugging authentication issues by inspecting exactly what a request's token contains.
- Checking which claims (roles, permissions, expiry) your backend issues.
- Generating a test token for local development without running an auth server.
Things to keep in mind
A JWT is not encrypted, only Base64URL-encoded — anyone can read the payload. Never put passwords or other secrets in it.
The signature protects against tampering, not against being read. For confidentiality you need extra encryption (JWE) or an HTTPS transport.
Artykuł o tym narzędziu: JWT: budowa tokenu i co znaczy „dekodowanie" JWT
Najczęstsze pytania
Czy zdekodowanie JWT dowodzi, że token jest autentyczny?
Nie. Samo dekodowanie odczytuje header i payload zakodowane w Base64URL, ale nie weryfikuje podpisu. Aby potwierdzić, że token nie został sfałszowany, trzeba podać właściwy secret lub klucz publiczny i sprawdzić podpis osobno.
Czy secret lub klucz prywatny opuszcza przeglądarkę?
Nie, całe kodowanie, dekodowanie i podpisywanie odbywa się lokalnie w przeglądarce przez Web Crypto API — secret i wygenerowane klucze nigdy nie są wysyłane na serwer.
Co oznaczają standardowe pola jak exp czy iat?
To zarejestrowane claims z payloadu: exp to czas wygaśnięcia tokenu, nbf — moment, od którego jest ważny, iat — czas wystawienia, a iss, sub, aud i jti opisują odpowiednio wystawcę, podmiot, odbiorców i unikalny identyfikator tokenu.
Czym jest atak polegający na podmianie algorytmu na "none"?
Jeśli backend naiwnie ufa polu alg z nagłówka tokenu, atakujący może zamienić je na none, usunąć podpis — i token z dowolnymi danymi przejdzie weryfikację. Solidne biblioteki wymagają jawnego wskazania oczekiwanego algorytmu podczas weryfikacji.
Dlaczego nie warto przechowywać JWT w localStorage dla wrażliwych sesji?
localStorage jest dostępny dla dowolnego kodu JavaScript na stronie, więc jest podatny na XSS — złośliwy skrypt może wykraść token. Dla tokenów sesyjnych bezpieczniej jest używać ciasteczek httpOnly, niedostępnych dla JavaScript.