Base64 erklärt: Warum die Daten größer werden und wie du sie dekodierst
Base64 schreibt binäre Daten als reinen Text und nutzt dafür 64 Zeichen: A bis Z, a bis z, 0 bis 9, dazu + und /. Aus jeweils drei Bytes werden vier Zeichen, deshalb ist der Text etwa ein Drittel länger als die Daten, die er enthält. Man verwendet es, wenn ein Format nur Text annehmen kann, etwa eine Data-URL in einer Webseite, ein JSON-Feld oder einen E-Mail-Anhang.
Warum Textformate das brauchen
Viele Formate wurden nur für Text gebaut. Ein E-Mail-Text, eine JSON-Datei oder eine CSS-Datei können Buchstaben und Symbole sicher aufnehmen, aber ein rohes Bild oder eine ZIP-Datei enthält Byte-Werte, die manche Systeme verändern, abschneiden oder als Steuerzeichen lesen würden. Base64 verwendet nur Zeichen, die jedes Textsystem unverändert durchlässt, dadurch kommen die Daten vollständig an. Definiert ist es in RFC 4648.
Base64 ist eine Kodierung, kein Geheimnis. Jeder kann sie ohne Schlüssel dekodieren, deshalb sollte man damit niemals ein Passwort oder persönliche Daten verbergen.
Wie aus drei Bytes vier Zeichen werden
Nimm das Wort Man, also drei Bytes: dezimal 77, 97 und 110. Zusammen ergeben diese drei Bytes 24 Bit. Teilt man die 24 Bit in vier Gruppen zu je sechs Bit, ist jede Gruppe eine Zahl von 0 bis 63, die auf genau ein Zeichen im Alphabet verweist. Man wird zu TWFu.
Sechs Bit können nur 64 Werte darstellen, deshalb tragen vier Zeichen drei Bytes. Die Ausgabe ist daher etwa ein Drittel größer als die Eingabe, bevor Zeilenumbrüche hinzukommen.
Lässt sich die Datenmenge nicht durch drei teilen, füllt der Encoder das Ende mit =-Zeichen auf. Ma, also zwei Bytes, wird zu TWE=, und M, ein einzelnes Byte, wird zu TQ==. Das Auffüllen sagt dem Decoder, wie viele Bytes die letzte Gruppe enthält.
Text muss zuerst als UTF-8 kodiert werden
Base64 arbeitet mit Bytes, Text besteht aber aus Zeichen. Ein Zeichen wie é oder ✓ wird in UTF-8, der im Web üblichen Kodierung, als mehr als ein Byte gespeichert. Die Browserfunktion btoa() nimmt eine Zeichenkette entgegen und behandelt jedes Zeichen als ein Byte, deshalb schlägt sie bei Zeichen außerhalb des einfachen lateinischen Bereichs fehl. Ruft man sie mit einem Häkchen auf, wirft sie einen InvalidCharacterError.
Die Lösung: Den Text zuerst in UTF-8-Bytes umwandeln und diese Bytes dann kodieren. Die Phrase héllo ✓ belegt in UTF-8 10 Bytes, und ihr Base64 lautet aMOpbGxvIOKckw==. Das Base64-Tool übernimmt diesen Schritt für dich. Beim Dekodieren liest es die Bytes wieder als UTF-8 ein. Sind die Bytes kein gültiger UTF-8-Text, behandelt das Tool sie als Datei und bietet einen Download an.
URL-sicheres Base64
Das Standardalphabet enthält + und /. In einer URL kann + für ein Leerzeichen stehen, und / trennt die Teile eines Pfads, deshalb kann eine Base64-Zeichenkette einen Link kaputt machen. Die URL-sichere Variante (RFC 4648, Abschnitt 5) verwendet stattdessen - und _ und lässt das =-Auffüllen meist weg. Nutze sie, wenn die Zeichenkette in eine URL, einen Dateinamen oder ein Token kommt. Der Decoder akzeptiert beide Varianten, mit oder ohne Auffüllung.
Stammt das Base64 aus einem Link, dekodiere zuerst die URL. Ein in einem Link prozent-kodierter Wert muss erst dekodiert werden, bevor sein Base64 lesbar ist. Der Leitfaden zur Prozent-Kodierung erklärt die Regeln für Links.
Der häufigste Fall ist ein Login-Token: Ein JSON Web Token besteht aus drei Base64url-Teilen, die durch Punkte verbunden sind, einem Header, den Daten und einer Signatur. Der JWT-Decoder zerlegt ein solches Token und zeigt Header und Daten als lesbares JSON.
Data-URLs und Bilder
Eine Data-URL steckt die Datei direkt im Link selbst. Sie beginnt mit data:, dann folgt der Medientyp, dann ;base64, danach ein Komma und die Daten. Ein kleines Bild wird zu data:image/png;base64, gefolgt von den kodierten Bytes. Webseiten und Stylesheets akzeptieren diese Form, was bei einem winzigen Icon eine Anfrage an den Server spart.
Der Nachteil ist die Größe. Die Daten sind etwa ein Drittel größer, und sie wandern innerhalb der Seite oder des Stylesheets mit, statt als eigene Datei, die der Browser zwischenspeichern kann. Verwende Data-URLs für kleine Bilder, nicht für große Fotos. Komprimiere das Foto, bevor du es kodierst, wenn es groß ist.
Wenn du im Tool Base64 dekodierst, prüft es die ersten Bytes der Daten. PNG-, JPEG-, GIF- und WebP-Dateien beginnen jeweils mit einer bekannten Signatur, deshalb zeigt das Tool eine Vorschau und bietet einen Download an. Eine Data-URL mit Bildtyp wird ebenfalls als Bild angezeigt.
So geht es mit fixmint
- Wähle oberhalb von Text oder Base64 Kodieren oder Dekodieren aus und füge dann deinen Text oder dein Base64 ein.
- Setze den Haken bei URL-sicheres Alphabet, ohne =-Auffüllung für Tokens, Dateinamen und Links. Der Decoder akzeptiert in jedem Fall beide Varianten.
- Um aus einer Datei eine Data-URL zu machen, ziehe die Datei in den Ablagebereich und setze den Haken bei Für Dateien: data:-URL ausgeben.
- Kopiere das Ergebnis. Sind die dekodierten Bytes eine Datei statt Text, nutze den Download, den das Tool anbietet.
Häufige Dekodierfehler
- Ein Zeichen ist nicht erlaubt. Die Eingabe enthält ein Zeichen außerhalb der 64, etwa ein Anführungszeichen aus einem kopierten Satz. Prüfe, woher der Text stammt. Ein Zeichen mit null Breite im kopierten Text verursacht denselben Fehler. Entferne deshalb unsichtbare Zeichen und versuche es erneut. Der Leitfaden zu unsichtbaren Zeichen erklärt, woher sie kommen.
- Die Länge stimmt nicht. Ein Zeichen fehlt oder ist zu viel, meist weil der Kopiervorgang abgebrochen ist.
- Zeilenumbrüche und Leerzeichen. E-Mail (MIME) bricht Base64 alle 76 Zeichen um. Der Decoder entfernt Leerzeichen und Zeilenumbrüche, du kannst umgebrochenen Text also unverändert einfügen.
- Fehlende Auffüllung. Manche Systeme lassen die =-Zeichen weg. Der Decoder ergänzt sie wieder.
Sonderfälle
- Das dekodierte Ergebnis wirkt wie Unsinn. Es kann sich um eine Datei statt um Text handeln. Eine ZIP-Datei, ein PDF oder ein Programm dekodiert sich zu Bytes, die nicht als Text lesbar sind. Das Tool bietet diese als Download an.
- Sehr große Eingaben. Die gesamte Datei wird beim Kodieren oder Dekodieren im Browser gehalten. Eine sehr große Datei kann daher langsam sein, und auf dem Smartphone kann der Vorgang fehlschlagen.
Kurze Antworten
Ist Base64 dasselbe wie Verschlüsselung?
Nein. Es ist eine umkehrbare Kodierung ohne Schlüssel, deshalb kann jeder sie dekodieren.
Warum ist mein Base64 länger als die Datei?
Aus jeweils drei Bytes werden vier Zeichen, deshalb ist der Text etwa ein Drittel größer.
Warum lässt sich eine kopierte Base64-Zeichenkette nicht dekodieren?
Meist ging beim Kopieren ein Zeichen verloren oder kam hinzu, etwa ein Zeilenumbruch an der falschen Stelle oder ein fehlendes letztes Zeichen. Kopiere sie erneut aus der Quelle.
Mit KI-Unterstützung aus dem Englisches Original übersetzt.
Kommentare
Noch keine Kommentare. Schreib den ersten.


