JWT Decoder

Plak een JSON Web Token om de header en payload te lezen, te zien wanneer het verloopt en elke claim te begrijpen. Je token verlaat nooit je browser.

Draait in je browserGeen account nodigNiets wordt geüpload

Decoderen is niet verifiëren. Iedereen kan de header en payload van een JWT lezen, want die zijn alleen base64url-gecodeerd. Deze tool laat zien wat het token beweert; het bewijst niet dat het token echt is. Verifieer de handtekening altijd op je server.

Header

Payload


      

Handtekening verifiëren (optioneel, HS256/HS384/HS512)

Controleert een HMAC-handtekening met een secret dat je invoert, via de Web Crypto API van je browser. Het secret verlaat deze pagina nooit. RSA/ECDSA-tokens hebben de publieke sleutel van de uitgever nodig en worden hier niet geverifieerd.

Zo gebruik je de JWT Decoder

  1. Plak het token in het veld Gecodeerd token. Een voorafgaande Bearer uit een Authorization-header wordt genegeerd.
  2. De header en payload worden direct gedecodeerd en als opgemaakte JSON getoond.
  3. Bekijk de tabel Claims uitgelegd: exp, iat en nbf worden omgezet naar datums met tijden als „verloopt over” / „verlopen sinds”.
  4. Controleer de statusbalk op verloopproblemen en de waarschuwingen voor riskante instellingen zoals alg: none.
  5. Voer optioneel het shared secret in om een HS256-, HS384- of HS512-signature lokaal te verifiëren.

Wat zit er in een JWT?

Een JSON Web Token (RFC 7519) bestaat uit drie base64url-strings, gescheiden door punten: header.payload.signature. De header noemt het signeeralgoritme (alg) en het tokentype. De payload bevat de claims, zoals wie de gebruiker is en wanneer het token verloopt. De signature wordt over de eerste twee delen berekend met een secret of private key.

Decoderen is niet verifiëren

De header en payload zijn alleen gecodeerd, niet versleuteld, dus iedereen die het token heeft kan ze lezen. Zet daarom nooit wachtwoorden of secrets in een JWT-payload. Decoderen vertelt je wat een token beweert. Het verifiëren van de signature, normaal op je API-server met een library zoals jose of PyJWT, bewijst wie het heeft uitgegeven en dat het niet is aangepast. Een server moet ook exp, nbf, iss en aud controleren en onverwachte algoritmen weigeren.

Spiekbriefje geregistreerde claims

ClaimBetekenis
issIssuer: wie het token heeft aangemaakt en gesigneerd
subSubject: meestal de gebruikers-ID
audAudience: voor welke API het token bedoeld is
expVerlooptijd, in seconden sinds de Unix-epoch
nbfNiet geldig vóór dit tijdstip
iatTijdstip van uitgifte
jtiUnieke token-ID, handig voor intrekkingslijsten

Fouten als „token expired” debuggen

Weigert een API een token dat vers lijkt, vergelijk dan exp en nbf met de klok van de server. Een klein tijdsverschil tussen machines komt vaak voor, daarom staan de meeste libraries 30-60 seconden speling toe. Controleer ook of exp in seconden staat: een waarde in milliseconden is een veelgemaakte bug en legt de verlooptijd duizenden jaren in de toekomst.

Veelgestelde vragen

Is het veilig om hier een productie-JWT te plakken?
Het decoderen gebeurt volledig in je browser met JavaScript. Het token wordt niet geüpload, gelogd of opgeslagen. Ga zoals met elke credential toch voorzichtig om met live tokens en gebruik bij voorkeur verlopen of testtokens als je screenshots deelt.
Verifieert deze tool de JWT-signature?
Alleen decoderen doet dat niet. Je kunt optioneel HS256-, HS384- en HS512-tokens verifiëren door het shared secret in te voeren; de HMAC wordt lokaal berekend met de Web Crypto API. RS256- en ES256-tokens moet je op je server verifiëren met de public key van de issuer.
Waarom wordt mijn token als verlopen getoond?
De exp-claim ligt in het verleden ten opzichte van de klok van je computer. Vraag een nieuw token aan of vernieuw het met je refresh token. Kloppen de tijden niet, controleer dan op tijdsverschil tussen klokken of een exp-waarde in milliseconden.
Wat is het verschil tussen JWT, JWS en JWE?
JWT is het formaat voor claims. Een JWS is een gesigneerde JWT met drie delen; dat is wat deze tool decodeert. Een JWE is een versleutelde JWT met vijf delen; de payload is niet leesbaar zonder de decryptiesleutel.
Waarom is alg „none” gevaarlijk?
Een ongesigneerd token kan door iedereen worden vervalst. Servers moeten alg: none weigeren en alleen het specifieke algoritme accepteren dat ze verwachten.

Gerelateerde tools