Entwickler 🔒 Läuft im Browser — keine Daten werden gesendet

JWT-Decoder

JSON Web Tokens lokal dekodieren und die Signatur mit Secret oder öffentlichem Schlüssel prüfen — nichts verlässt den Browser.

JWT-Token
Secret oder öffentlicher Schlüssel
Der Schlüssel wird in Ihrem Browser verwendet und nirgendwohin gesendet.
Dekodiert
Header

          
        
Payload

        
Signatur

Signieren Sie ein eigenes Token, um einen Endpunkt zu testen. Alles wird auf dieser Seite berechnet.

Signaturschlüssel

Schlüssel und fertiges Token bleiben in Ihrem Browser: Beides wird nirgendwohin gesendet und steht auch in keinem geteilten Link.

JWT Decoder - JSON Web Token online dekodieren

Fügen Sie ein JSON Web Token ein: Dieser Decoder zerlegt es in seine drei Teile und zeigt Header und Payload als lesbares JSON. Das ist der schnellste Weg zu den Fragen, die beim Debuggen einer Anmeldung auftauchen - wer hat das Token ausgestellt, für wen ist es gedacht, mit welchem Algorithmus wurde signiert, und ist es bereits abgelaufen?

Die Dekodierung läuft vollständig im Browser. Das ist hier wichtiger als bei den meisten Werkzeugen, denn ein JWT ist ein aktives Zugangsmittel: Wer ein gültiges Token abfängt, kann bis zum Ablauf meist im Namen des Subjekts handeln. Nichts, was Sie einfügen, wird hochgeladen, protokolliert oder gespeichert.

Diagramm: ein JWT, an den zwei Punkten in Header, Payload und Signatur geteilt; Header und Payload ergeben lesbares JSON, die Signatur ist ein HMAC über beide.eyJhbGciOiJIUzI1NiIs….eyJzdWIiOiIxMjM0NTY3….2N-E3ZkgLmbR…HeaderPayload (Claims)Signatur{ "alg": "HS256", "typ": "JWT"}{ "sub": "1234567890", "name": "Ada Lovelace", "iat": 1700000000, "exp": 1700003600}HMACSHA256( header + "." + payload, secret)Base64URL-JSON: für jeden lesbarBase64URL-JSON: für jeden lesbarMit geheimem Schlüssel geprüft
Ein JWT besteht aus drei Base64URL-Strings, die durch Punkte verbunden sind. Header und Payload sind einfaches JSON, das jeder dekodieren kann – ein Token darf also nie Geheimnisse enthalten. Erst die mit dem Schlüssel geprüfte Signatur zeigt, dass das Token nicht verändert wurde.

Was ist ein JSON Web Token?

Ein JWT besteht aus drei Base64URL-Segmenten, verbunden durch Punkte: header.payload.signature. Der Header nennt den Signaturalgorithmus, der Payload trägt die Claims - die Aussagen, die der Aussteller über Nutzer oder Client trifft - und die Signatur belegt, dass die ersten beiden Teile von jemandem mit dem passenden Schlüssel stammen. Header und Payload sind nur kodiert, nicht verschlüsselt, also für jeden lesbar. Geschützt ist allein die Signatur.

JWT hier dekodieren

  1. Token aus dem Authorization: Bearer-Header, einem Cookie, einer Callback-URL oder Ihrem API-Client kopieren.
  2. Die vollständige Zeichenkette header.payload.signature in das Eingabefeld einfügen.
  3. Auf Dekodieren klicken, um beide JSON-Objekte nebeneinander zu sehen.
  4. Bei abgelehnten Requests zuerst exp prüfen, danach aud und iss.

Was die Seite sonst noch kann

Das Token wird beim Tippen gelesen, die Bereiche füllen sich also, bevor Sie zur Schaltfläche greifen. Unter dem dekodierten Header und Payload steht jedes Feld in einer Tabelle, mit seiner Bedeutung in einfachen Worten, und eine Zeile darüber macht aus exp und nbf ganze Sätze: vor drei Tagen abgelaufen, läuft in achtundfünfzig Minuten ab, noch nicht gültig.

  • Beispiel lädt ein Demo-Token samt Secret, sodass Sie eine gelungene Prüfung sehen, bevor Sie etwas Eigenes einfügen.
  • Prüfen nimmt das Secret, einen öffentlichen PEM-Schlüssel, ein einzelnes JWK oder ein ganzes JWKS. Fügen Sie das Dokument von der Adresse /.well-known/jwks.json des Ausstellers ein, und der Schlüssel, den die kid des Tokens nennt, wird automatisch gewählt – die Seite stellt dabei weiterhin selbst keine Anfrage. Wenn Sie außerdem Erwarteter Aussteller und Erwartete Zielgruppe ausfüllen, prüft die Seite eine gültige Signatur so wie ein Server: ein anderes iss oder ein aud ohne Ihren Wert färbt das Ergebnis rot.
  • Token bauen signiert ein eigenes Token mit jedem der zwölf Algorithmen — die Seite JWT-Generator öffnet genau dort.
  • Code zeigt die serverseitige Prüfung in acht Sprachen, passend zum Algorithmus im Header Ihres Tokens.
  • Zwei weitere Seiten öffnen dieses Werkzeug auf eine einzige Frage hin: ist es abgelaufen und warum wird es abgelehnt.

Die Standard-Claims und ihre Bedeutung

ClaimBedeutungTypische Fehlerquelle
issAussteller des TokensPasst nicht, wenn ein Staging-Token an die Produktion geht
subSubjekt, meist die Nutzer- oder Service-IDLeer bei Tokens für einen Client statt für eine Person
audZielgruppe, also die vorgesehene APIDie häufigste Ursache für ein 401 trotz gültigem Token
expAblaufzeit als Unix-ZeitstempelLiegt in der Vergangenheit oder die Serveruhr weicht ab
nbfNicht gültig vor diesem ZeitpunktToken wurde ein paar Sekunden zu früh benutzt
iatAusstellungszeitpunktGrundlage für maximale Gültigkeitsdauer und Sperrfenster
jtiEindeutige Token-IDWird gebraucht, um ein einzelnes Token zu sperren

Dekodieren ist nicht Verifizieren

An diesem Punkt entstehen die meisten Missverständnisse. Ein Token zu lesen zeigt Ihnen, was es behauptet - nicht, ob die Behauptung echt ist. Verifizieren heißt, die Signatur mit dem Secret oder dem öffentlichen Schlüssel des Ausstellers neu zu berechnen und zu vergleichen, dazu Ablauf und Zielgruppe zu prüfen. Jeder Decoder zeigt den Payload eines gefälschten Tokens genauso bereitwillig wie den eines echten. Treffen Sie deshalb nie eine Autorisierungsentscheidung allein auf Basis dekodierter Inhalte, sondern verifizieren Sie serverseitig mit einer gepflegten Bibliothek.

Fehlersuche bei einem Token, das nicht funktioniert

  • 401 trotz gültigem Token: aud mit der Erwartung der API und iss mit der konfigurierten Aussteller-URL vergleichen. Beides unter Erwarteter Aussteller und Erwartete Zielgruppe eintragen und auf Prüfen klicken: Das Ergebnis nennt den Wert, den das Token tatsächlich enthält.
  • Sofort abgelaufen: exp mit dem Unix-Timestamp-Konverter umrechnen und mit der Serveruhr vergleichen, nicht mit Ihrem Notebook.
  • Ungültiges Segment: Das Token wurde abgeschnitten, unterwegs URL-kodiert, oder beim Kopieren ist ein Zeilenumbruch hineingeraten.
  • Signaturprüfung schlägt fehl: Der Schlüssel wurde rotiert, es wurde die falsche Key-ID verwendet, oder das Token stammt aus einer anderen Umgebung.
  • alg ist none: ablehnen. Dieser Wert kennzeichnet ein unsigniertes Token und ist ein klassischer Angriff auf nachlässige Validierung.

Sicherheitsgewohnheiten, die sich lohnen

  • Niemals personenbezogene Daten, interne IDs oder Vertrauliches in den Payload schreiben - er ist bewusst lesbar.
  • Access Tokens kurzlebig halten und für längere Sitzungen ein Refresh Token verwenden.
  • Tokens ausschließlich über HTTPS übertragen und wo möglich secure, HttpOnly gesetzte Cookies dem Browser-Storage vorziehen.
  • Signaturschlüssel planmäßig rotieren und über einen JWKS-Endpunkt veröffentlichen, damit Clients folgen können.
  • Jedes Token, das Sie in ein Online-Werkzeug eingefügt haben, als potenziell offengelegt betrachten - genau deshalb verlässt es hier die Seite nicht.

Funktioniert offline im Browser

Der Decoder ist clientseitiges JavaScript. Nach dem Laden der Seite können Sie Tokens ganz ohne Netzverbindung dekodieren, und Produktivzugangsdaten verlassen Ihren Rechner nie.

Einen JWT im Code oder in der Kommandozeile dekodieren

WoWie
JavaScript (npm)import { jwtDecode } from 'jwt-decode'; jwtDecode(token) - nur die Payload, keine Prüfung
Python (PyJWT)jwt.decode(token, options={'verify_signature': False}) zum Lesen, oder den Schlüssel übergeben, um zu prüfen
Bashecho $TOKEN | cut -d. -f2 | tr '_-' '/+' | base64 -d 2>/dev/null - Base64URL lässt das Padding weg, eine kurze Payload braucht daher eventuell ein angehängtes ==
Browser-KonsoleJSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')))

Jede dieser Varianten liest den Token, ohne die Signatur zu prüfen - zum Debuggen in Ordnung, für Autorisierungsentscheidungen falsch, siehe den Abschnitt oben.

Passende Werkzeuge

Tokens sitzen zwischen mehreren Formaten. Die rohen Segmente liest der Base64 Decoder, den Payload formatiert der JSON Formatter, exp und iat werden im Timestamp-Konverter zu Datumsangaben, und ein aus einer URL gezogenes Token entschärft der URL Decoder.

Passende Anleitungen