Was steht in Ihrem JWT-Token? Jetzt decodieren
Diese Funktion zerlegt einen JWT-Token in seine drei Teile – Header, Payload und Signatur – und zeigt Header und Payload als lesbares JSON an. Gedacht für alle, die schnell prüfen möchten, welche Ansprüche (Claims) ein Token enthält oder wann er abläuft, ohne den Wert in ein fremdes Tool einzufügen.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Aus welchen Teilen ein JWT besteht
Ein JWT-Token besteht aus drei durch Punkte getrennten Base64-codierten Abschnitten: dem Header mit Angaben zum Algorithmus, der Payload mit den eigentlichen Ansprüchen wie Benutzer-ID oder Ablaufzeit, und der Signatur, die die Unversehrtheit der ersten beiden Teile bestätigt. Diese Funktion zeigt Header und Payload direkt als lesbares JSON an.
Decodieren heißt nicht prüfen
Das reine Decodieren macht die Payload lesbar, sagt aber nichts über die Gültigkeit der Signatur aus – jeder kann einen JWT-Token decodieren, ohne den geheimen Schlüssel zu kennen. Wer die Signatur tatsächlich prüfen möchte, muss dafür den Schlüssel angeben; ohne Schlüssel liefert diese Funktion ausschließlich die lesbare Ansicht der beiden ersten Teile.
Typische Angaben in der Payload
Häufige Felder sind „sub“ für den Benutzer, „exp“ für den Ablaufzeitpunkt, „iat“ für den Ausstellungszeitpunkt und „iss“ für den Aussteller. Die Funktion rechnet Zeitstempel-Felder wie „exp“ zusätzlich in ein lesbares Datum um, sodass Sie auf einen Blick sehen, ob ein Token bereits abgelaufen ist, ohne den Unix-Zeitstempel selbst umrechnen zu müssen.
Kostenlos, lokal, per API automatisierbar
Die Zerlegung findet direkt in Ihrem Browser statt, der Token wird nicht an einen Server übertragen. Für die automatisierte Prüfung in einer Pipeline steht derselbe Aufruf über die API zur Verfügung, für $0.002 pro Anfrage; die manuelle Nutzung im Browser bleibt kostenlos.
Anwendungsfälle
Prüfen, wann ein Token abläuft
Jonas Weber bekommt in seiner Anwendung einen unerwarteten Anmeldefehler gemeldet und decodiert den JWT-Token aus den Entwicklerwerkzeugen des Browsers, um zu sehen, ob das Ablaufdatum bereits erreicht war.
Die Rollen-Claims eines API-Tokens nachvollziehen
Ein Entwicklerteam bei der Schneider IT-Systeme GmbH & Co. KG prüft, welche Rolle einem Test-Token zugewiesen wurde, bevor es einen Zugriffsfehler in der eigenen Berechtigungslogik sucht.
Einen fremden Token für die Dokumentation nachvollziehen
Eine Freiberuflerin integriert eine externe API und decodiert einen Beispiel-Token aus der Dokumentation des Anbieters, um zu verstehen, welche Felder ihr eigener Server später auswerten muss.
Häufige Fragen
Wird bei diesem Vorgang auch die Signatur geprüft?
Nicht automatisch. Ohne Angabe des geheimen Schlüssels zeigt die Funktion nur die lesbare Payload; für die Signaturprüfung geben Sie den Schlüssel zusätzlich an.
Wird mein Token an einen Server gesendet?
Nein. Die Zerlegung erfolgt direkt in Ihrem Browser, der Token verlässt die Seite nicht.
Was bedeutet das Feld „exp“ in der Payload?
Es gibt den Ablaufzeitpunkt des Tokens als Unix-Timestamp an. Die Funktion zeigt zusätzlich das lesbare Datum an, damit Sie den Zeitpunkt nicht selbst umrechnen müssen.
Kann jeder einen JWT-Token decodieren?
Ja, das ist beabsichtigt. Header und Payload sind lediglich Base64-codiert, nicht verschlüsselt. Vertrauliche Daten gehören deshalb nicht in einen JWT-Token.
Muss ich mich anmelden?
Nein. Es gibt derzeit keine Konten – die Nutzung im Browser ist kostenlos und ohne Limit.
Was kostet die Nutzung über die API?
$0.002 pro Anfrage. Im Browser bleibt die Funktion unabhängig davon kostenlos.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/jwt-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/jwt-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/jwt-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/jwt-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/jwt-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"items": [
"valor-1",
"valor-2"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.jwt_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |