Text und Dateien in Base64 kodieren

Wandeln Sie Text, Rohbytes oder beliebige Dateien in Base64 um. Wählen Sie den Zeichensatz, den der Empfänger erwartet, behalten oder entfernen Sie die =-Auffüllung und brechen Sie Zeilen für MIME und PEM nach 76 oder 64 Zeichen um.

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Geben Sie den zu kodierenden Text ein oder fügen Sie ihn ein. Stellen Sie die Eingabe auf Hex um, um Rohbytes zu kodieren, oder klicken Sie auf „Datei öffnen“, um eine Datei zu kodieren.
  2. Belassen Sie die „Zeichenkodierung“ auf UTF-8, sofern das empfangende System keinen anderen Zeichensatz erwartet.
  3. Legen Sie die Optionen fest: Behalten Sie für die meisten Zwecke die Variante „Standard (RFC 4648)“ bei, schalten Sie die „Auffüllung“ aus, wenn der Empfänger sie nicht möchte, und setzen Sie bei Bedarf einen „Zeilenumbruch“ nach 76 (MIME) oder 64 (PEM) Zeichen.
  4. Kopieren Sie die Base64-Ausgabe oder laden Sie sie als Datei herunter.

So funktioniert die Base64-Kodierung

Der Encoder liest die Eingabe in Blöcken von drei Bytes. Diese 24 Bit werden in vier Gruppen zu je 6 Bit aufgeteilt, und jeder 6-Bit-Wert (0 bis 63) wählt ein Zeichen aus: A-Z für 0 bis 25, a-z für 26 bis 51, 0-9 für 52 bis 61, danach + und /. Aus drei Bytes werden vier Zeichen, deshalb ist Base64 rund 33 % größer als die Originaldaten.

Text     M        a        n
Bytes    77       97       110
Bits     01001101 01100001 01101110
6-bit    010011 010110 000101 101110
Index    19     22     5      46
Base64   T      W      F      u

Auffüllung und Ausgabelänge

Ist die Eingabelänge kein Vielfaches von drei, bleibt die letzte Gruppe unvollständig. Ein übrig gebliebenes Byte ergibt zwei Zeichen, gefolgt von ==; zwei übrig gebliebene Bytes ergeben drei Zeichen und ein =. Eine aufgefüllte Ausgabe ist daher bei n Eingabebytes immer 4 × ceil(n / 3) Zeichen lang.

Die Auffüllung enthält keine Daten. JSON Web Tokens, URL-Parameter und viele APIs verzichten darauf. Schalten Sie die Auffüllung also aus, wenn die Gegenseite eine Ausgabe ohne Füllzeichen erwartet. Für Links und Dateinamen wählen Sie die URL-sichere Variante oder verwenden die Seite Base64URL; beide ersetzen + und / durch - und _.

Zeilenumbruch für MIME und PEM

Standardmäßig besteht die Ausgabe aus einer einzigen langen Zeile, wie sie JSON, Data-URIs und HTTP-Header benötigen. Zwei Formate erwarten Zeilenumbrüche:

  • MIME, 76 Zeichen. In E-Mail-Anhängen, die mit Content-Transfer-Encoding: base64 versendet werden, dürfen Zeilen nicht länger als 76 Zeichen sein (RFC 2045). Diese Option beendet Zeilen mit CRLF, wie es MIME vorschreibt.
  • PEM, 64 Zeichen. Zertifikate und Schlüssel zwischen den Zeilen -----BEGIN und -----END verwenden Zeilen mit 64 Zeichen (RFC 7468). Diese Option verwendet LF als Zeilenende.

Zeichensätze und Dateien

Base64 kodiert Bytes, keine Buchstaben. Text wird daher zunächst mithilfe eines Zeichensatzes in Bytes umgewandelt. Der Buchstabe é belegt in UTF-8 zwei Bytes, in ISO-8859-1 oder Windows-1252 dagegen nur eines, sodass derselbe Text unterschiedliches Base64 ergibt. UTF-8 ist die richtige Wahl für das Web, JSON und nahezu jede moderne API. Wählen Sie GBK, Shift_JIS, Windows-1251 oder einen anderen Zeichensatz nur, um ein Altsystem zu bedienen.

Dateien werden genau so kodiert, wie sie gespeichert sind, ohne Zeichensatzumwandlung. Für Bilder mit fertigen HTML- und CSS-Snippets nutzen Sie Bild zu Base64; für eine Data-URI mit erkanntem MIME-Typ verwenden Sie Datei zu Base64.

Spezifikation

AlphabetA-Z a-z 0-9 + /
Ausgabegröße4 Zeichen pro 3 Bytes (etwa 133 %)
AuffüllungMit = auf ein Vielfaches von 4 Zeichen
StandardRFC 4648, Abschnitt 4
Groß-/Kleinschreibung relevantJa

Beispiele

Eingabe (UTF-8)Ausgabe
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Häufig gestellte Fragen

Warum unterscheidet sich meine Base64-Ausgabe von der eines anderen Encoders?
Fast immer, weil sich die Eingabebytes unterscheiden. Typische Ursachen sind ein abschließender Zeilenumbruch (der Shell-Befehl echo fügt einen hinzu; verwenden Sie printf '%s' oder echo -n), ein anderer Zeichensatz, Windows-Zeilenenden im Text oder abweichende Einstellungen für Auffüllung, Alphabet oder Zeilenumbruch. Dieselben Bytes mit denselben Optionen ergeben immer dieselbe Ausgabe.
Wie kodiere ich Unicode-Text in JavaScript als Base64?
btoa() akzeptiert nur Zeichen bis U+00FF und löst bei allen anderen einen Fehler aus. Wandeln Sie den String zuerst in UTF-8-Bytes um, zum Beispiel mit btoa(String.fromCharCode(...new TextEncoder().encode(str))). In Node.js verwenden Sie Buffer.from(str, 'utf8').toString('base64').
Wie kodiere ich auf der Kommandozeile in Base64?
Führen Sie unter Linux oder macOS printf '%s' 'your text' | base64 aus. GNU base64 bricht die Ausgabe standardmäßig nach 76 Zeichen um (mit -w 0 erhalten Sie eine einzige Zeile), openssl base64 nach 64 Zeichen (fügen Sie -A hinzu).
Ist die Base64-Kodierung eine Form der Verschlüsselung?
Nein. Base64 hat keinen Schlüssel, und jeder kann die Kodierung mit einem Base64-Decoder rückgängig machen. Sie dient dazu, Binärdaten über Kanäle zu übertragen, die nur Text akzeptieren, nicht dazu, Informationen zu verbergen.
Um wie viel vergrößert Base64 meine Daten?

Aus je 3 Bytes werden 4 Zeichen, aufgerundet auf eine volle Gruppe, die Ausgabe ist also rund 33 % größer. Ein MIME-Zeilenumbruch fügt pro 76 Zeichen zwei weitere Bytes (CRLF) hinzu.