Zum Inhalt springen

Base64-Encoder & -Decoder

Kodiert und dekodiert Text und Dateien als Base64. Text läuft über UTF-8, Nicht-ASCII-Zeichen bleiben heil. Mit URL-sicher-Option, data-URL und Datei-Download.

Richtung
Eingabeart
0 Zeichen · 0 Zeilen
Verwendet dann - und _ statt + und / und lässt das abschließende =-Padding weg. Aktiviere das für URLs oder Dateinamen.

0 Zeichen · 0 Zeilen

Dateien werden nur auf diesem Gerät verarbeitet und nie auf einen Server hochgeladen. So funktioniert es

Bidirektionales Kodieren und Dekodieren zwischen Hello und dem Base64-Text SGVsbG8=

Richtung und Eingabeart

Unter „Richtung“ wählst du „Kodieren“ oder „Dekodieren“.

  • Kodieren: Steht die „Eingabeart“ auf „Text“, wird aus dem, was du bei „Ausgangstext“ eingibst, das „Base64-Ergebnis“. Aus Hello wird SGVsbG8=, aus café wird Y2Fmw6k=. Stellst du auf „Datei“ um, erscheint ein Feld zum Hochladen einer Datei.
  • Dekodieren: Gibst du bei „Base64-Zeichenkette“ Base64 oder eine data:-URL ein, steht unter „Dekodiertes Ergebnis“ der ursprüngliche Text.

Die Schaltflächen „Ins Dekodieren-Feld übernehmen“ und „Ins Kodieren-Feld übernehmen“ neben dem Ergebnis schieben das eben erzeugte Ergebnis als Eingabe in die Gegenrichtung. Praktisch, wenn du etwas Kodiertes gleich wieder zurückwandeln und mit dem Original vergleichen willst.

Das Kontrollkästchen „URL-sicher (-_, ohne Padding)“ gilt für das Kodieren von Text und für das Dekodieren gleichermaßen. Beim Kodieren von Dateien gibt es diese Option nicht.

Übertragen werden Bytes, keine Zeichen

Base64 ist eine Schreibweise, die aus je 3 Bytes 4 Zeichen macht. Um Text zu kodieren, müssen die Zeichen also erst einmal zu Bytes werden, und dafür nimmt dieses Tool immer UTF-8. Das Zeichen € belegt in UTF-8 3 Bytes und ergibt in Base64 deshalb genau 4 Zeichen: 4oKs.

Ist die Zahl der Bytes kein Vielfaches von 3, wird am Ende mit = auf volle 4 Zeichen aufgefüllt. Das ist das Padding.

Ausgangstext Bytes Base64-Ergebnis
a 1 YQ==
ab 2 YWI=
abc 3 YWJj
€ 3 4oKs
😀 4 8J+YgA==

Weil aus 3 Bytes 4 Zeichen werden, ist das Ergebnis rund ein Drittel länger als das Original. Wandelst du eine Datei in eine data-URL um und bettest sie in HTML oder CSS ein, wächst die Datenmenge um genau diesen Anteil.

Die im Browser eingebaute Funktion btoa nimmt nur Zeichen mit Codepunkten von 0 bis 255 an und bricht bei Strings mit Zeichen außerhalb dieses Bereichs, etwa € oder Emojis, mit einem Fehler ab. Dieses Tool verwendet sie nicht, sondern wandelt die UTF-8-Bytes selbst um. Es kodiert deshalb jedes beliebige Zeichen und liest beim Dekodieren ebenfalls UTF-8 zurück.

Was die Option „URL-sicher“ ändert

Standard-Base64 verwendet neben Groß- und Kleinbuchstaben und Ziffern die beiden Zeichen + und / und zum Auffüllen das =. Alle drei haben in einer URL eine eigene Bedeutung. Soll das Ergebnis in eine Adresse, einen Query-Wert oder einen Dateinamen, schaltest du deshalb „URL-sicher (-_, ohne Padding)“ ein. JWT (JSON Web Token) verwendet diese Schreibweise.

Ausgangstext Option aus Option an
>>>??? Pj4+Pz8/ Pj4-Pz8_
a YQ== YQ

Beim Dekodieren muss die Option nur dann passen, wenn in der Zeichenkette +, / oder -, _ vorkommen. Gibst du Pj4-Pz8_ bei ausgeschalteter Option ein, kommt der Fehler, dass das Zeichen - nicht gültig ist. Bei Pj4+Pz8/ mit eingeschalteter Option passiert dasselbe beim +. Eine Zeichenkette wie SGVsbG8=, in der keines der vier Zeichen steckt, lässt sich in beiden Einstellungen dekodieren. Das Padding darf unabhängig von der Option vorhanden sein oder fehlen (auch SGVsbG8 wird als Hello gelesen).

Datei zu data-URL, Base64 zurück zur Datei

Stellst du die „Eingabeart“ auf „Datei“, kannst du eine einzelne Datei hineinziehen oder auswählen. Das Format spielt keine Rolle, die Größe darf bis zu 10 MB betragen. Heraus kommt eine data-URL, der der Dateityp vorangestellt ist, zum Beispiel data:image/png;base64,iVBORw0KG.... Du kannst sie unverändert in ein img-Tag in HTML oder in ein url() in CSS einsetzen. Erkennt der Browser den Typ einer Datei nicht, steht dort application/octet-stream. Da Browser eine data-URL in URL-sicherer Schreibweise nicht lesen können, entsteht sie immer in Standardschreibweise mit Padding.

Der Rückweg führt über das Dekodieren. Sobald du Base64 oder eine data-URL eingibst, erscheint neben dem Ergebnis eine Schaltfläche zum Herunterladen. Damit bekommst du auch Inhalte, die kein Text sind, als Datei.

  • Bei einer data-URL wird nur der Teil hinter base64, gelesen, und zwar in Standardschreibweise, auch wenn das Kontrollkästchen „URL-sicher“ eingeschaltet ist.
  • Der Dateiname lautet decoded plus Endung. Nennt die data-URL eines der Formate PNG, JPEG, GIF, WebP, SVG, ICO, PDF, TXT, CSV, JSON, ZIP, MP3 oder MP4, bekommt die Datei die passende Endung (etwa decoded.png).
  • Bei jedem anderen Format und bei reinem Base64 ohne Typangabe heißt die Datei decoded.bin. Kennst du das ursprüngliche Format, änderst du die Endung nach dem Herunterladen einfach selbst.
  • Eine data-URL ohne ;base64, etwa data:text/plain,hello, ist kein Base64. Hier kommt der Fehler, dass das Zeichen : nicht gültig ist.

Drei Fehler beim Dekodieren

Fehlermeldung Bei dieser Eingabe Bedeutung
Dieses Zeichen ist in Base64 nicht gültig Pj4-Pz8_ (Option aus) In der Eingabe steht ein Zeichen, das es in der gerade gewählten Schreibweise nicht gibt. Die Meldung nennt das Zeichen.
Die Base64-Länge oder das Padding (=) ist nicht gültig SGVsb, SGVsbG8== Die Zahl der Zeichen geht nicht auf, oder es stehen zu viele = da oder eines mittendrin. Häufig, wenn beim Kopieren das Ende abgeschnitten wurde.
Die dekodierten Bytes sind kein gültiger UTF-8-Text iVBORw0KGgo= Als Base64 ist die Eingabe in Ordnung, der Inhalt ist aber kein Text.

Im dritten Fall erscheint neben dem Ergebnis „Als Hex anzeigen“. Ein Klick listet die Bytes als zweistellige Hexadezimalzahlen auf, mit „Als Text anzeigen“ geht es zurück. Für iVBORw0KGgo= lautet die Hex-Ansicht 89 50 4e 47 0d 0a 1a 0a. Das zweite bis vierte Byte (50 4e 47) sind die Buchstaben PNG, es handelt sich also um den Anfang einer PNG-Datei. Die Schaltfläche zum Herunterladen funktioniert auch, während dieser Fehler angezeigt wird.

Quellen

Häufige Fragen

Kann ich mit Base64 Inhalte verbergen?

Nein. Base64 ist keine Verschlüsselung, sondern nur eine andere Schreibweise, und jeder kann sie ohne Schlüssel rückgängig machen. Es genügt, die Zeichenkette hier unter „Dekodieren“ einzufügen, und der Ausgangstext steht da. Auch RFC 4648, das Base64 definiert, hält fest, dass das Verfahren Informationen wie Passwörter allenfalls weniger auffällig macht, aber keine Vertraulichkeit bietet. Ein Passwort oder Token in Base64 abzulegen ist also keine Schutzmaßnahme.

Lässt sich auch Base64 dekodieren, das über mehrere Zeilen umbrochen ist, etwa aus dem Quelltext einer E-Mail oder aus einer Zertifikatsdatei?

Ja. Leerzeichen und Zeilenumbrüche werden beim Lesen übersprungen, du musst die Zeilen nicht erst zusammenfügen. Die Kopf- und Fußzeile einer Zertifikatsdatei, also -----BEGIN … ----- und ihr Gegenstück, sind allerdings kein Base64. Fügst du sie mit ein, kommt der Fehler, dass das Zeichen „-“ nicht gültig ist. Lass diese beiden Zeilen weg. In der anderen Richtung gibt das Tool sein kodiertes Ergebnis unabhängig von der Länge immer als eine Zeile ohne Umbruch aus.

Der Ausgangstext ist ganz sicher Text, trotzdem kommt der Fehler, es sei kein UTF-8.

Dann hat das System, das die Base64-Zeichenkette erzeugt hat, die Zeichen sehr wahrscheinlich mit einer anderen Zeichenkodierung als UTF-8 in Bytes umgewandelt. Dieses Tool deutet die dekodierten Bytes ausschließlich als UTF-8 und meldet lieber einen Fehler, als falsche Zeichen anzuzeigen. Mit „Als Hex anzeigen“ kannst du die Bytewerte prüfen. Und wenn du die Datei decoded.bin herunterlädst und in einem Editor öffnest, in dem sich die Kodierung auswählen lässt, kannst du den Ausgangstext lesen.

Zuletzt aktualisiert: