JWT-decoder
Plak een JSON Web Token en zie de header, payload en handtekening — direct gedecodeerd in je browser.
Wat is een JWT?
Een JSON Web Token (JWT, uitgesproken als "jot") is een compacte, URL-veilige manier om ondertekende JSON tussen partijen te versturen — meestal tussen een authenticatieserver en je app. Een JWT bestaat uit drie base64url-gecodeerde delen, gescheiden door punten: header.payload.signature. De header geeft aan welk ondertekenalgoritme is gebruikt; de payload is een JSON-object met claims (subject, vervaldatum, eigen data); met de handtekening kan de ontvanger controleren of er niet met het token is geknoeid. De standaard is gedefinieerd in RFC 7519.
Hoe gebruik je de decoder
Plak een JWT in het invoerveld hierboven. De tool splitst op de punten, decodeert de eerste twee segmenten met base64url en print de resulterende JSON netjes uit in twee panelen — Header en Payload. Het derde paneel toont de ruwe handtekening. Bevat de payload de claims iat, nbf of exp, dan toont de tool deze ook als leesbare UTC-tijdstempels en geeft aan of het token is verlopen. Het decoderen gebeurt live: zodra je klaar bent met typen, worden de panelen bijgewerkt.
Tips voor JWT-debugging
Een JWT-decoder is een hulpmiddel bij debuggen, geen beveiligingstool. Iedereen kan een JWT decoderen — de codering is bewust omkeerbaar. De handtekening is wat het token betrouwbaar maakt, en voor het verifiëren daarvan is het secret van de uitgever (HS256) of de publieke sleutel (RS256, ES256) nodig. Vertrouw de inhoud van een JWT in productiecode nooit zonder eerst de handtekening te verifiëren. Gebruik daarvoor de JWT-bibliotheek die bij je framework hoort; bouw nooit zelf iets.
Standaard-claims-referentie
| Claim | Naam | Betekenis |
|---|---|---|
iss | Uitgever | Identificeert de partij die het token heeft uitgegeven (bijv. een URL van een auth-server). |
sub | Subject | Identificeert de entiteit waar het token over gaat — meestal een gebruikers-ID. |
aud | Audience | De ontvangers voor wie het token bedoeld is. Ontvangers moeten tokens weigeren die niet aan hen zijn gericht. |
exp | Verloopmoment | Unix-tijdstempel waarna het token niet meer geaccepteerd mag worden. |
nbf | Niet voor | Unix-tijdstempel waarvoor het token niet geaccepteerd mag worden. |
iat | Uitgegeven op | Unix-tijdstempel waarop het token is uitgegeven. |
jti | JWT-ID | Unieke identifier voor het token, handig voor revocation lists. |
Veelgestelde vragen
Wordt mijn JWT ergens naartoe gestuurd?
Waarom verifieert deze tool de handtekening niet?
jwt om handtekeningen in een gecontroleerde omgeving te verifiëren.Ik krijg "Geen JWT" — wat gaat er mis?
Bearer -prefix die uit een HTTP-header is gekopieerd (haal die weg), alleen de payload geplakt (je hebt ook de header en handtekening nodig), of het token is eigenlijk een JWE (versleuteld) — die heeft vijf segmenten en is niet decodeerbaar zonder de privésleutel van de ontvanger.Waarom is de payload base64url en geen gewone base64?
+, / en = als padding — geen daarvan is URL-veilig. Base64url vervangt + door -, / door _ en laat de padding helemaal weg. Het resultaat kan zonder verdere escaping in een URL of HTTP-header worden gezet. Deze decoder zet het terug om naar standaard base64 voordat atob van de browser wordt aangeroepen.Wat betekent alg: none?
alg: none bestaat in de specificatie, maar is in de praktijk gevaarlijk: er is een beruchte categorie kwetsbaarheden waarbij bibliotheken alg: none-tokens accepteerden alsof ze ondertekend waren. Zie je dit in een productietoken, behandel het dan als een serieuze bevinding.