So dekodieren Sie Base64URL
- Fügen Sie die Zeichenkette in Eingabe · Base64 ein. Die Seite öffnet mit einem URL-sicheren Beispiel.
- Lesen Sie das Ergebnis in Ausgabe · Text. Die Statuszeile zeigt die Variante (Base64URL oder Standard), die Anzahl dekodierter Bytes und den erkannten Typ. Fehlte das Padding, steht dort „Fehlendes Padding wurde automatisch ergänzt.“
- JSON, der übliche Inhalt von Tokens, wird mit JSON formatieren eingerückt.
- Bei binärem Inhalt wie Hashes oder zufälligen IDs meldet das Tool Binärdaten und verlinkt einen passenden Decoder.
- Mit Ausgabe kopieren oder Herunterladen übernehmen Sie das Ergebnis.
Zum Kodieren nehmen Sie den Base64URL-Encoder. Um einen Base64URL-String ohne Dekodieren in Standard-Base64 umzuwandeln, nutzen Sie Base64URL in Base64.
Beispiele
| Base64URL | Dekodiert | Hinweis |
|---|---|---|
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 | {"alg":"HS256","typ":"JWT"} | Ein typischer JWT-Header |
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImFkbWluIjp0cnVlfQ | {"sub":"1234567890","name":"Ada","admin":true} | Eine JWT-Payload; Padding ergänzt |
c3ViamVjdHM_X2Q | subjects?_d | _ ist das URL-sichere / |
8J-Riw | 👋 | - ist das URL-sichere + |
E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM | 32 Bytes Binärdaten | Ein SHA-256-Hash, das PKCE-Beispiel aus RFC 7636 |
Beim Hash in der letzten Zeile ist eine Textausgabe sinnlos. Öffnen Sie ihn in Base64 in Hex, um die Bytes als 13 d3 1e 96 ... zu sehen.
Padding und warum es sich ergänzen lässt
Base64URL wird meist ohne = geschrieben. Dabei geht keine Information verloren: Eine gültige Zeichenkette hat eine Länge von 4n, 4n + 2 oder 4n + 3 Zeichen, und der Rest sagt dem Decoder, ob in der letzten Gruppe ein oder zwei Bytes stecken. Das Tool ergänzt das fehlende = vor dem Dekodieren und meldet das in der Statuszeile.
Eine Länge von 4n + 1 kann nie vorkommen. Sehen Sie den Fehler „Falsche Länge: ein Zeichen zu viel oder zu wenig“, ging beim Kopieren des Werts ein Zeichen verloren oder kam eines hinzu, etwa an einem Zeilenumbruch in einer E-Mail oder einem Log. Padding erklärt zeigt die Rechnung.
Viele Standard-Decoder sind weniger nachsichtig. atob() im Browser lehnt - und _ mit InvalidCharacterError ab, und Pythons base64.urlsafe_b64decode wirft Incorrect padding, wenn = fehlt.
Tokens, Cookies und URL-Parameter
- JWT. Ein Token sieht aus wie
xxxxx.yyyyy.zzzzz. Die ersten beiden Teile sind Base64URL-JSON, der dritte ist die Signatur, also Binärdaten. Dekodieren Sie die Teile hier einzeln, oder fügen Sie das ganze Token in den JWT-Decoder ein, der auch das Ablaufdatum zeigt und Signaturen prüft. Base64 in JWT erklärt das Format. - Cookies und Session-IDs. Manche Session-Cookies von Frameworks, etwa die von Flask, verbinden Base64URL-Daten und eine Signatur mit Punkten. Dekodieren Sie nur den Datenteil.
- URL-Parameter. OAuth-
state, Weiterleitungsziele und Share-Links tragen manchmal Base64URL-JSON. Enthält der Wert%2Foder%2B, wurde er zusätzlich prozentkodiert und muss zuerst URL-dekodiert werden.
Mischt eine Zeichenkette - oder _ mit + oder /, bricht der Decoder mit „Die Eingabe mischt Standard- (+ /) und URL-sichere (- _) Zeichen“ ab. Meist wurden dann zwei Werte zusammengefügt oder einer nur teilweise umgewandelt.
Base64URL im Code dekodieren
// Node.js
Buffer.from("c3ViamVjdHM_X2Q", "base64url").toString("utf8"); // "subjects?_d"
// Browsers with Uint8Array.fromBase64
new TextDecoder().decode(Uint8Array.fromBase64("c3ViamVjdHM_X2Q", { alphabet: "base64url" }));
import base64
def b64url_decode(s: str) -> bytes:
return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))
b64url_decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9") # b'{"alg":"HS256","typ":"JWT"}'
Die Padding-Zeile funktioniert für jede Eingabelänge, die gültiges Base64 ist. Mehr unter Base64 in Node.js, JavaScript und Python.
Häufige Fragen
Wie dekodiere ich Base64URL?
Fügen Sie es oben ein; eine Einstellung ist nicht nötig. Im Code ersetzen Sie - durch + und _ durch /, hängen = an, bis die Länge ein Vielfaches von 4 ist, und dekodieren wie normales Base64, oder Sie verwenden einen URL-sicheren Decoder wie Buffer.from(s, "base64url") in Node.
Warum erhalte ich einen Fehler zum Zeichen „.“?
Sie haben ein ganzes JWT eingefügt. Seine drei Teile sind durch Punkte getrennt, und jeder Teil muss einzeln dekodiert werden. Fügen Sie einen Teil ein oder nutzen Sie für das ganze Token den JWT-Decoder.
Warum zeigt die Statuszeile Standard für meinen Base64URL-String?
Die Zeichenkette enthält keines der Zeichen -, _, + oder /, ist also in beiden Alphabeten gültig und wird so oder so gleich dekodiert. Viele JWT-Header sehen so aus.
Was, wenn der Wert noch prozentkodiert ist?
Ein kodiertes = (%3D) wird verarbeitet. Andere Escapes wie %2F bedeuten, dass der Wert eine URL-Kodierung durchlaufen hat; schicken Sie ihn zuerst durch den URL-Decoder.