Base64-Anleitungen

Diese praktischen Anleitungen erklären, was Base64 macht, wann es sinnvoll ist und wie man reale Datenprobleme behebt. Die Beispiele verwenden Standard-Base64, sofern die jeweilige Anleitung nichts anderes sagt.

Verwandte einzelne Tutorials

1. Was Base64 ist

Base64 ist eine Binär-zu-Text-Kodierung. Sie bildet jeweils drei Eingabebytes auf vier druckbare Zeichen aus A-Z, a-z, 0-9, Plus (+) und Schrägstrich (/) ab. Ein Gleichheitszeichen (=) füllt die letzte Gruppe auf, wenn die ursprüngliche Länge nicht durch drei teilbar ist. Da jede Vierergruppe drei Bytes darstellt, wächst die Darstellung meist um etwa ein Drittel. Kodierung verbirgt keine Informationen: Jeder mit der Zeichenfolge kann sie dekodieren.

Das Format ist nützlich, wenn ein Transport Text erwartet, die Daten aber binär sind. E-Mail-MIME-Teile, JSON-Felder, Data-URLs, Konfigurationsdateien und API-Payloads sind typische Beispiele. Für große Dateien ist es weniger geeignet, weil die Größenzunahme Bandbreite und Speicher kostet.

2. Text richtig kodieren

Text muss zuerst mit einem festgelegten Zeichensatz in Bytes umgewandelt werden. UTF-8 ist für moderne Anwendungen die sicherste Vorgabe, weil Unicode konsistent dargestellt wird. Die Zeichenfolge café wird nicht direkt aus den sichtbaren Zeichen kodiert, sondern aus ihren UTF-8-Bytes. Wenn ein System UTF-8 verwendet und ein anderes Windows-1252 oder eine ältere chinesische Kodierung annimmt, entstehen Ersatzzeichen oder unlesbarer Text.

Wählen Sie im Browser den Quellzeichensatz, fügen Sie den Text ein und prüfen Sie das Ergebnis. Zeilenumbrüche müssen bewusst erhalten werden: Ein ganzer Absatz und jede Zeile einzeln ergeben unterschiedliche Zeichenfolgen. Dokumentieren Sie bei APIs den Zeichensatz und ob Zeilenumbrüche zu LF oder CRLF normalisiert werden.

3. Text oder Dateien dekodieren

Dekodierte Bytes sind nicht immer Text. Eine PNG-, PDF-, ZIP-Datei oder ein Zertifikat kann korrekt dekodiert werden und trotzdem in einem Textfeld sinnlos aussehen. Verwenden Sie einen dateiorientierten Decoder, wenn die Eingabe mit einer Data-URL wie data:application/pdf;base64,... beginnt oder wenn der Ursprung binär war.

Whitespace wird von E-Mail- und Dokumentationssystemen oft in Base64 eingefügt. Standarddecoder können harmlose Zeilenumbrüche entfernen, aber versehentliche Änderungen innerhalb des Alphabets beschädigen die Daten. Vergleichen Sie Dateisignatur und Länge bei der Fehlersuche.

Probieren Sie es mit dem Base64-Decoder aus.

4. Base64URL und Padding

URLs behandeln Plus und Schrägstrich besonders, daher ersetzt Base64URL + durch - und / durch _. Viele Produzenten lassen außerdem abschließendes Padding weg. Ein URL-sicherer Decoder muss das erwartete Padding wiederherstellen, bevor die finalen Bytes erzeugt werden.

Base64URL ist in JSON Web Tokens und URL-Parametern üblich. Es ist keine Verschlüsselung und macht ein Token nicht vertrauenswürdig. Anwendungen müssen weiterhin authentifizieren, autorisieren, Längen prüfen und Geheimnisse mit passender Verschlüsselung oder sicherem Token-Design schützen.

5. Data-URLs in HTML und CSS

Eine Data-URL bettet Medientyp und kodierte Nutzdaten in eine Zeichenfolge ein, zum Beispiel data:image/png;base64,.... Das ist praktisch für kleine Icons, Testdaten oder eigenständige Demos. Große Data-URLs erschweren Caching und Pflege, daher sind normale statische Dateien meist schneller.

Beim Dekodieren einer Data-URL muss die Metadatenzone vor dem Komma vom Base64-Payload getrennt bleiben. Der Medientyp sagt, wie die Bytes zu interpretieren sind; er beweist nicht, dass sie gültig sind. Prüfen Sie Dateisignaturen, bevor Sie nicht vertrauenswürdige Inhalte anzeigen.

6. Base64 in APIs und JWTs

APIs nutzen Base64 oft für Binärfelder, aber JSON selbst ist Text und braucht für normale Zeichenfolgen kein Base64. JWTs verwenden einen Base64URL-kodierten Header und Payload, getrennt durch Punkte. Diese Teile sind lesbare Kodierungen, kein vertraulicher Speicher.

Halten Sie bei API-Integrationen fest, ob Padding erforderlich ist, ob Zeilenumbrüche erlaubt sind, welcher Zeichensatz erwartet wird und wie groß der Payload maximal sein darf. Testen Sie leere Eingaben, Unicode-Text, Ein- und Zwei-Byte-Werte sowie fehlerhafte Zeichen.

7. Sicherheit und Datenschutz

Base64 bietet höchstens Verschleierung. Es authentifiziert keine Nachricht, verhindert keine Manipulation und schützt kein Geheimnis. Behandeln Sie dekodierte Inhalte als nicht vertrauenswürdige Eingaben und validieren Sie sie vor dem Parsen, Anzeigen oder Ausführen.

Für vertrauliche Arbeitsabläufe verwenden Sie eine lokale Kommandozeile oder Offline-Bibliothek unter den Kontrollen Ihrer Organisation. Für Transportsicherheit nutzen Sie HTTPS und ein für die Daten geeignetes Verschlüsselungs- oder Authenticated-Encryption-Verfahren.

8. Häufige Fehler und Checkliste

„Invalid character“ bedeutet meist, dass ein Standarddecoder URL-sichere Zeichen oder fremde Satzzeichen erhalten hat. „Incorrect padding“ weist oft auf eine abgeschnittene Zeichenfolge oder entfernte Gleichheitszeichen hin. Unlesbarer Text spricht für einen Zeichensatzfehler; eine erfolgreiche Dekodierung mit unlesbarer Vorschau kann schlicht Binärdaten bedeuten.

Prüfen Sie der Reihe nach: vollständiger Wert kopiert, Standard- oder URL-sicheres Alphabet erkannt, nur erlaubten Whitespace entfernt, ursprünglichen Zeichensatz gewählt, Bytelänge verglichen und erwartete Dateisignatur geprüft. Ein kleiner bekannter Test wie SGVsbG8= (UTF-8-Text „Hello“) trennt Werkzeugprobleme von Eingabeproblemen.

Probieren Sie es mit dem Base64-Encoder aus.

const text = "Hello, Base64!";
const encoded = btoa(unescape(encodeURIComponent(text)));
console.log(encoded); // SGVsbG8sIEJhc2U2NCE=
const decoded = decodeURIComponent(escape(atob(encoded)));
console.log(decoded);
import base64

value = "你好, Base64"
encoded = base64.b64encode(value.encode("utf-8")).decode("ascii")
decoded = base64.b64decode(encoded).decode("utf-8")
print(encoded)
print(decoded)
# Decode a text value on macOS or Linux
printf 'SGVsbG8=' | base64 --decode

# URL-safe decoding in Python
import base64
base64.urlsafe_b64decode("SGVsbG8")

Inhalt geprüft: 30. August 2026