PK Systems PK Systems
Encoders & decoders

JWT-decoder

Plak een JSON Web Token en zie de header, payload en handtekening — direct gedecodeerd in je browser.

JWT-decoder

Tokens geven toegang — plak nooit een productie-JWT in een tool die je niet vertrouwt. Deze pagina draait volledig in je browser, maar maak er een gewoonte van om onbetrouwbare tokens lokaal te decoderen.

Gedecodeerd

Header


            

Payload


                
            

Handtekening


                

De handtekening wordt getoond als base64url. Deze tool verifieert de handtekening niet — daarvoor is het secret of de publieke sleutel van de uitgever nodig.

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
issUitgeverIdentificeert de partij die het token heeft uitgegeven (bijv. een URL van een auth-server).
subSubjectIdentificeert de entiteit waar het token over gaat — meestal een gebruikers-ID.
audAudienceDe ontvangers voor wie het token bedoeld is. Ontvangers moeten tokens weigeren die niet aan hen zijn gericht.
expVerloopmomentUnix-tijdstempel waarna het token niet meer geaccepteerd mag worden.
nbfNiet voorUnix-tijdstempel waarvoor het token niet geaccepteerd mag worden.
iatUitgegeven opUnix-tijdstempel waarop het token is uitgegeven.
jtiJWT-IDUnieke identifier voor het token, handig voor revocation lists.

Veelgestelde vragen

Wordt mijn JWT ergens naartoe gestuurd?
Nee. Het decoderen gebeurt volledig in je browser — het token verlaat je apparaat nooit. Je kunt dit zelf controleren door DevTools > Network te openen en een token te plakken; er worden geen requests verstuurd. Toch geldt: behandel elke productie-JWT als een credential en plak alleen tokens die je gerust in je browsergeschiedenis ziet staan.
Waarom verifieert deze tool de handtekening niet?
Voor verificatie is het secret van de uitgever nodig (voor HS256) of de publieke sleutel (voor RS256, ES256, enz.). Gebruikers vragen om productie-secrets in een webpagina te plakken is vragen om problemen, dus deze tool biedt die optie bewust niet. Gebruik de JWT-bibliotheek van je applicatie of een CLI zoals jwt om handtekeningen in een gecontroleerde omgeving te verifiëren.
Ik krijg "Geen JWT" — wat gaat er mis?
Een geldige JWT bestaat uit precies drie segmenten gescheiden door punten. Veelvoorkomende oorzaken van de fout: extra spaties of een achtergebleven 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?
Standaard base64 gebruikt +, / 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?
Dat betekent dat de JWT niet ondertekend is — iedereen kan een token met een willekeurige payload aanmaken. 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.
Is het veilig om een JWT te delen voor debugdoeleinden?
Over het algemeen niet. JWT's zijn bearer tokens — wie het token heeft, krijgt de bijbehorende rechten totdat het verloopt (of wordt ingetrokken, als de uitgever een revocation list bijhoudt). Deel screenshots van de gedecodeerde payload in plaats van het ruwe token, of laat de uitgever een kortlevend debugtoken met beperkte scope aanmaken. Plak nooit productietokens in chat, e-mail of tools van derden.