Text, Bilder und Dateien in Base64 kodieren oder Base64 dekodieren.
Datei hierher ziehen oder klicken zum Auswählen
Base64 ist ein Kodierungsverfahren, das binäre Daten in einen ASCII-String umwandelt. Dabei werden jeweils 3 Bytes in 4 druckbare Zeichen (A–Z, a–z, 0–9, +, /) konvertiert. Das Ergebnis ist etwa 33 % größer als die Originaldaten, dafür aber sicher in Textprotokollen wie E-Mail, JSON oder HTML einbettbar.
Der Algorithmus nimmt den Eingabe-Bytestream und teilt ihn in Blöcke von je 3 Bytes (24 Bit). Jeder Block wird in vier 6-Bit-Gruppen aufgeteilt, die als Index in ein 64-Zeichen-Alphabet dienen. Ist die Länge nicht durch 3 teilbar, werden Padding-Zeichen (=) angehängt. Das Ergebnis ist ein reiner ASCII-Text.
Base64 ist in RFC 4648 standardisiert und gehört zur Familie der Binary-to-Text-Encodings. Es existiert, weil viele Protokolle aus den 1980er-Jahren (SMTP, FTP, HTTP-Header) nur 7-Bit-ASCII zuverlässig übertragen. Rohbinärdaten wie Bilder, kompilierte Programme oder verschlüsselte Payloads würden in solchen Kanälen durch Steuerzeichen, Zeilenende-Konvertierungen oder Encoding-Annahmen beschädigt. Base64 löst das Problem, indem es jedes Byte-Tripel (24 Bit) in vier ASCII-Zeichen aus dem Alphabet A-Z a-z 0-9 + / zerlegt und am Ende mit dem Padding-Zeichen = auf ein Vielfaches von 4 auffüllt.
Neben der Standard-Variante definiert RFC 4648 auch Base64URL, das + durch - und / durch _ ersetzt, damit der String ohne Prozent-Encoding in URLs und Dateinamen passt. JSON Web Tokens (JWT), OAuth-Codes und WebPush-Subscriptions nutzen genau diese Variante. Außerdem gibt es MIME-Base64 (RFC 2045) mit Zeilenumbruch nach 76 Zeichen — relevant für E-Mail-Anhänge — sowie Base32 und Base16 (Hex). Unser Tool verwendet die Standard-RFC-4648-Variante; bei Bedarf konvertieren Sie zwischen Standard und URL-safe, indem Sie die genannten Zeichen ersetzen.
Wichtig: Base64 ist keine Verschlüsselung. Jeder kann den String mit zwei Zeilen Code zurück in die Originaldaten verwandeln. Verwenden Sie Base64 nur als Transport-Layer, niemals zum Schutz von Passwörtern, API-Keys oder personenbezogenen Daten. Für vertrauliche Inhalte gehört vor das Base64 immer ein echter Krypto-Layer wie AES-GCM oder eine signierte Token-Struktur wie JWT mit RS256.
Das Tool arbeitet komplett im Browser — Ihre Daten verlassen den Rechner nicht. So gehen Sie in fünf Schritten vor:
logo.png, icon.svg) in die Drop-Zone oder klicken Sie hinein, um einen Dialog zu öffnen. Bilder erhalten zusätzlich eine Live-Vorschau.data:-URI inklusive MIME-Type, etwa data:image/png;base64,iVBORw0KGgo....background-image:url('data:...')), JSON-Payloads, curl-Befehle oder Dokumentationen ein.Diese Beispiele zeigen typische Ein- und Ausgaben, die Sie im Alltag begegnen:
Hello, World! wird zu SGVsbG8sIFdvcmxkIQ== (14 Bytes → 20 Zeichen, zwei = als Padding).admin und Passwort secret werden als admin:secret verkettet und ergeben den Header Authorization: Basic YWRtaW46c2VjcmV0.data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=, direkt nutzbar als background-image.{"alg":"HS256","typ":"JWT"} wird Base64URL-kodiert zu eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 (kein Padding, -_ statt +/).Schöne Grüße wird korrekt zu U2Now7ZuZSBHcsO8w59l. Der Trick ist, vor btoa() zuerst per TextEncoder in Bytes zu konvertieren — sonst wirft JavaScript bei Umlauten InvalidCharacterError.Base64 ist robust, hat aber Eigenheiten. Erstens: Overhead. Ein 1 MB-Bild wird zu rund 1,33 MB Text — schlecht für mobile Bandbreite und Cache-Effizienz, vor allem wenn dasselbe Asset auf vielen Seiten erscheint. Zweitens: UTF-8-Falle. Der eingebaute btoa() in Browsern erwartet Latin-1, nicht UTF-8 — Umlaute, Emoji oder kyrillische Zeichen werfen InvalidCharacterError, wenn man nicht vorher per TextEncoder in Bytes umwandelt. Drittens: URL-safe vs. Standard. Wer einen Standard-Base64-String in eine URL klebt, muss +, / und = prozent-encoden, sonst bricht das Routing. Viertens: Whitespace und Padding. Viele Decoder akzeptieren Zeilenumbrüche und fehlendes Padding, andere nicht — bei API-Integrationen prüfen, ob beide Seiten dieselbe Variante (RFC 4648 strict vs. MIME) sprechen. Fünftens — sicherheitskritisch: Base64 verschleiert nichts. Logfiles, Source Maps und Browser-DevTools machen jeden eingebetteten Base64-String trivial lesbar. Speichern Sie niemals Klartext-Credentials, JWTs mit sensiblen Claims oder API-Secrets als Base64 in einer Datei oder URL. Wer reproduzierbar sicher senden will, kombiniert Base64 mit AES-GCM, HMAC oder TLS.
=-Padding-Zeichen am Ende. Ein 100-Byte-Input wird also rund 136 Zeichen Output.=-Zeichen am Ende?=. Es gibt nie mehr als zwei = am Ende.btoa() nur Latin-1 (Codepoints 0–255) akzeptiert. Ein ö ist Codepoint 246 — Latin-1 ok, aber ein ß oder Emoji nicht. Lösung: erst per new TextEncoder().encode(str) in UTF-8-Bytes konvertieren, dann diese Bytes Base64-kodieren. Unser Tool macht das automatisch.+ durch -, / durch _ und lässt das =-Padding meist weg. Dadurch passt der String ohne Prozent-Encoding in URLs, Cookies und Dateinamen. JWT, OAuth-PKCE und WebPush nutzen Base64URL.FileReader lokal gelesen.