Base64: Text, Dateien und Bilder online kodieren und dekodieren

Base64: Text, Dateien und Bilder online kodieren und dekodieren

Text, Datei oder Bild im Browser nach Base64 wandeln (und zurück) — Data-URI, E-Mail-Anhang, JWT-Segment. 100 % lokal, keine Verschlüsselung.

18.09.2026
12 Min. Lektüre
Teilen Sie diesen Artikel:
Base64KodierungData-URIAnleitung

Warum Base64 in jedem Stack auftaucht

Ein CSS-Hintergrundbild, das keine separate Datei laden darf, ein MIME-Anhang, der als ASCII reisen muss, ein JWT-Segment zwischen zwei Punkten, eine WordPress-Option, die serialisiert und dann in Base64 verpackt wurde: Das sind keine Verschlüsselungsprobleme. Es sind Transportprobleme. Der Online-Base64-Encoder und -Decoder macht aus Unicode-Text ein ASCII-sicheres Alphabet und zurück, komplett im Tab. Der Bild-zu-Base64-Konverter macht dasselbe für eine lokale PNG-, JPEG-, GIF-, WebP- oder SVG-Datei, als Data-URI oder als rohes Base64. Nichts wird hochgeladen. Base64 ist kein Hash, keine Verschlüsselung und kein TLS-Ersatz. Es ist ein Weg, Bytes durch Kanäle zu tragen, die nur Buchstaben, Ziffern, +, / und Padding akzeptieren. Diese Werkzeuge stehen gemeinsam im Kodierungs-Tools-Hub.

UTF-8-Roundtrip für Unicode-Text (Akzente, CJK, Emoji), anders als das native btoa, das ihn verfälscht oder ablehnt
URL-safe-Modus (RFC 4648): Bindestrich und Unterstrich statt Plus und Schrägstrich, Padding weggelassen, wie in JWTs
Das Dekodieren entfernt Leerraum, daher lassen sich umgebrochene MIME-Zeilen und kopierte JWT-Segmente trotzdem verarbeiten
Bild-Tool: PNG, JPEG, GIF, WebP und SVG bis 32 MiB, als Data-URI oder rohes Base64, mit einer Vorschau über ein img-Element
Alles läuft lokal: Die Zeichenkette verlässt den Browser nicht
Verketten mit JWT Dekodieren, URL kodieren, HTML Entitäten, SVG-Data-URI und JSON-Formatter

Wann Sie im Browser kodieren und wann nicht

Passende Fälle

Der Encoder ist ein Skalpell für eine Zeichenkette, die Sie einfügen können, kein CDN.

Ein JWT-Header oder -Payload lesen oder eine umgebrochene MIME-Zeile dekodieren, ohne eine REPL zu öffnen
Eine kleine CSS-Data-URI für ein bereits optimiertes Icon bauen
Prüfen, dass ein Backend-Base64 UTF-8 folgt (café, Emoji) statt Latin-1-Bytes
Eine Base64-Hülle von einem WordPress- oder Laravel-Blob ziehen, bevor unserialize läuft
Den Unterschied zwischen Kodierung, Hashing und Verschlüsselung mit einem Roundtrip im selben Tab erklären
Der Pipeline überlassen

Hängt die Antwort an einer Datei, die der Browser nicht halten sollte, oder an Kryptografie, bleiben Sie in CI oder einem Secret-Manager.

Produktions-Hero-Bilder, Produktfotos oder jedes Asset, bei dem 33 % Extra-CSS teurer ist als ein HTTP-Request
Secrets: Base64 versteckt sie nicht, nutzen Sie einen Tresor statt eines Encoders
Passwortspeicherung: ein Hash (bcrypt oder Argon2), niemals eine Kodierung
HEIC, PDF oder Dateien über 32 MiB liegen außerhalb von image-to-base64
Eine JWT-Signatur gegen ein JWKS prüfen: jwt-verify, nicht einfach dekodieren und hoffen

Die Base64-Fehler, die einen Nachmittag kosten

Kodierung Verschlüsselung nennen

Jeder, der die Zeichenkette lesen kann, kann sie dekodieren. Base64 hat keinen Schlüssel, keine Integritätsprüfung und keine Vertraulichkeit. Ein Token, das im Log undurchsichtig wirkt, ist nach einem einzigen Dekodieren Klartext. Wenn die Bytes geheim bleiben müssen, verschlüsseln Sie sie (oder legen Sie sie nicht in den Payload). Wenn sie authentisch bleiben müssen, signieren Sie sie mit einem HMAC oder einer JWT-Signatur und nicht mit Base64 selbst.

Einen API-Key als Base64 ausliefern und das „obfuskiert“ nennen
Passwörter als Base64 speichern statt als Passwort-Hash (bcrypt, Argon2)
Annehmen, eine Data-URI verstecke das Asset vor jedem, der den Quelltext öffnet
Base64 mit SHA-256 verwechseln: ein Digest ist Einweg; Base64 ist absichtlich umkehrbar
Behandeln Sie Base64 als Geschenkpapier. Dekodieren Sie, wenn Sie die Bytes brauchen; halten Sie die Hülle nie für ein Schloss.
Standard-Base64 und Base64URL vermischen

RFC 4648 definiert zwei Alphabete. Standard-Base64 nutzt + und / und behält üblicherweise das =-Padding. URL-sicheres Base64 (JWT, Cookies, Pfade) nutzt - und _ und lässt das Padding in der Regel weg. Die URL-safe-Option von FastMinify führt beide Ersetzungen aus und streicht beim Kodieren das Padding. Beim Dekodieren stellt der URL-safe-Modus das Standardalphabet und das Padding wieder her, während der Standardmodus die Zeichenkette unverändert an atob übergibt: atob toleriert fehlendes Padding, lehnt aber - und _ ab. Eine URL-safe-Zeichenkette bei ausgeschalteter Option ergibt daher einen Fehler wegen ungültiger Eingabe, eine Standard-Zeichenkette bei eingeschalteter Option wird dagegen trotzdem dekodiert, weil nur diese beiden Zeichen ersetzt werden.

Ein JWT-Segment mit Bindestrichen und Unterstrichen einfügen, während URL-safe aus ist
Einem erfolgreichen Dekodieren einer abgeschnittenen Kopie vertrauen: Ein fehlendes = wird toleriert, eine gekürzte Zeichenkette ergibt dann einen kürzeren Text
Den Payload einer Data-URI (Standardalphabet, mit Padding) in ein JWT-Feld kopieren
Irgendwo + von Hand durch einen Bindestrich ersetzen und vergessen, / durch einen Unterstrich zu ersetzen
Lehnt der Decoder eine Zeichenkette mit Bindestrichen oder Unterstrichen ab, schalten Sie URL-safe ein. Lassen Sie es für MIME, PEM-nahe Blobs und die meisten Data-URIs ausgeschaltet.
Ein ganzes JWT in den Text-Decoder einfügen

Ein kompaktes JWT besteht aus drei Base64URL-Segmenten, die durch Punkte getrennt sind (header.payload.signature). Die Punkte sind kein Base64. Das Base64-Tool dekodiert eine Alphabet-Zeichenkette und kein Token mit Punkten. Die Fehlermeldung der Seite sagt es ausdrücklich: Nur die kodierten Zeichen einfügen, keine Punkte. Bei einem JWT kopieren Sie jeden Teil zwischen den Punkten oder öffnen den JWT-Decoder und lesen Header und Payload in einem Schritt.

eyJhbGciOi… als einen Block samt Punkten einfügen
Das Signatur-Segment als UTF-8-Text dekodieren und ein lesbares JSON erwarten
jwt-decode nutzen, obwohl nur ein beliebiges Base64-Blob ohne header.payload.signature vorliegt
Vergessen, dass jwt-decode Claims liest und jwt-verify gegen ein JWKS nicht ersetzt
Ganzes JWT → jwt-decode. Ein Segment oder eine beliebige Zeichenkette → Base64. Signaturprüfung → jwt-verify, nicht die Tools dieses Guides.
Ein Foto als Data-URI in das CSS der Produktion einbetten

Base64 bläht Binärdaten um etwa 33 % auf (3 Bytes werden zu 4 ASCII-Zeichen). Ein JPEG mit 200 KiB wird zu rund 267 KiB CSS. Das Bild lässt sich dann nicht mehr getrennt vom Stylesheet cachen und macht ein Stylesheet schwerer, das ohnehin das Rendern blockiert. Unter HTTP/2 sind zusätzliche Requests günstig, was den Hauptgrund für das Einbetten entfallen lässt. Data-URIs lohnen sich für winzige Icons, die sonst einen Request kosten würden. Sie verlieren bei Hero-Bildern, Produktfotos und allem, das Sie bereits als Datei minifizieren.

Ein 2-MiB-PNG in image-to-base64 legen und das Ergebnis in ein Stylesheet kleben
Erwarten, dass Brotli die 33 % Zuwachs aufhebt: Der Text lässt sich komprimieren, aber nur auf etwa die Größe der Originaldatei
Den SVG-Optimierungsleitfaden überspringen, bevor Sie ein exportiertes SVG einbetten
Das Text-Base64-Tool auf ein Binärbild anwenden: es kodiert Unicode-Text, keine Dateibytes
Wandeln Sie das Bild im Tab um, um die URI zu sehen. Liefern Sie sie nur aus, wenn die Datei so klein ist, dass ein zusätzlicher Request teurer wäre als der Aufschlag von 33 %.

Standard-Base64, URL-safe oder Data-URI wählen

Drei Ausgaben, eine Alphabet-Familie

Die Bytes ändern sich nicht. Die Schreibweise schon. Standard-Base64 ist das, was E-Mail-MIME und die meisten APIs ausgeben. URL-sicheres Base64 brauchen JWTs, signierte Cookies und Pfadsegmente, damit + und / nicht mit Query-Syntax kollidieren. Eine Data-URI ist Standard-Base64 mit dem Präfix data:<mime>;base64,, damit ein Browser die Zeichenkette als Ressource behandelt.

Standard: A–Z a–z 0–9 + / und das Padding =, genutzt von der rohen Ausgabe von image-to-base64, den meisten Dokumentationen und den meisten Datenbanken
URL-safe: A–Z a–z 0–9, Bindestrich und Unterstrich, Padding weggelassen. Das ist eine Option des Text-Tools und die Schreibweise von JWT-Headern und -Payloads
Data-URI: data:image/png;base64,iVBOR…, Standardausgabe von image-to-base64, für CSS url() und img src
Das Präfix ist kein Base64. data:image/… nicht in den Text-Decoder einfügen; abschneiden oder das Bild-Tool nutzen
Text-Tool vs. image-to-base64 vs. SVG-Data-URI

Drei Werkzeuge, drei Eingaben. Der Text-Encoder wendet UTF-8 und dann Base64 auf eine Zeichenkette an, eingefügt oder aus einer Textdatei gelesen. Er interpretiert ein PNG nicht als Pixel. Der Bildkonverter liest die Dateibytes und prüft den MIME-Typ. PNG, JPEG, GIF, WebP und SVG werden akzeptiert, ein leerer MIME-Typ wird abgelehnt, statt erraten zu werden. Er begrenzt Dateien auf 32 MiB und gibt eine Data-URI oder rohes Base64 aus. Die Vorschau nutzt nur ein img-Element: SVG wird nie als Markup in das DOM eingefügt. Für SVG als CSS, mit Wahl zwischen utf-8 und Base64 und einem eigenen CSS-Ausschnitt, nutzen Sie SVG zu Data-URI im SVG-Hub. Dessen SVG-Eingabe ist auf 512 KiB begrenzt, eine andere Grenze für eine andere Aufgabe.

Unicode-String, JSON-Blob, JWT-Segment, Config-Snippet → /base64
Lokale Raster- oder SVG-Datei als data:image/… → /image-to-base64
SVG-Quelle als CSS url() mit Encoding-Wahl → /svg-to-data-uri
Die Prozentkodierung eines Query-Werts ist kein Base64, das ist /url-encode
Base64 ist nicht URL-Encode, HTML-Entities oder ein Hash

Entwickler werfen das durcheinander, weil alles eine Zeichenkette „sicherer“ macht. Sie lösen aber unterschiedliche Kollisionen. URL-Encode kodiert reservierte URI-Zeichen prozentual. HTML-Entities maskieren Markup, damit eine Zeichenkette in einem Attribut stehen kann. Ein Hash (SHA-256, HMAC) liefert Integrität oder Authentizität in einer Richtung; dafür gibt es die Hash- und HMAC-Werkzeuge im Kodierungs-Hub, nicht diesen Artikel. Base64 ändert nur, wie Bytes geschrieben werden.

Eine Zeichenkette in einem Query-Parameter → URL-Encode, nicht Base64
Eine Zeichenkette in HTML ohne Tag-Bruch → HTML-Entities
Manipulation erkennen → Hash oder HMAC, dann optional den Digest als Base64 transportieren
ASCII-sichere Bytes in JSON, E-Mail oder einer Data-URI → Base64

Was Base64 wirklich mit Ihren Bytes macht

Ein Alphabet mit 64 Zeichen und 33 % Aufschlag

Base64 nimmt 24 Bits (3 Bytes) und schreibt sie als 4 Zeichen aus einem Alphabet mit 64 Symbolen. Deshalb ist die Ausgabe länger: 4/3, also etwa 33 % mehr, plus Padding, wenn die Eingabelänge kein Vielfaches von 3 ist. Dieser Aufschlag ist der Preis für ein Alphabet, das E-Mail, JSON-Strings und CSS übersteht. Das ist das Gegenteil von Minifizierung. Ist der Payload JSON, das Sie über HTTP ausliefern, minifizieren Sie das JSON zuerst und kodieren nur, wenn eine Hüllschicht ASCII verlangt; siehe den JSON-Minifizierungsleitfaden.

Vorher

foo

Nachher

Zm9v
3 Eingabebytes → 4 Ausgabezeichen; 1 Restbyte → 2 Zeichen + ==; 2 Restbytes → 3 Zeichen + =
Das Alphabet ist ASCII: Es überlebt Kopieren und Einfügen, YAML und Logs, die Binärdaten zerstören
Leerraum in der kodierten Zeichenkette ignoriert FastMinify beim Dekodieren; MIME bricht Zeilen oft bei 76 Zeichen um
Die Expansion gilt für die kodierte Form. Gzip/Brotli auf einer Data-URI in HTML ist weniger wirksam als Gzip auf der Originaldatei
Zuerst UTF-8, dann Base64

Das eingebaute btoa von JavaScript arbeitet mit einem Binärstring (Werte 0–255). Übergeben Sie ihm café, kodiert es stillschweigend das einzelne Latin-1-Byte für é statt der zwei UTF-8-Bytes; bei einem Emoji oder einem CJK-Zeichen wirft es einen Fehler. FastMinify kodiert die UTF-8-Bytes mit TextEncoder und anschließend Base64, nach demselben Vertrag wie Node Buffer.from(text, 'utf8').toString('base64'). Das Dekodieren kehrt das mit TextDecoder um. Emoji und CJK überstehen den Weg. Dekodieren Sie ein Blob, das nie UTF-8-Text war (ein PNG, ein Gzip-Stream), erhalten Sie Ersatzzeichen statt einer Datei. Ein solches Blob gehört zu image-to-base64 oder in einen Hex-Dump, nicht in ein Textfeld.

Vorher

café

Nachher

Y2Fmw6k=
café → Y2Fmw6k= (UTF-8 für é sind zwei Bytes C3 A9)
Hello, 世界 → SGVsbG8sIOS4lueVjA==
Natives btoa/atob ohne TextEncoder ist die klassische Unicode-Falle; das Online-Tool nimmt diesen Pfad nicht
Binärbilder: Datei auf image-to-base64 legen; kein „Binär“ in den Text-Encoder kleben
Padding, und warum JWT es weglässt

Ist die Bytelänge kein Vielfaches von 3, hängt Standard-Base64 = oder == an, damit die Länge der Zeichenkette ein Vielfaches von 4 ist. URL-safe-Kontexte (JWT, manche Cookies) lassen dieses Padding weg, weil = ein Trennzeichen in Query-Strings ist. Das URL-safe-Kodieren von FastMinify entfernt es, das URL-safe-Dekodieren setzt es vor atob wieder ein. Das Standard-Dekodieren braucht es nicht, weil atob fehlendes Padding toleriert. Klassische Beispiele aus der RFC: f → Zg==, fo → Zm8=, foo → Zm9v.

Vorher

f

Nachher

Zg==
Das Standard-Dekodieren toleriert fehlendes Padding, lehnt aber eine Zeichenkette ab, die ein Zeichen länger ist als ein Vielfaches von 4
Die beiden Bytes FB FF ergeben in Standard-Base64 +/8= und in URL-safe-Base64 -_8, mit getauschtem Alphabet und ohne Padding
Ein JWT-Header {"alg":"HS256","typ":"JWT"} kodiert zu eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ohne Padding
Padding nicht von Hand an einen Data-URI-Payload hängen, außer Sie reparieren eine abgeschnittene Kopie

Text, Datei oder Bild im Tab kodieren

Eine Zeichenkette kodieren oder dekodieren

Öffnen Sie den Base64-Encoder/Decoder. Fügen Sie den Text ein oder wählen Sie eine Textdatei aus (die Grenze im Browser liegt bei 32 MiB, wie bei den anderen Dateiauswahlen der Website). Wählen Sie Kodieren oder Dekodieren. Lassen Sie die Option URL-sicher Base64 (URL-safe) für MIME, Data-URI-Payloads und die meisten API-Beispiele ausgeschaltet. Schalten Sie sie für JWT-Segmente, signierte Cookie-Werte und alles ein, was in einem Pfad stehen wird. Laden Sie das Beispiel, wenn Sie nur sehen wollen, wie es funktioniert. Alles bleibt im Tab.

1

1. Quelle einfügen oder auswählen

Unicode-Text zum Kodieren; eine Base64-Alphabet-Zeichenkette zum Dekodieren. Keine JWT-Punkte und kein data:-Präfix.

2

2. URL-safe passend zur Quelle einstellen

Eingeschaltet, nutzt die Option Bindestrich und Unterstrich und lässt das Padding weg. Ausgeschaltet nutzt sie Plus und Schrägstrich und behält das Padding =. Eine URL-safe-Zeichenkette, die mit ausgeschalteter Option dekodiert wird, ergibt einen Fehler und kein Teilergebnis.

3

3. Ergebnis kopieren

Haben Sie minifiziertes JSON dekodiert, schicken Sie es an den JSON-Formatter oder den Online-JSON-Unminifier. Sie ändern nur das Layout, bereits verlorene Namen bleiben verloren.

Ein lokales Bild in eine Data-URI verwandeln

Öffnen Sie das Bild-zu-Base64-Tool. Wählen Sie ein Bild (PNG, JPEG, GIF, WebP oder SVG, bis 32 MiB) oder ziehen Sie es auf die Seite. Wählen Sie Data-URI für CSS-url() und img src oder Rohes Base64, um das Ergebnis an ein anderes Werkzeug weiterzugeben. Die Vorschau wird über ein img-Element gerendert, SVG wird nicht als DOM eingebunden. Leere oder nicht unterstützte MIME-Typen werden abgelehnt, weil das Werkzeug nicht rät. Nach einem winzigen Icon können Sie die URI in das CSS einfügen. Nach einem Foto ist das in der Regel nicht ratsam.

Erlaubte Typen: image/png, image/jpeg, image/gif, image/webp und image/svg+xml; PDF und HEIC werden nicht unterstützt
Hartes Limit von 32 MiB: Größere Dateien werden abgelehnt
Die Standardausgabe beginnt mit einem Präfix wie data:image/png;base64, und der Rohmodus entfernt es
SVG zuerst optimieren: minify-svg / SVG-Optimierungsleitfaden, dann kodieren
JWT, URL, JSON und PHP nach Base64

Kodierung ist meist nur ein Schritt in einer längeren Fehlersuche. Der Kodierungs-Hub bündelt die Nachbarwerkzeuge.

Kompaktes JWT: ein JWT dekodieren (Header und Payload). Ein Test-Token mit JWT encode bauen, was weiterhin keine Verifikation ist
Query-Strings: URL encode / URL decode nutzen die Prozentkodierung, ein anderes Alphabet
Dekodiertes, minifiziertes JSON: JSON-Formatter, oder JSON minifizieren, wenn Sie einen API-Payload packen; siehe auch REST-API-JSON optimieren
WordPress-artiges Blob: Base64 dekodieren, dann PHP unserialize, wenn die inneren Bytes ein serialisiertes PHP-Array sind; siehe den PHP-Serialisierungsleitfaden
Hub-Überblick: Kodierungs-Tools · auch unter Developer Utilities

Wann der Browser reicht und wann Sie trotzdem eine REPL brauchen

Node Buffer mit demselben UTF-8-Vertrag

Lebt die Zeichenkette schon in einem Skript, entspricht der Buffer von Node dem UTF-8-dann-Base64-Pfad von FastMinify. base64url nutzen, wenn der Konsument eine JWT-Bibliothek ist.

Einfaches Beispiel

const { Buffer } = require('node:buffer') const encoded = Buffer.from('café', 'utf8').toString('base64') // Y2Fmw6k= const urlSafe = Buffer.from('café', 'utf8').toString('base64url') // Y2Fmw6k const roundTrip = Buffer.from(encoded, 'base64').toString('utf8') // café
Browser-TextEncoder statt btoa auf Unicode-Text

Das native Paar btoa / atob ist eine Binärstring-API. Wickeln Sie es mit TextEncoder/TextDecoder, sonst zerstören Sie alles außerhalb von Latin-1. Genau diese Hülle macht das FastMinify-Text-Tool bereits.

Einfaches Beispiel

const bytes = new TextEncoder().encode('café') let binary = '' bytes.forEach((b) => { binary += String.fromCharCode(b) }) const encoded = btoa(binary) const decodedBytes = Uint8Array.from(atob(encoded), (c) => c.charCodeAt(0)) const text = new TextDecoder().decode(decodedBytes)
openssl für eine Datei auf der Platte

Ein lokales PEM, eine Binär-Fixture oder ein CI-Job, der keinen Browser öffnen darf: openssl bleibt das richtige Werkzeug. FastMinify ersetzt keine Pipeline, die Dateien auf dem Datenträger bereits Hashes berechnet oder signiert.

Einfaches Beispiel

openssl base64 -in icon.png -out icon.b64 openssl base64 -d -in icon.b64 -out icon.png
FastMinify base64 / image-to-base64

Keine Installation, nichts wird hochgeladen, UTF-8-Text plus ein eigener Bildkonverter mit 32-MiB-Limit und URL-safe-Option. Die Grenzen: Das Text-Tool ist kein Encoder für Binärdateien, HEIC und PDF liegen außerhalb des Bild-Tools, und die JWT-Verifikation ist eine andere Seite. Nutzen Sie es zum Prüfen, Erklären und Aushelfen auf einer Maschine ohne Node, und lassen Sie openssl oder Buffer in der CI.

Zusammenfassung

Base64 ist ein unscheinbarer, unverzichtbarer Adapter: Bytes hinein, ein ASCII-sicheres Alphabet heraus, 33 % größer und vollständig umkehrbar. FastMinify führt diesen Adapter im Browser aus. Es kodiert UTF-8-Text mit optionalem URL-safe-Alphabet, und ein eigener Bildkonverter (PNG, JPEG, GIF, WebP, SVG, 32 MiB) gibt eine Data-URI oder rohes Base64 aus, ohne SVG ins DOM zu injizieren. Es verschlüsselt nicht, es bildet keine Hashes, und es ersetzt weder jwt-verify noch ein CDN. Kodieren Sie das Snippet, dekodieren Sie die Logzeile, binden Sie das Icon ein und hören Sie dann auf. Beginnen Sie im Kodierungs-Tools-Hub und öffnen Sie JWT decode, wenn die Zeichenkette zwei Punkte hat.

URL-safe an die Quelle anpassen: eingeschaltet für JWT-Segmente, ausgeschaltet für MIME und Data-URIs
Base64 nie als Verschlüsselung oder Passwort-Hash behandeln
image-to-base64 für Dateien; das Text-Tool ist Unicode, keine Pixel
Data-URIs nur einbetten, wenn die Datei klein genug ist, um den Aufschlag von 33 % zu verkraften
Ganzes JWT → jwt-decode; Signaturpolitik → jwt-verify
Teilen Sie diesen Artikel
Teilen Sie diesen Artikel: