Was ist Base64-Kodierung
Base64 ist ein Binär-zu-Text-Kodierungsschema, das Binärdaten mit 64 ASCII-Zeichen darstellt. Es wurde entwickelt, um Binärdaten über Systeme zu übertragen, die nur Text unterstützen — E-Mail (MIME), JSON-Payloads, HTML-Attribute, URLs und XML-Dokumente.
Der Name kommt vom 64-Zeichen-Alphabet: A–Z (26), a–z (26), 0–9 (10) und zwei Zusatzzeichen (+ und / in der Standardvariante). Padding verwendet das =-Zeichen.
Base64 ist keine Verschlüsselung. Es bietet keine Sicherheit — jeder kann es dekodieren. Es ist rein eine Formatkonvertierung.
Wie Base64 funktioniert
Der Algorithmus ist unkompliziert:
- Eingabebytes nehmen und ihre Binärdarstellungen verketten (jedes Byte = 8 Bits).
- Den resultierenden Bitstrom in 6-Bit-Gruppen aufteilen.
- Jede 6-Bit-Gruppe auf eines der 64 Zeichen im Base64-Alphabet abbilden.
- Falls die letzte Gruppe weniger als 6 Bits hat, mit Nullen auffüllen und
=-Padding zur Ausgabe hinzufügen.
Der 33%-Größen-Overhead
Alle 3 Bytes Eingabe erzeugen 4 Zeichen Base64-Ausgabe. Base64-kodierte Daten sind ca. 33 % größer als die Originaldaten.
| Originalgröße | Base64-Größe | Overhead | |---|---|---| | 1 KB | ~1,33 KB | +33 % | | 10 KB | ~13,3 KB | +33 % | | 100 KB | ~133 KB | +33 % | | 1 MB | ~1,33 MB | +33 % |
Dieser Overhead ist der Kompromiss für Textkompatibilität. Für kleine Assets (Icons, Thumbnails unter 10 KB) ist er vernachlässigbar. Für große Dateien macht Base64 keinen Sinn — verwenden Sie direkte Binärübertragung.
Wann Base64 verwenden
Data URIs in HTML/CSS
Kleine Bilder direkt in HTML oder CSS einbetten, um einen HTTP-Request zu sparen:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEU..." alt="icon" />
Verwenden für: Icons unter 5 KB, einfache SVGs, kritische Above-the-Fold-Bilder. Vermeiden für: Größere Dateien — der Base64-Overhead plus fehlendes Caching macht es schlechter als eine separate Datei.
E-Mail-Anhänge (MIME)
E-Mail-Protokolle (SMTP) sind textbasiert und können kein Roh-Binär übertragen. MIME-Kodierung verwendet Base64 für Anhänge. Dies erklärt, warum E-Mail-Anhänge größer sind als die Originaldateien.
JSON-Payloads
JSON unterstützt keine Binärdaten. Wenn eine API eine Datei innerhalb einer JSON-Antwort übertragen muss, ist Base64 der Standardansatz.
Alternative: Für große Dateien multipart/form-data oder eine Download-URL statt Inline-Base64 verwenden.
JWT-Tokens
JSON Web Tokens verwenden Base64URL-Kodierung für Header, Payload und Signatur.
Basic Authentication
HTTP Basic Auth kodiert username:password als Base64 im Authorization-Header. Immer HTTPS verwenden.
Tool verwenden
PureXio Base64 Encoder/Decoder — Sofort, privat
Standard vs. URL-sicheres Base64
Standard-Base64 verwendet +, / und = — Zeichen mit Sonderbedeutung in URLs. URL-sicheres Base64 (RFC 4648) ersetzt:
| Standard | URL-sicher |
|---|---|
| + | - |
| / | _ |
| = (Padding) | Oft weggelassen |
URL-sicheres Base64 verwenden wenn der kodierte String in URLs, Query-Parametern, Dateinamen oder Cookies erscheint.
Base64 in JavaScript
Browser (Client-seitig)
// Kodieren
const kodiert = btoa('Hallo Welt!');
// Dekodieren
const dekodiert = atob(kodiert);
btoa() und atob() verarbeiten nur ASCII-Strings. Für Unicode-Text zuerst in UTF-8 kodieren.
Node.js
// Kodieren
const kodiert = Buffer.from('Hallo Welt!').toString('base64');
// Dekodieren
const dekodiert = Buffer.from(kodiert, 'base64').toString('utf-8');
// URL-sichere Variante
const urlSicher = Buffer.from('Hallo Welt!').toString('base64url');
Base64 in Python
import base64
# Kodieren
kodiert = base64.b64encode(b'Hallo Welt!').decode('ascii')
# Dekodieren
dekodiert = base64.b64decode(kodiert).decode('utf-8')
# URL-sichere Variante
url_sicher = base64.urlsafe_b64encode(b'Hallo Welt!').decode('ascii')
Häufige Fehler
Base64 für Sicherheit verwenden. Base64 ist keine Verschlüsselung. Niemals Passwörter oder API-Schlüssel „nur als Base64-kodiert" speichern — echte Verschlüsselung (AES-256) oder Hashing (bcrypt) verwenden.
Große Dateien als Data URIs einbetten. Ein 500-KB-Bild wird 667 KB in Base64, und kann nicht separat vom Browser gecacht werden.
Doppelte Kodierung. Einen bereits kodierten String zu kodieren erzeugt gültige aber sinnlose Ausgabe.
Padding-Probleme ignorieren. Standard-Base64-Ausgabelänge ist immer ein Vielfaches von 4. Falls Dekodierung fehlschlägt, 1–2 =-Zeichen am Ende hinzufügen.
Tool verwenden
PureXio URL-Encoder/Decoder
Performance-Überlegungen
Parsing-Overhead. Base64-kodierte Daten in JSON müssen vom Empfänger dekodiert werden. Für Hochdurchsatz-APIs ist dieser Overhead messbar. Binärprotokolle (gRPC, MessagePack) für performancekritische Pfade in Betracht ziehen.
Speicherverbrauch. Das Dekodieren eines 10-MB-Base64-Strings erfordert gleichzeitiges Halten von kodiertem String (13,3 MB) und dekodierten Bytes (10 MB) im Speicher.
Häufig gestellte Fragen
Ist Base64-Kodierung dasselbe wie Verschlüsselung?
Nein. Base64 ist ein umkehrbares Kodierungsschema — jeder kann es ohne Schlüssel dekodieren. Es bietet keine Sicherheit.
Wann Base64 statt Binärübertragung?
Base64 verwenden, wenn Binärdaten in ein Textformat eingebettet werden müssen (JSON, XML, E-Mail, HTML-Attribute). Direkte Binärübertragung verwenden, wenn der Transport dies unterstützt und die Daten größer als einige KB sind.
Kann ich jeden Dateityp Base64-kodieren?
Ja. Base64 arbeitet auf Roh-Bytes — der Dateityp ist egal. Bilder, PDFs, Archive — alles kann kodiert werden.
Tool verwenden
Base64 kodieren/dekodieren — Kostenlos, privat, kein Upload
Zusammenfassung
Base64-Kodierung ist ein fundamentaler Baustein der Webentwicklung — sie überbrückt die Lücke zwischen Binärdaten und textbasierten Protokollen. Verwenden Sie es für kleine Assets in Data URIs, API-Payloads mit eingebetteten Dateien und Authentifizierungstoken. Vermeiden Sie es für große Dateien. Behalten Sie den 33%-Overhead bei Architekturentscheidungen im Blick.