So dekodieren Sie Base64
- Fügen Sie das Base64 in das Feld Eingabe · Base64 ein. Zeilenumbrüche, Leerzeichen, umschließende Anführungszeichen und ein Präfix
data:...;base64,dürfen bleiben; der Decoder entfernt sie. - Der dekodierte Text erscheint in Ausgabe · Text. Eine Statuszeile meldet Gültiges Base64, die Variante (Standard oder Base64URL), die Anzahl der dekodierten Bytes und unter Sieht aus wie den erkannten Inhaltstyp.
- Ist der Text verstümmelt, ändern Sie den Zeichensatz oder wählen Automatisch.
- Ist der Inhalt JSON, rückt JSON formatieren ihn lesbar ein.
- Klicken Sie auf Ausgabe kopieren oder auf Herunterladen, um die dekodierten Bytes als Datei zu speichern. Die Endung richtet sich nach dem erkannten Typ, JSON wird also als
decoded.jsongespeichert und ein PNG alsdecoded.png.
Tauschen schickt den dekodierten Text zurück in die Eingabe und wechselt zum Kodieren. So prüfen Sie schnell, ob die Zeichenkette einen Roundtrip übersteht.
Was der Decoder akzeptiert
Base64 kommt selten sauber an. Aus einer E-Mail kommt es bei 76 Zeichen umbrochen, aus einer JSON-Datei in Anführungszeichen, aus einer URL prozentkodiert und aus einem Token ohne Padding. Der Decoder akzeptiert all das ohne jede Einstellung:
| Sie fügen ein | Sie erhalten | Was passiert ist |
|---|---|---|
SGVsbG8gV29ybGQ | Hello World | Fehlendes = ergänzt, die Statuszeile meldet es |
8J-Riw | 👋 | URL-sichere - und _ erkannt, Variante als Base64URL angezeigt |
data:text/plain;base64,SGk= | Hi | Präfix der Data-URI entfernt |
"SGVsbG8=" | Hello | Anführungszeichen aus Code oder JSON entfernt |
SGVsbG8%3D | Hello | URL-kodiertes %3D als = gelesen |
SGVs (Zeilenumbruch) bG8= | Hello | Zeilenumbrüche und Leerzeichen übersprungen |
Bei dieser Verpackung ist der Decoder nachsichtig, bei allem anderen streng: Ein Zeichen außerhalb des Alphabets stoppt ihn mit einer Fehlermeldung, die das Zeichen und seine Position nennt. Manche Bibliotheken überspringen fehlerhafte Zeichen dagegen stillschweigend und liefern Ihnen beschädigte Ausgabe (siehe den Abschnitt zum Code unten).
Speziell für URL-sichere Tokens erklärt der Base64URL-Decoder das Alphabet und Base64 vs. Base64URL die Unterschiede.
Wenn das dekodierte Base64 eine Datei ist
Base64 transportiert beliebige Bytes, und viele Base64-Zeichenketten sind Bilder oder Dokumente. Das Tool vergleicht die ersten Bytes der dekodierten Daten mit bekannten Dateisignaturen (Magic Numbers) und zeigt das Ergebnis unter Sieht aus wie: PNG, JPEG, PDF, ZIP, gzip, JSON, XML und viele mehr. Bei Binärformaten zeigt es eine druckbare Vorschau, weist auf Binärdaten hin und verlinkt das passende Tool, etwa Base64 in Bild oder Base64 in PDF. Herunterladen speichert so oder so die Originalbytes.
Der Anfang einer Base64-Zeichenkette verrät das Format oft schon vor dem Dekodieren:
| Base64 beginnt mit | Dekodierte Bytes | Format |
|---|---|---|
iVBORw0KGgo | 89 50 4E 47 0D 0A 1A 0A | PNG-Bild |
/9j/ | FF D8 FF | JPEG-Bild |
JVBERi0 | %PDF- | PDF-Dokument |
UEsDBA | PK 03 04 | ZIP, auch DOCX und XLSX |
H4sI | 1F 8B 08 | gzip-Daten (gzip-Base64-Decoder) |
eyJ | {" | JSON, oft ein JWT-Segment |
PD94bWwg | <?xml | XML |
Weitere Signaturen finden Sie unter Häufige Base64-Präfixe. Bei einer Datei unbekannten Typs erkennt Base64 in Datei das Format und zeigt eine Vorschau.
Zeichensätze: verstümmelten Text reparieren
Base64 speichert Bytes und sagt nichts darüber, welcher Zeichensatz Zeichen in diese Bytes verwandelt hat. Der Decoder nimmt UTF-8 an, was für die meisten modernen Daten stimmt. Liegt er falsch, sind die Symptome gut zu erkennen:
�-Zeichen und der Hinweis „Einige Bytes sind kein gültiges UTF-8“. Der Text stammt aus einem älteren Zeichensatz.Y2Fm6Q==wird in UTF-8 alscaf�gelesen und in ISO-8859-1 oder Windows-1252 alscafé. Russischer Text wiez/Do4uXybraucht Windows-1251, umПриветzu zeigen.- Ein Punkt oder eine Lücke nach jedem Buchstaben. Das ist UTF-16: Dort folgt auf jeden ASCII-Buchstaben ein Nullbyte.
SABlAGwAbABvAA==istHelloin UTF-16LE (Base64 in UTF-16). é,üoder’in der Ausgabe. Die Dekodierung ist korrekt; der Text wurde doppelt kodiert, bevor er zu Base64 wurde, weil ein früherer Schritt UTF-8 als Latin-1 gelesen und das Ergebnis wieder als UTF-8 gespeichert hat.Y2Fmw4PCqQ==wird exakt zucafédekodiert. Beheben Sie das an der Quelle.
Automatisch prüft zuerst auf eine Byte-Order-Mark, dann, ob die Bytes gültiges UTF-8 sind, dann auf das Nullbyte-Muster von UTF-16. Einbyte-Codepages wie Windows-1251 und KOI8-R kann keine Erkennung auseinanderhalten; wählen Sie sie von Hand, wenn Sie die Quelle kennen.
Fehlermeldungen und ihre Bedeutung
| Meldung | Übliche Ursache | Lösung |
|---|---|---|
| Ungültiges Zeichen “.” an Position 21 | Ein ganzes JWT eingefügt: Die Punkte trennen drei Segmente | Ein Segment dekodieren oder den JWT-Decoder nehmen |
Ungültiges Zeichen "\\" an Position 8 | Base64 aus JSON kopiert, wo / als \/ maskiert war | \/ durch / ersetzen |
| Die Eingabe mischt Standard- (+ /) und URL-sichere (- _) Zeichen | Zwei Zeichenketten zusammengefügt oder eine halb fertige Umwandlung | Mit Base64URL in Base64 in ein Alphabet umwandeln |
| Padding (=) darf nur ganz am Ende stehen | Zwei Base64-Werte zusammengeklebt, etwa SGk=SGk= | Trennen und jeden einzeln dekodieren |
| Falsche Länge: ein Zeichen zu viel oder zu wenig | Beim Kopieren ging ein Zeichen verloren oder kam hinzu | Neu kopieren oder Base64 reparieren versuchen |
Die Anleitung zu Base64-Fehlern geht jeden Fall ausführlicher durch. Um das genaue Zeichen- oder Padding-Problem in einer Zeichenkette zu finden, nehmen Sie den Base64-Validator.
Base64 dekodieren in JavaScript, Python und auf der Kommandozeile
atob() liefert einen „binären String“ mit einem Zeichen pro Byte, UTF-8-Text braucht also einen Schritt mit TextDecoder. atob akzeptiert fehlendes Padding, wirft aber bei URL-sicheren - und _ einen InvalidCharacterError.
const s = "R3LDvMOfZSDwn5GL";
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)));
// "Grüße 👋"
// Node.js accepts both alphabets
Buffer.from(s, "base64").toString("utf8"); // "Grüße 👋"
Buffer.from("8J-Riw", "base64url").toString("utf8"); // "👋"
Python wirft bei Eingaben ohne Padding binascii.Error: Incorrect padding, ergänzen Sie das Padding also selbst:
import base64
s = "SGVsbG8"
base64.b64decode(s + "=" * (-len(s) % 4)).decode("utf-8")
# 'Hello'
base64.b64decode("SGVs*bG8=", validate=True)
# binascii.Error: Only base64 data is allowed
Ohne validate=True verwirft Python das * und liefert b'Hello'. Buffer.from in Node verhält sich genauso, eine beschädigte Zeichenkette kann also ganz ohne Fehler dekodiert werden.
Auf der Kommandozeile:
printf '%s' 'R3LDvMOfZSDwn5GL' | base64 -d
base64 -d message.b64 > message.bin
Die erste Zeile gibt Grüße 👋 aus. Ältere macOS-Versionen schreiben den Schalter als -D. Mehr zu jeder Sprache: JavaScript, Node.js, Python, PHP.
Häufige Fragen
Wie dekodiere ich eine Base64-Zeichenkette?
Fügen Sie sie oben in das Eingabefeld ein; der dekodierte Text erscheint sofort. Im Code dekodieren Sie das Base64 zu Bytes und lesen die Bytes dann als UTF-8: base64.b64decode(s).decode() in Python, Buffer.from(s, "base64").toString() in Node.js.
Warum zeigt mein dekodierter Text seltsame Zeichen wie � oder é?
� bedeutet, dass die Bytes kein gültiges UTF-8 sind; der Text wurde also vermutlich in einem anderen Zeichensatz kodiert. Probieren Sie im Menü „Zeichensatz“ Windows-1252, Windows-1251 oder UTF-16LE. é statt é bedeutet, dass der Text schon verstümmelt war, bevor ihn jemand kodiert hat.
Kann ich Base64 ohne =-Padding dekodieren?
Ja. Der Decoder ergänzt das fehlende = selbst und meldet das in der Statuszeile. Padding füllt nur den letzten Block auf und lässt sich daher immer aus der Länge wiederherstellen.
Die dekodierte Ausgabe ist Kauderwelsch. Ist das Base64 kaputt?
Meist sind die Daten eine Datei. Sehen Sie in der Statuszeile beim Feld „Sieht aus wie“ nach: Bei Bildern, PDFs, Archiven und anderen Binärformaten verlinkt das Tool einen Decoder, der die Datei anzeigt oder speichert.
Lässt sich Base64 ohne Schlüssel dekodieren?
Immer. Base64 ist eine Kodierung mit öffentlichem Alphabet und bietet keinerlei Geheimhaltung. Sieht das dekodierte Ergebnis immer noch zufällig aus, wurden die Daten vor dem Kodieren verschlüsselt oder komprimiert.