Was ist Base64-Kodierung? Ein vollständiger Leitfaden mit Beispielen
Erfahren Sie, was Base64-Kodierung ist, warum es sie gibt, wo sie eingesetzt wird und wie Sie Base64-Zeichenketten sofort in Ihrem Browser kodieren und dekodieren — ohne Software zu installieren.
Öffnen Sie eine beliebige moderne Webanwendung, untersuchen Sie eine HTTP-Anfrage, werfen Sie einen Blick auf ein Kubernetes-Manifest oder spähen Sie in ein JWT-Token — Base64 ist überall. Es ist eines jener grundlegenden Kodierungsverfahren, denen Entwickler ständig begegnen, das sie aber selten innehalten, um es vollständig zu verstehen. Dieser Leitfaden erklärt, was Base64 ist, wie es auf Byte-Ebene funktioniert, wo es in realen Systemen eingesetzt wird und wann Sie dazu greifen sollten (und wann nicht).
Sie können jede Base64-Zeichenkette sofort mit dem BrowseryTools Base64-Encoder/Decoder kodieren und dekodieren — kostenlos, ohne Anmeldung, und nichts verlässt jemals Ihren Browser.
Warum gibt es Base64?
Um Base64 zu verstehen, müssen Sie das Problem verstehen, das es löst. In den Anfangstagen des Internets waren viele Kommunikationsprotokolle — insbesondere E-Mail — rund um 7-Bit-ASCII-Text konzipiert. ASCII definiert 128 Zeichen mit 7 Bit pro Zeichen. Binärdaten (Bilder, Dokumente, ausführbare Dateien) verwenden alle 8 Bit pro Byte und erzeugen Byte-Werte, die keine ASCII-Darstellung hatten und die ältere Systeme verwerfen, verstümmeln oder als Steuerbefehle interpretieren würden.
Der MIME-Standard (Multipurpose Internet Mail Extensions), 1991 eingeführt, um E-Mails das Mitführen von Anhängen zu ermöglichen, brauchte eine Möglichkeit, beliebige Binärdaten durch diese 7-Bit-sauberen Kanäle zu übertragen. Die Lösung bestand darin, Binärdaten unter ausschließlicher Verwendung einer sicheren Teilmenge druckbarer ASCII-Zeichen neu zu kodieren — einer, auf die sich jedes System einigte und die es originalgetreu übertragen würde. Base64 wurde zur Standardkodierung für diesen Zweck, und der Name beschreibt den Ansatz: Verwenden Sie einen Satz von 64 sicheren Zeichen, um beliebige Binärdaten darzustellen.
Das 64-Zeichen-Alphabet
Base64 verwendet genau 64 Zeichen, weshalb 6 Bit Eingabe stets durch ein Base64-Zeichen dargestellt werden können (26 = 64). Das in RFC 4648 definierte Standardalphabet lautet:
- Großbuchstaben
AbisZ— Werte 0 bis 25 - Kleinbuchstaben
abisz— Werte 26 bis 51 - Ziffern
0bis9— Werte 52 bis 61 +— Wert 62/— Wert 63
Ein 65. Zeichen — das Gleichheitszeichen = — wird als Auffüllung verwendet, repräsentiert aber keine Daten. Die Auffüllung stellt sicher, dass die Länge der kodierten Ausgabe stets ein Vielfaches von 4 Zeichen ist, was das Dekodieren vereinfacht.
Wie die Base64-Kodierung funktioniert: 3 Bytes → 4 Zeichen
Base64 funktioniert, indem es 3 Bytes Eingabe (24 Bit) nimmt und sie in vier 6-Bit-Gruppen aufteilt. Jede 6-Bit-Gruppe bildet auf ein Zeichen im Base64-Alphabet ab. Da aus 3 Bytes 4 Zeichen werden, vergrößert die Base64-Kodierung die Größe der Daten um genau ein Drittel (33 %).
Gehen wir ein konkretes Beispiel durch: das Kodieren der ASCII-Zeichenkette "Man".
Schritt 1 — Wandeln Sie jedes Zeichen in seinen ASCII-Byte-Wert und dann in Binär um:
M= ASCII 77 =01001101a= ASCII 97 =01100001n= ASCII 110 =01101110
Schritt 2 — Verketten Sie die 24 Bit zu einem Strom:
01001101 01100001 01101110 ↓ (concatenate all 24 bits) 010011 010110 000101 101110
Schritt 3 — Bilden Sie jede 6-Bit-Gruppe auf das Base64-Alphabet ab:
| 6-Bit-Gruppe | Dezimalwert | Base64-Zeichen |
|---|---|---|
010011 | 19 | T |
010110 | 22 | W |
000101 | 5 | F |
101110 | 46 | u |
Die Base64-Kodierung von "Man" ist TWFu. Sie können das mit dem BrowseryTools Base64-Tool überprüfen. Wenn die Eingabelänge kein Vielfaches von 3 ist, werden Auffüllzeichen (= oder ==) angehängt, um die Ausgabe auf ein Vielfaches von 4 Zeichen zu bringen. Zum Beispiel kodiert "Ma" zu TWE= und "M" kodiert zu TQ==.
Häufige Anwendungsfälle
Bilder in HTML und CSS einbetten
Anstatt eine separate HTTP-Anfrage für ein kleines Bild oder Symbol zu stellen, können Sie es direkt in Ihr HTML oder CSS als Daten-URI einbetten. Der Browser dekodiert die Base64-Zeichenkette und rendert das Bild ohne einen Netzwerk-Roundtrip. Das ist nützlich für kleine Assets wie Favicons, Lade-Spinner oder Inline-Symbole in E-Mail-Vorlagen, bei denen das Laden externer URLs blockiert sein kann.
/* CSS example — embedding a small PNG icon */
.icon {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...');
}Binärdaten in JSON-APIs
JSON ist ein Textformat. Wenn eine API Binärdaten übertragen muss — eine Datei, einen kryptografischen Schlüssel, eine Signatur, ein Bild — innerhalb einer JSON-Nutzlast, kann sie keine Roh-Bytes einschließen. Die Base64-Kodierung der Binärdaten verwandelt sie in eine einfache Zeichenkette, die JSON ohne Probleme mitführen kann. Viele APIs, die Dateiinhalte, Audio-Samples oder Bilder in JSON-Antworten zurückgeben, verwenden diesen Ansatz.
HTTP-Basic-Authentifizierung
Das HTTP-Basic-Auth-Verfahren sendet Zugangsdaten im Authorization-Header als Base64-Kodierung vonusername:password. Zum Beispiel werden die Zugangsdaten admin:secret zur Zeichenkette YWRtaW46c2VjcmV0, und der vollständige Header sieht so aus:
Authorization: Basic YWRtaW46c2VjcmV0
Das ist nicht verschlüsselt — es ist nur kodiert. Basic Auth muss stets über HTTPS verwendet werden, niemals über einfaches HTTP, weil die Zugangsdaten von jedem, der die Anfrage abfängt, trivial dekodiert werden können.
JWT-Nutzlasten
JSON Web Tokens kodieren ihren Header und ihre Nutzlast mit Base64URL (einer URL-sicheren Variante, die unten beschrieben wird). Die Claims des Tokens — Benutzer-ID, Ablaufzeit, Rollen — werden in der Nutzlast als Base64URL-kodiertes JSON-Objekt gespeichert. Auch hier handelt es sich nicht um Verschlüsselung: Die Nutzlast ist für jeden, der das Token besitzt, vollständig lesbar.
Kubernetes Secrets
Kubernetes speichert Secret-Werte als Base64-kodierte Zeichenketten in YAML-Manifesten. Hier ein echtes Beispiel eines Kubernetes Secret:
apiVersion: v1 kind: Secret metadata: name: db-credentials type: Opaque data: username: YWRtaW4= password: cGFzc3dvcmQxMjM=
Um herauszufinden, was diese Werte tatsächlich sind, fügen Sie YWRtaW4= in den BrowseryTools Base64-Decoder ein. Das Ergebnis ist admin. Fügen Sie cGFzc3dvcmQxMjM= ein und Sie erhalten password123. Kubernetes kodiert Secret-Werte mit Base64 zur sicheren YAML-Formatierung, nicht zur Sicherheit — die eigentliche Sicherheit kommt von Kubernetes RBAC und der Verschlüsselung im Ruhezustand, nicht von der Kodierung selbst.
Die Base64URL-Variante
Standard-Base64 verwendet zwei Zeichen, die in URLs eine Sonderbedeutung haben: + (das in der Formularkodierung ein Leerzeichen bedeutet) und / (das ein Pfadtrenner ist). Wenn Base64-kodierte Daten in einer URL, einem Abfrageparameter oder einem Dateinamen erscheinen müssen, verursachen diese Zeichen Probleme.
Base64URL löst dies durch Ersetzung:
+wird durch-(Bindestrich) ersetzt/wird durch_(Unterstrich) ersetzt- Die nachfolgende
=-Auffüllung wird oft weggelassen
Base64URL wird in JWTs, OAuth-Tokens und jedem Kontext verwendet, in dem die kodierte Zeichenkette die URL-Übertragung ohne Prozentkodierung überstehen muss. Das BrowseryTools Base64-Tool unterstützt sowohl die Standard- als auch die URL-sichere Variante.
Wann Sie Base64 NICHT verwenden sollten
Base64 ist in bestimmten Situationen das richtige Werkzeug, wird aber häufig missbraucht. Hier ist, wann Sie es meiden sollten:
- Große Dateien: Base64 vergrößert die Datengröße um ~33 %. Ein 10-MB-Bild wird Base64-kodiert zu rund 13,3 MB. Das Einbetten großer Dateien als Daten-URIs oder Base64-Zeichenketten in JSON verlangsamt das Parsen, erhöht den Speicherverbrauch und verschwendet Bandbreite. Verwenden Sie für alles, was nicht trivial groß ist, direkte Dateiübertragungen oder Object-Storage-URLs.
- Sicherheit: Verwenden Sie Base64 niemals als Sicherheitsmaßnahme. Es bietet null Vertraulichkeit. Wenn Daten sensibel sind, verwenden Sie eine echte Verschlüsselung (AES-GCM, RSA usw.).
- Speicherung: Binärdaten als Base64 in einer Datenbankspalte zu speichern, verschwendet 33 % mehr Platz im Vergleich zur Speicherung der Roh-Bytes in einer Binärspalte. Verwenden Sie datenbank-native Binärtypen (BYTEA in PostgreSQL, BLOB in MySQL), wenn Sie Binärdaten in großem Umfang speichern.
Base64 vs. Hex-Kodierung: Ein Vergleich
| Eigenschaft | Base64 | Hex (Base16) |
|---|---|---|
| Zeichensatz | A–Z, a–z, 0–9, +, / (64 Zeichen) | 0–9, a–f (16 Zeichen) |
| Größen-Overhead | ~33 % größer | ~100 % größer (2 Zeichen pro Byte) |
| Menschliche Lesbarkeit | Gering — nicht erkennbar | Mäßig — auf Byte-Ebene lesbar |
| Häufige Anwendungsfälle | E-Mail-Anhänge, JWT, Daten-URIs, API-Nutzlasten | Kryptografische Hashes, Prüfsummen, Farbcodes, MAC-Adressen |
| URL-sicher? | Nur mit der Base64URL-Variante | Ja — alle Zeichen sind URL-sicher |
| Bits pro Zeichen | 6 Bit | 4 Bit |
Verwenden Sie Base64, wenn Sie eine kompakte Binär-zu-Text-Kodierung benötigen und die Breite des Zeichensatzes keine Probleme bereitet. Verwenden Sie Hex, wenn die menschliche Inspektion einzelner Byte-Werte wichtig ist — Hash-Digests, Prüfsummen und kryptografische Ausgaben werden traditionell in Hex angezeigt, gerade weil jedes Hex-Zeichen direkt auf 4 Bit abbildet, wodurch Byte-Grenzen trivial sichtbar werden.
Base64 in Code kodieren und dekodieren
Die meisten Sprachen bieten eine integrierte Base64-Unterstützung. Hier sind schnelle Einzeiler für gängige Umgebungen:
// JavaScript (browser or Node.js)
btoa("Hello, World!") // → "SGVsbG8sIFdvcmxkIQ=="
atob("SGVsbG8sIFdvcmxkIQ==") // → "Hello, World!"
# Python
import base64
base64.b64encode(b"Hello, World!") # → b'SGVsbG8sIFdvcmxkIQ=='
base64.b64decode(b"SGVsbG8sIFdvcmxkIQ==") # → b'Hello, World!'
# Bash
echo -n "Hello, World!" | base64
echo "SGVsbG8sIFdvcmxkIQ==" | base64 --decodeFür schnelles Ad-hoc-Kodieren oder -Dekodieren, ohne Code zu schreiben, ist das BrowseryTools Base64-Tool die schnellste Option — fügen Sie Ihre Zeichenkette ein, wählen Sie Kodieren oder Dekodieren, und das Ergebnis erscheint sofort. Nichts wird an einen Server gesendet.
Base64 sofort kodieren und dekodieren
Ob Sie ein Kubernetes-Secret dekodieren, eine JWT-Nutzlast untersuchen, einen Daten-URI für ein Inline-Bild erstellen oder einfach neugierig sind, was eine Base64-Zeichenkette enthält — der BrowseryTools Base64-Encoder/Decoder erledigt es mit einem einzigen Klick. Fügen Sie Ihre Eingabe ein, erhalten Sie Ihre Ausgabe. Keine Werbung, keine Anmeldung, keine Daten, die Ihr Gerät verlassen.
Kostenloser Base64-Encoder/Decoder — läuft zu 100 % in Ihrem Browser
Base64-Tool öffnen →Try the Tools — 100% Free, No Sign-Up
Everything runs in your browser. No uploads. No accounts. No ads.
Explore All Tools →