Hvad er dette værktøj?
En JWT (JSON Web Token) er en kompakt, URL-sikker streng brugt til at overføre claims mellem to parter — oftest som et auth-token efter login. Den har tre punktumadskilte dele: en header (algoritme og tokentype), en payload (de faktiske claims — bruger-ID, roller, udløb osv.) og en signatur (bruges af serveren til at verificere, at tokenet ikke er blevet manipuleret).
Header og payload er blot Base64URL-kodet JSON — ikke krypteret — så alle kan afkode og læse dem uden en hemmelig nøgle. Kun signaturen kræver en hemmelighed for at verificere. Det er præcis det, dette værktøj gør: afkoder de læsbare dele og viser dem som formateret JSON, uden at forsøge at verificere signaturen.
JWT'er er standardiseret i RFC 7519, med signaturlaget (JWS) defineret separat i RFC 7515 — nyttige referencer, når du har brug for den autoritative liste over registrerede claims som exp, iat, sub og aud.
Hvorfor bruge det?
- Øjeblikkeligt læsbar header og payload, formateret som JSON — ikke mere manuel opsplitning af strengen og Base64-afkodning i hånden.
- Automatisk udløbstjek: hvis payloaden har et "exp"-claim, konverteres det til en læsbar dato og markeres som udløbet eller gyldig.
- Ét-klik-kopiering for header eller payload separat.
- 100% klient-side — tokenet afkodes lokalt og transmitteres aldrig, sikkert at bruge selv med tokens fra et produktionssystem.
- Ingen signaturverificering udføres eller påstås — dette er et fejlfindings-/inspektionsværktøj, ikke en validator.
Sådan bruger du det
- Indsæt din JWT i boksen (hele strengen, inklusive alle tre punktumadskilte dele).
- Header og payload afkodes automatisk, mens du skriver.
- Tjek udløbslinjen, hvis tokenet har et "exp"-claim — den viser den nøjagtige dato og om tokenet er udløbet.
- Klik "Copy" under hver boks for at kopiere det afsnit som JSON.
Eksempel
Input
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQOutput
Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}Signaturen (tredje del) afkodes eller tjekkes aldrig — den er en uigennemsigtig hash brugt server-side til at verificere ægthed.
Praktiske tips
- Fejlfinding af "invalid token"-fejl: afkod payloaden først for at tjekke "exp"-claimet — et udløbet token er den mest almindelige årsag, og det er ikke altid indlysende ud fra fejlbeskeden alene.
- Tjek hvad et tredjeparts-API's token faktisk indeholder: mange API'er returnerer et uigennemsigtigt udseende JWT som et adgangstoken — afkod det her for at se de scopes, bruger-ID eller udløb din integration faktisk modtager.
- Gå aldrig ud fra at en JWT er krypteret: hvis du ser følsomme data (e-mail, interne ID'er) i en afkodet payload under udvikling, er det et signal om at flytte de data server-side i stedet for at stole på, at klienten ikke læser dem.
Almindelige claims du vil se i en payload
| Claim | Betydning |
|---|---|
| sub | Subject — som regel bruger-ID'et, tokenet repræsenterer |
| exp | Udløbstidspunkt (Unix-tidsstempel) — tokenet er ugyldigt efter dette |
| iat | Issued at — hvornår tokenet blev oprettet |
| iss | Issuer — hvilken tjeneste/server der udstedte tokenet |
| aud | Audience — hvilken tjeneste tokenet er beregnet til |
| role / roles / scope | Brugerdefinerede claims — tilladelser eller roller tildelt brugeren (ikke en del af JWT-standarden, men ekstremt almindeligt) |
Ofte stillede spørgsmål
Verificerer dette værktøj JWT-signaturen?
Nej. At verificere en signatur kræver den hemmelige nøgle eller offentlige nøgle, der blev brugt til at signere tokenet, som kun den udstedende server har. Dette værktøj afkoder kun header og payload — de menneskeligt læsbare dele — så du kan inspicere claims og udløb uden at have brug for nogen nøgle.
Er det sikkert at indsætte en rigtig produktions-JWT her?
Afkodning sker helt i din browser via JavaScript — tokenet sendes aldrig til nogen server, heller ikke vores. Når det er sagt, behandl tokens som adgangskoder: indsæt dem ikke i værktøjer, du ikke stoler på, og undgå at dele screenshots af afkodede tokens, der indeholder følsomme claims.
Hvorfor kan alle læse min JWT's payload uden en adgangskode?
Med vilje — en JWT's header og payload er Base64URL-kodet, ikke krypteret. Kodning er ikke sikkerhed; det gør bare JSON'en URL-sikker at transmittere. Sæt aldrig hemmeligheder (adgangskoder, kreditkortnumre) direkte i en JWT-payload — gå ud fra at alle med tokenet kan læse dets indhold.
Hvad betyder "exp"-claimet, og hvorfor betyder det noget?
"exp" er tokenets udløbstidspunkt, som et Unix-tidsstempel (sekunder siden 1970). Servere afviser en JWT, når dette tidspunkt er passeret, hvilket tvinger klienten til at gen-autentificere. Dette værktøj konverterer det til en læsbar dato og markerer om det allerede er udløbet, hvilket er nyttigt til at fejlfinde "hvorfor blev min session logget ud"-problemer.
Mit token viser en JSON-parsefejl — hvorfor?
Enten er strengen ikke en gyldig JWT (skal være præcis tre punktumadskilte dele), eller den er blevet afkortet eller ændret — en almindelig årsag er et token, der ved et uheld er blevet splittet over flere linjer eller mangler afsluttende tegn, når det kopieres.