Base64-Encoder & -Decoder
Füge einen beliebigen Text ein und wandle ihn in Base64 um, oder füge einen Base64-String ein und erhalte den ursprünglichen Text zurück. Umlaute, Akzente und Emojis werden korrekt verarbeitet (UTF-8).
Wofür wird die Base64-Kodierung verwendet?
Base64 verwandelt jede beliebige Bytefolge in reinen Text aus Buchstaben, Ziffern,
+, / und =. Es begegnet dir überall: bei Bildern, die
in CSS und E-Mails eingebettet sind (Data-URIs), im Authorization: Basic Header von HTTP-Anfragen
und in den ersten beiden Teilen eines JWT. Denk daran, dass es keine Verschlüsselung ist: Jeder kann es
dekodieren. Seine einzige Aufgabe ist es, Binärdaten über Kanäle zu transportieren, die nur reinen Text akzeptieren.
Warum UTF-8-Unterstützung wichtig ist
Die im Browser eingebaute Funktion btoa() scheitert ohne Vorarbeit an Buchstaben mit Akzent,
Symbolen wie „€“ und Emojis, weil sie nur 8-Bit-Zeichen akzeptiert. Dieses Tool wandelt
deinen Text zuerst in UTF-8-Bytes um, mit TextEncoder, sodass Strings wie „café“ und „🙂“ fehlerfrei kodiert
und dekodiert werden, mit genau demselben Ergebnis, das du in Python oder Node.js bekommen würdest.
Base64 ist keine Verschlüsselung
Das ist das häufigste und gefährlichste Missverständnis: Base64 ist eine umkehrbare Kodierung ohne Schlüssel, und jeder dekodiert sie in einer Sekunde. Ein Token, ein Passwort oder personenbezogene Daten, die mit Base64 „geschützt“ sind, liegen praktisch im Klartext vor.
Seine Aufgabe ist eine andere: beliebige Bytes durch einen Kanal zu bringen, der nur Text akzeptiert. Entstanden ist es für E-Mail-Anhänge, die nur druckbare Zeichen transportieren können, und deshalb taucht es heute in JSON, in URLs und mitten in HTML-Seiten auf.
Warum es ein Drittel mehr Platz braucht
Base64 nimmt jeweils drei Bytes und schreibt sie als vier Zeichen: Daher kommt der Overhead von 33 %, dazu eventuell das Auffüllen (Padding) mit dem Zeichen „=“. Das sind feste, unvermeidbare Kosten, kein Fehler der Implementierung.
Die Rechnung zählt in der Praxis, wenn du Bilder in Seiten einbettest: Ein Foto mit 300 kB wird zu 400 kB Text im HTML, wird nicht separat zwischengespeichert und bei jedem Besuch neu heruntergeladen. Sinnvoll ist das nur bei ganz kleinen Icons, bei denen du eine Netzwerkanfrage sparst.
Der Akzent, der alles kaputtmacht
Die Browserfunktion btoa() verarbeitet nur Bytes bis 255, deshalb scheitert sie an jedem Zeichen außerhalb des lateinischen Grundalphabets: an einem „è“, einem „ñ“, einem Emoji oder einem chinesischen Schriftzeichen. Die Fehlermeldung spricht von Zeichen außerhalb des gültigen Bereichs und sagt rein gar nichts über das eigentliche Problem.
Die richtige Lösung ist, den Text zuerst in UTF-8-Bytes umzuwandeln und diese dann zu kodieren, beim Dekodieren in umgekehrter Reihenfolge. Deshalb kann ein String, den ein Programm kodiert hat, in einem anderen unlesbar herauskommen: Nicht Base64 unterscheidet sich, sondern der Schritt vom Text zu den Bytes.
Siehe auch
Für Bilder gibt es eine eigene Seite: Base64 in Bild umwandeln. Für Webadressen, die andere Kodierungsregeln brauchen, gibt es das Tool „URL kodieren und dekodieren“, und um die Integrität einer Datei zu prüfen, die Datei-Prüfsumme.