So kodieren Sie Text in Base64
- Geben Sie Ihren Text in das Feld Eingabe · Text ein oder fügen Sie ihn dort ein. Die Seite startet mit einem Beispiel; mit Leeren beginnen Sie mit einem leeren Feld.
- Das Base64 erscheint schon beim Tippen in Ausgabe · Base64. Bei sehr großen Eingaben können Sie Live abwählen und stattdessen Ausführen drücken.
- Stellen Sie die Optionen ein, die das empfangende System erwartet: URL-sicher (- _), Ohne Padding (=), Zeilenumbruch und Zeichensatz. Die Voreinstellungen (Standardalphabet, mit Padding, eine Zeile, UTF-8) passen für die meisten APIs.
- Drücken Sie Ausgabe kopieren oder Herunterladen, um das Ergebnis als
base64.txtzu speichern. - Für die Gegenprobe drücken Sie Tauschen. Das verschiebt das Base64 in die Eingabe und schaltet das Tool aufs Dekodieren um.
Unter den Schaltflächen sehen Sie die Größe der Eingabe in Bytes, die Größe der Ausgabe und die prozentuale Änderung. Das hilft, wenn ein Feld eine Längenbegrenzung hat.
Wie Base64-Kodierung funktioniert
Base64 arbeitet mit Bytes, daher wird Ihr Text im ersten Schritt mit einem Zeichensatz in Bytes umgewandelt (hier UTF-8, sofern Sie nichts anderes wählen). Der Encoder nimmt dann jeweils drei Bytes, also 24 Bit, teilt sie in vier 6-Bit-Zahlen und schreibt jede Zahl als ein Zeichen aus einem Alphabet mit 64 Zeichen: A–Z, a–z, 0–9, + und /.
Das klassische Beispiel ist der Text Man: Die Bytes 4D 61 6E werden zu TWFu. Hat die letzte Gruppe nur ein oder zwei Bytes, wird die Ausgabe mit = aufgefüllt: Ma wird zu TWE=, M zu TQ==. Den vollständigen Ablauf zeigt So funktioniert Base64, und Padding erklärt beschreibt, wann das = wegfallen darf.
Die Länge der Ausgabe beträgt für n Bytes immer 4 × ⌈n / 3⌉ Zeichen, rund 33 % mehr als die Eingabe. Der Base64-Größenrechner rechnet das für jede Größe aus, und Base64-Größenzuwachs erklärt, wann es darauf ankommt. Base64 kann jeder umkehren, es verbirgt also nichts; lesen Sie Kodierung vs. Verschlüsselung, bevor Sie Geheimnisse darin ablegen.
Optionen beim Kodieren
| Option | Was sie ändert | Wann Sie sie brauchen |
|---|---|---|
| URL-sicher (- _) | + wird zu -, / wird zu _ (RFC 4648, Abschnitt 5) | URLs, Query-Strings, Dateinamen, Cookies, JWT. Beim Base64URL-Encoder ist sie standardmäßig aktiv |
| Ohne Padding (=) | Entfernt die abschließenden =-Zeichen | JWT und die meisten URL-sicheren Formate; alles, was = ohnehin entfernt |
| Zeilenumbruch: 76 (MIME, LF oder CRLF) | Fügt alle 76 Zeichen einen Zeilenumbruch ein | E-Mail-Texte und -Anhänge (MIME-Encoder) |
| Zeilenumbruch: 64 (PEM) | Fügt alle 64 Zeichen einen Zeilenumbruch ein | Zertifikate und Schlüssel zwischen den Zeilen -----BEGIN und -----END |
| Zeichensatz | Zu welchen Bytes jedes Zeichen vor dem Kodieren wird | UTF-8, außer der Empfänger erwartet UTF-16, Windows-1251, Shift_JIS oder eine andere Altkodierung |
Beispiele mit Unicode, Emoji und URL-sicherer Ausgabe
Jeder Wert unten wurde mit dem Python-Modul base64 erzeugt und stimmt mit der Ausgabe dieses Tools überein.
| Eingabe | Einstellungen | Base64 |
|---|---|---|
Hello | UTF-8 | SGVsbG8= |
Hello, world! | UTF-8 | SGVsbG8sIHdvcmxkIQ== |
café | UTF-8 | Y2Fmw6k= |
café | ISO-8859-1 | Y2Fm6Q== |
€ | UTF-8 | 4oKs |
€ | Windows-1252 | gA== |
👋 | UTF-8 | 8J+Riw== |
👋 | UTF-8, URL-sicher, ohne Padding | 8J-Riw |
Привет | UTF-8 | 0J/RgNC40LLQtdGC |
Привет | Windows-1251 | z/Do4uXy |
Dasselbe Wort ergibt in verschiedenen Zeichensätzen unterschiedliches Base64, weil sich die Bytes unterscheiden: é ist in UTF-8 zwei Bytes (C3 A9) lang, in Latin-1 ein Byte (E9). Das Emoji mit der winkenden Hand besteht aus vier UTF-8-Bytes und braucht daher allein 8 Zeichen, zwei davon Padding.
Zeichensätze und Zeichen, die nicht hineinpassen
UTF-8 kann jedes Unicode-Zeichen darstellen und verliert daher nie etwas. Die übrigen 26 Zeichensätze der Liste (UTF-16LE/BE, UTF-32LE, ASCII, die ISO-8859- und Windows-Codepages, KOI8-R/U, CP866, Shift_JIS, EUC-JP, GBK, Big5 und EUC-KR) gibt es für Systeme, die sie erwarten. Enthält Ihr Text ein Zeichen, das im gewählten Zeichensatz fehlt, wird es durch ? ersetzt, und eine Warnung nennt die Anzahl der ersetzten Zeichen. € in ISO-8859-1 wird zum Beispiel als Pw== kodiert, also nur als Fragezeichen.
Wählen Sie UTF-16LE für Windows- und .NET-Strings sowie für PowerShell; warum, erklärt die Seite UTF-16 in Base64. Wählen Sie ASCII, wenn ein System alles außerhalb von 7-Bit-Text ablehnen muss (ASCII in Base64).
Zeilenumbruch
Einfaches Base64 ist eine lange Zeile, und genau das brauchen JSON, HTTP-Header, URLs und Umgebungsvariablen. E-Mails verwenden Zeilen mit 76 Zeichen (RFC 2045), PEM-Dateien 64. Die Umbruch-Option fügt bei dieser Breite \n-Zeilenumbrüche ein, mit 76 (MIME, CRLF) stattdessen CRLF. Decoder, auch der Decoder dieser Website, überspringen die Zeilenumbrüche, umbrochene Ausgabe ergibt beim Dekodieren also dieselben Bytes. Die MIME-Regeln stehen unter Base64 in E-Mails.
Häufige Fehler beim Kodieren
- Ein abschließender Zeilenumbruch schleicht sich ein.
echo Hello | base64gibtSGVsbG8Kaus, weilechoein\nanhängt. Der TextHelloallein istSGVsbG8=. Verwenden Sieprintf '%s', und prüfen Sie beim Einfügen hier, ob die Byte-Anzahl der Eingabe Ihren Erwartungen entspricht. btoa()scheitert an Unicode. Im Browser wirftbtoa("Grüße 👋")einenInvalidCharacterError, weilbtoanur Latin-1-Zeichen akzeptiert. Wandeln Sie zuerst in UTF-8-Bytes um, wie im Snippet unten.- Der Empfänger nutzt einen anderen Zeichensatz. Kodieren Sie UTF-8 und die Gegenseite dekodiert als Latin-1, wird aus
caféeincafé. Einigen Sie sich auf einen Zeichensatz, oder wählen Sie hier den des Empfängers. - Doppelt kodiert. Das Base64 von
SGVsbG8=istU0dWc2JHOD0=. Ergibt ein Wert beim Dekodieren wieder Base64, hat ihn irgendetwas in der Verarbeitungskette ein zweites Mal kodiert. +und/machen URLs kaputt. In einem Query-String wird+als Leerzeichen gelesen. Nutzen Sie die Option URL-sicher oder den Base64URL-Encoder, oder prozentkodieren Sie den Wert.
Base64 kodieren in JavaScript, Python und auf der Kommandozeile
In JavaScript im Browser wandeln Sie die Zeichenkette mit TextEncoder in UTF-8-Bytes um und kodieren dann die Bytes. Neuere Browser können direkt bytes.toBase64() aufrufen (Uint8Array.toBase64).
const bytes = new TextEncoder().encode("Grüße 👋");
let bin = "";
for (const b of bytes) bin += String.fromCharCode(b);
btoa(bin); // "R3LDvMOfZSDwn5GL"
// Node.js
Buffer.from("Grüße 👋", "utf8").toString("base64"); // "R3LDvMOfZSDwn5GL"
Buffer.from("👋", "utf8").toString("base64url"); // "8J-Riw"
In Python nimmt b64encode Bytes entgegen und gibt Bytes zurück:
import base64
base64.b64encode("Grüße 👋".encode("utf-8")).decode("ascii")
# 'R3LDvMOfZSDwn5GL'
base64.urlsafe_b64encode("👋".encode()).rstrip(b"=").decode()
# '8J-Riw'
Unter Linux und macOS kodiert der Befehl base64 die Standardeingabe:
printf '%s' 'Grüße 👋' | base64
base64 -w 0 file.bin > file.b64
Der erste Befehl gibt R3LDvMOfZSDwn5GL aus. GNU base64 unter Linux bricht die Ausgabe standardmäßig nach 76 Spalten um, -w 0 schaltet das ab; die macOS-Version bricht nur auf Anweisung um. Weitere Sprachen und Sonderfälle: Base64 in JavaScript, Node.js, Python und PHP.
Bilder, PDFs und alle anderen Dateien gehen durch den Datei-Encoder, mit Ausgabe als Data-URI und JSON.
Häufige Fragen
Wie kodiere ich eine Zeichenkette in Base64?
Fügen Sie die Zeichenkette oben in das Eingabefeld ein und kopieren Sie das Ergebnis aus dem Ausgabefeld. Im Code wandeln Sie die Zeichenkette in UTF-8-Bytes um und kodieren diese Bytes: base64.b64encode(s.encode()) in Python, Buffer.from(s).toString("base64") in Node.js.
Warum endet mein Base64 mit = oder ==?
Base64 arbeitet in Blöcken zu 3 Bytes. Ist die Länge der Eingabe kein Vielfaches von 3, bleibt der letzte Block kürzer, und = markiert die fehlenden Bytes: ein = bei 2 übrigen Bytes, == bei 1. Details unter Padding erklärt.
Warum bekomme ich anderswo für denselben Text ein anderes Base64?
Meist steckt ein unsichtbarer Unterschied in den Bytes: ein abschließender Zeilenumbruch (echo hängt einen an), ein anderer Zeichensatz (UTF-8, Latin-1 oder UTF-16) oder eine andere Unicode-Normalisierung. Vergleichen Sie die Byte-Anzahl der Eingabe, die unter dem Tool steht.
Kann man mit Base64 Passwörter verschlüsseln?
Nein. Base64 hat keinen Schlüssel, und jeder kann es in einer Sekunde dekodieren. Es dient dem Transport von Daten; zum Schutz brauchen Sie echte Verschlüsselung oder Hashing. Siehe Kodierung vs. Verschlüsselung.
Wie viel größer wird Text durch Base64?
Aus je 3 Bytes werden 4 Zeichen, die Ausgabe ist also etwa 33 % größer, plus Zeilenumbrüche, falls Sie umbrechen. 100 Bytes UTF-8 werden zu 136 Zeichen.