PK Systems PK Systems
Kodierer & Dekodierer

JWT-Decoder

JWT-Token einfügen und Header, Payload und Signatur dekodiert sehen — mit Claims-Erklärung und Ablauf-Prüfung.

JWT-Decoder

Tokens gewähren Zugriff – fügen Sie niemals einen Produktions-JWT in ein Tool ein, dem Sie nicht vertrauen. Diese Seite läuft vollständig in deinem Browser, aber gewöhne dir an, nicht vertrauenswürdige Tokens lokal zu dekodieren.

Dekodiert

Header


            

Payload


                
            

Signatur


                

Die Signatur wird als base64url angezeigt. Dieses Tool verifiziert die Signatur nicht – dafür wird das Geheimnis oder der öffentliche Schlüssel des Ausstellers benötigt.

Was ist ein JWT?

Ein JSON Web Token (JWT, ausgesprochen „dschott") ist eine kompakte, URL-sichere Möglichkeit, signiertes JSON zwischen Parteien zu übertragen – meistens zwischen einem Authentifizierungsserver und deiner App. Ein JWT besteht aus drei base64url-kodierten Teilen, die durch Punkte verbunden sind: header.payload.signature. Der Header gibt an, welcher Signaturalgorithmus verwendet wurde; der Payload ist ein JSON-Objekt mit Claims (Subjekt, Ablauf, eigene Daten); die Signatur ermöglicht dem Empfänger zu verifizieren, dass das Token nicht manipuliert wurde. Der Standard ist in RFC 7519 definiert.

So benutzt du diesen Decoder

Füge einen JWT in das Eingabefeld oben ein. Das Tool teilt an den Punkten, dekodiert die ersten beiden Segmente per base64url und gibt das resultierende JSON formatiert in zwei Panels aus – Header und Payload. Das dritte Panel zeigt die rohe Signatur-Zeichenkette. Enthält der Payload iat-, nbf- oder exp-Claims, zeigt das Tool diese auch als lesbare UTC-Zeitstempel und sagt dir, ob das Token abgelaufen ist. Die Dekodierung läuft live: Sobald du fertig getippt hast, aktualisieren sich die Panels.

Dekodiert ≠ verifiziert

Ein JWT-Decoder ist eine Debugging-Hilfe, kein Sicherheitstool. Jeder kann einen JWT dekodieren – die Kodierung ist von Natur aus umkehrbar. Erst die Signatur macht das Token vertrauenswürdig, und das Verifizieren einer Signatur erfordert das Geheimnis (HS256) oder den öffentlichen Schlüssel (RS256, ES256) des Ausstellers. Vertraue dem Inhalt eines JWT in Produktivcode niemals, ohne vorher die Signatur zu verifizieren. Verwende dafür die JWT-Bibliothek, die mit deinem Framework ausgeliefert wird; baue niemals selbst eine.

Standard-JWT-Claims

Claim Name Bedeutung
issIssuer (Aussteller)Identifiziert die Instanz, die das Token ausgestellt hat (z. B. eine Auth-Server-URL).
subSubject (Subjekt)Identifiziert das Subjekt, um das es im Token geht – meist eine Benutzer-ID.
audAudience (Empfänger)Die vorgesehenen Empfänger des Tokens. Empfänger müssen Tokens ablehnen, die nicht an sie adressiert sind.
expAblaufzeitpunktUnix-Zeitstempel, nach dem das Token nicht mehr akzeptiert werden darf.
nbfNot before (Nicht vor)Unix-Zeitstempel, vor dem das Token nicht akzeptiert werden darf.
iatAusgestellt amUnix-Zeitstempel, zu dem das Token ausgestellt wurde.
jtiJWT-IDEindeutige Kennung für das Token, nützlich für Sperrlisten.

Häufig gestellte Fragen

Wird mein JWT irgendwohin gesendet?
Nein. Die Dekodierung erfolgt vollständig in deinem Browser – das Token verlässt dein Gerät nie. Du kannst das überprüfen, indem du DevTools > Netzwerk öffnest und ein Token einfügst; es werden keine Anfragen gesendet. Trotzdem solltest du jedes Produktions-JWT wie ein Zugangsdatum behandeln: Füge nur Tokens ein, deren Auftauchen in deinem Browserverlauf dich nicht stört.
Warum verifiziert dieses Tool die Signatur nicht?
Die Verifizierung erfordert das Geheimnis des Ausstellers (für HS256) oder dessen öffentlichen Schlüssel (für RS256, ES256 usw.). Nutzer aufzufordern, Produktionsgeheimnisse in eine Webseite einzufügen, ist ein Rezept für eine Katastrophe, daher bietet dieses Tool diese Option bewusst nicht an. Verwende die JWT-Bibliothek deiner Anwendung oder ein CLI-Tool wie jwt, um Signaturen in einer kontrollierten Umgebung zu verifizieren.
Ich erhalte „Kein JWT" – was ist falsch?
Ein gültiges JWT hat genau drei durch Punkte getrennte Segmente. Häufige Ursachen für den Fehler: zusätzliche Leerzeichen oder ein versehentlich aus einem HTTP-Header mitkopiertes Bearer -Präfix (entferne es), nur der Payload wurde eingefügt (du brauchst auch Header und Signatur), oder das Token ist eigentlich ein JWE (verschlüsselt), das fünf Segmente hat und ohne den privaten Schlüssel des Empfängers nicht dekodierbar ist.
Warum ist der Payload base64url und nicht reguläres base64?
Standard-base64 verwendet +, / und = als Padding – nichts davon ist URL-sicher. Base64url ersetzt + durch -, / durch _ und lässt das Padding ganz weg. Das Ergebnis kann ohne weiteres Escaping in eine URL oder einen HTTP-Header eingebettet werden. Dieser Decoder konvertiert vor dem Aufruf des Browser-eigenen atob wieder zurück zu Standard-base64.
Was bedeutet alg: none?
Es bedeutet, dass das JWT unsigniert ist – jeder kann ein Token mit beliebigem Payload erzeugen. alg: none existiert in der Spezifikation, ist in der Praxis aber gefährlich: Eine berühmte Klasse von Schwachstellen nutzte Bibliotheken aus, die alg: none-Tokens akzeptierten, als wären sie signiert. Wenn du das in einem Produktionstoken siehst, behandle es als ernsten Fund.
Ist es sicher, einen JWT zu Debugging-Zwecken zu teilen?
In der Regel nein. JWTs sind Bearer-Tokens – der Besitz des Tokens gewährt die damit verbundenen Rechte, bis es abläuft (oder widerrufen wird, falls der Aussteller eine Sperrliste pflegt). Teile lieber Screenshots des dekodierten Payloads statt des rohen Tokens, oder lass den Aussteller ein kurzlebiges Debug-Token mit eingeschränktem Geltungsbereich erzeugen. Füge niemals Produktionstokens in Chats, E-Mails oder Drittanbieter-Tools ein.