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:
Base64
Kodierung
Data-URI
Anleitung

Warum Base64 in jedem Stack auftaucht

Ein CSS-Background, der keine Datei fetchen darf, ein MIME-Anhang, der als ASCII reisen muss, ein JWT-Segment zwischen zwei Punkten, eine WordPress-Option, die serialisiert und dann in Base64 gewickelt 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, kein Chiffre und kein TLS-Ersatz. Es ist ein Weg, Bytes durch Kanäle zu tragen, die nur Buchstaben, Ziffern, +, / und Padding mögen. Der Cluster liegt im Kodierungs-Tools-Hub.

UTF-8-Roundtrip für Unicode-Text — Akzente, CJK, Emoji — nicht der kaputte native-btoa-Pfad
URL-safe-Modus (RFC 4648): - und _ statt + und /, Padding weggelassen — das Alphabet, das JWTs wirklich nutzen
Decode entfernt Whitespace, daher parsen umgebrochene MIME-Zeilen und kopierte JWT-Segmente trotzdem
Bild-Tool: PNG, JPEG, GIF, WebP, SVG, 32 MiB, Data-URI oder roh, Vorschau nur über img
100 % lokal — die Zeichenkette verlässt den Browser nicht
Verketten mit JWT-Decode, URL-Encode, HTML-Entities, SVG-Data-URI, JSON-Formatter

Wann Sie im Browser kodieren — und wann nicht

Gute Fits

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 einer Latin-1-Lüge
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 sofortigen Roundtrip 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; ein Vault, kein Encoder
Passwortspeicherung — hashen (bcrypt/Argon2), niemals kodieren
HEIC, PDF oder Dateien über 32 MiB — außerhalb von image-to-base64
Eine JWT-Signatur gegen ein JWKS prüfen — <a href="/de/jwt-verify" class="text-primary hover:underline">jwt-verify</a>, 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, der im Log undurchsichtig wirkt, ist nach einem Decode Klartext. Müssen die Bytes geheim bleiben, verschlüsseln Sie (oder legen Sie sie nicht ins Payload). Müssen sie authentisch bleiben, signieren — HMAC oder eine JWT-Signatur, nicht 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
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 Padding typischerweise weg. FastMinifys URL-safe-Schalter macht beide Ersetzungen und streicht Padding beim Encode. Decode im URL-safe-Modus mappt das Alphabet zurück und stellt Padding wieder her. Passt der Schalter nicht zur Zeichenkette, gibt es einen Invalid-Input-Fehler — kein „ungefähres“ Decode.

Ein JWT-Segment mit - und _ einfügen, während URL-safe aus ist
Erwarten, dass der Standardmodus eine Zeichenkette ohne = -Padding akzeptiert
Den Payload einer Data-URI (Standardalphabet, mit Padding) in ein JWT-Feld kopieren
Irgendwo + von Hand durch - ersetzen und / → _ vergessen
Ein ganzes JWT in den Text-Decoder kleben

Ein kompaktes JWT sind drei Base64URL-Segmente, getrennt durch Punkte: header.payload.signature. Die Punkte sind kein Base64. Das Base64-Tool dekodiert eine Alphabet-Zeichenkette, keinen gepunkteten Token. Der Fehlertext auf der Seite sagt das: nur die kodierten Zeichen einfügen, keine Punkte; für ein JWT jeden Teil zwischen den Punkten kopieren — oder einfacher den JWT-Decoder öffnen und Header plus Payload in einem Schritt lesen.

eyJhbGciOi… als einen Block inklusive Punkte 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 — es ersetzt jwt-verify gegen ein JWKS nicht
Ein Foto als Data-URI in Produktions-CSS inlinen

Base64 bläht Binärdaten um etwa 33 % auf (3 Bytes werden 4 ASCII-Zeichen). Ein 200-KiB-JPEG wird ~267 KiB CSS. Dieses CSS hat keinen eigenen Cache, blockiert das Parsen und kämpft gegen HTTP/2-Multiplexing. 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 eine Data-URI unter Brotli besser komprimiert als die Originaldatei — das Alphabet ist dichter, nicht kleiner
Den <a href="/de/blog/svg-optimization-leitfaden-web" class="text-primary hover:underline">SVG-Optimierungsleitfaden</a> überspringen, bevor ein exportiertes SVG inlined wird
Das Text-Base64-Tool auf ein Binärbild anwenden: es kodiert Unicode-Text, keine Dateibytes

Standard-Base64, URL-safe, Data-URI — die Darstellung 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:&lt;mime&gt;;base64,, damit ein Browser die Zeichenkette als Ressource behandelt.

Standard: A–Z a–z 0–9 + / und = -Padding — rohe image-to-base64-Ausgabe, die meisten Docs und Datenbanken
URL-safe: A–Z a–z 0–9 - _ , Padding weggelassen — Schalter am Text-Tool; JWT-Header/Payload-Schreibweise
Data-URI: data:image/png;base64,iVBOR… — Standardausgabe von image-to-base64, CSS url(), img src
Das Präfix ist kein Base64. data:image/… nicht in den Text-Decoder kleben; abschneiden oder das Bild-Tool nutzen
Text-Tool vs. image-to-base64 vs. SVG-Data-URI

Drei Tools, drei Eingaben. Der Text-Encoder macht UTF-8, dann Base64 auf einer Zeichenkette (Einfügen oder Textdatei). Er interpretiert ein PNG nicht als Pixel. Der Bildkonverter liest Dateibytes, prüft MIME (PNG, JPEG, GIF, WebP, SVG — leeres MIME wird abgelehnt, kein stilles Sniffing), begrenzt 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 injiziert. Für SVG-as-CSS mit utf-8- oder Base64-Wahl und einem eigenen CSS-Snippet nutzen Sie SVG zu Data-URI im SVG-Hub (512 KiB SVG-Eingabe — eine andere Kappe, ein anderer Job).

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
Einen Query-Wert percent-encoden ist nicht Base64 — das ist /url-encode
Base64 ist nicht URL-Encode, HTML-Entities oder ein Hash

Entwickler mischen das, weil alles eine Zeichenkette „sicherer“ macht. Sie lösen unterschiedliche Kollisionen. URL-Encode percent-kodiert reservierte URI-Zeichen. HTML-Entities escapen Markup, damit eine Zeichenkette in einem Attribut sitzen kann. Ein Hash (SHA-256, HMAC) ist Einweg-Integrität oder Authentizität — siehe Hash/HMAC im Kodierungs-Hub, nicht in diesem 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 64-Zeichen-Alphabet und eine 33-%-Steuer

Base64 nimmt 24 Bits (3 Bytes) und schreibt sie als 4 Zeichen aus einem 64-Symbol-Alphabet. Deshalb ist die Ausgabe länger: 4/3, etwa 33 % mehr, plus Padding, wenn die Eingabelänge kein Vielfaches von 3 ist. Die Steuer ist der Punkt — Sie tauschen Größe gegen ein Alphabet, das E-Mail, JSON-Strings und CSS überlebt. Das ist das Gegenteil von Minifizierung. Ist das 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 Copy-Paste, YAML und Logs, die Binärdaten zerstören
Whitespace in der kodierten Zeichenkette ignoriert FastMinify beim Decode — MIME bricht 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

JavaScripts eingebautes btoa arbeitet auf einem Binärstring (Werte 0–255). Geben Sie café hinein, wirft es oder produziert — je nach Engine — eine Lüge. FastMinify kodiert die UTF-8-Bytes mit TextEncoder, dann Base64 — derselbe Vertrag wie Node Buffer.from(text, 'utf8').toString('base64'). Decode kehrt das mit TextDecoder um. Emoji und CJK überleben. Dekodieren Sie ein Blob, das nie UTF-8-Text war (ein PNG, ein Gzip-Stream), erhalten Sie Ersatzzeichen, keine Datei — dieses Blob gehört in image-to-base64 oder 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 Zeichenkettenlänge ein Vielfaches von 4 ist. URL-safe-Kontexte (JWT, manche Cookies) lassen das Padding weg, weil = ein Query-Trennzeichen ist. FastMinify-URL-safe-Encode streicht es; URL-safe-Decode setzt es vor atob wieder. Klassische RFC-Beispiele: fZg==, foZm8=, fooZm9v.

Vorher

f

Nachher

Zg==
Standard-Decode: fehlendes Padding kann scheitern — = einfügen oder URL-safe aktivieren, wenn der Produzent es weggelassen hat
URL-safe-Encode von +/8= wird -_8 (Alphabet-Tausch und Padding weg)
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

Im Tab kodieren: Text, dann eine Datei, dann ein Bild

Eine Zeichenkette kodieren oder dekodieren

Öffnen Sie den Base64-Encoder/Decoder. Text einfügen (oder eine Textdatei hochladen — Client-Deckel 32 MiB, dieselbe Familie wie andere Dateiauswahlen auf der Site). Encode oder Decode wählen. URL-safe aus für MIME, Data-URI-Payloads und die meisten API-Beispiele. Einschalten für JWT-Segmente, signierte Cookie-Werte und alles, was in einem Pfad sitzt. Sample laden, wenn Sie nur die Pipeline sehen wollen. Alles bleibt im Tab.

1

Schritt 1 — Quelle einfügen oder hochladen

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

2

Schritt 2 — URL-safe an den Produzenten anpassen

An: - _ und kein Padding. Aus: + / und = -Padding. Eine Abweichung ist ein Fehler, kein Teil-Decode.

3

Schritt 3 — Ergebnis kopieren

Haben Sie minifiziertes JSON dekodiert, schicken Sie es an den JSON-Formatter oder den Online-JSON-Unminifier — nur Format, bereits verlorene Namen bleiben verloren.

Ein lokales Bild in eine Data-URI verwandeln

Öffnen Sie das Bild-zu-Base64-Tool. PNG, JPEG, GIF, WebP oder SVG ablegen (max. 32 MiB). Data-URI für CSS url() und img src wählen, oder rohes Base64, um in ein anderes Tool zu pipen. Die Vorschau rendert über ein img-Element; SVG wird nicht als DOM gemountet. Leere oder exotische MIME-Typen werden abgelehnt — das Tool rät nicht. Nach einem winzigen Icon können Sie die URI in CSS kleben. Nach einem Foto in der Regel nicht.

Erlaubte Typen: image/png, image/jpeg, image/gif, image/webp, image/svg+xml — kein PDF, kein HEIC in v1
Hartes 32-MiB-Limit — größere Dateien werden abgelehnt; es gibt keinen unbegrenzten Upload
Standardausgabe beginnt mit data:&lt;mime&gt;;base64, — Rohmodus streicht das Präfix
SVG zuerst optimieren: minify-svg / SVG-Optimierungsleitfaden, dann kodieren
Nach Base64: JWT, URL, JSON, PHP

Kodierung ist meist ein Schritt in einem längeren Debug. Der Kodierungs-Hub hält die Nachbarn einen Klick entfernt.

Kompaktes JWT: ein JWT dekodieren (Header + Payload). Test-Token mit JWT encode bauen — immer noch keine Verifikation
Query-Strings: URL encode / URL decode — Percent-Encoding, anderes Alphabet
Dekodiertes, minifiziertes JSON: JSON-Formatter, oder JSON minifizieren, wenn Sie ein API-Payload packen — siehe auch REST-API-JSON optimieren
WordPress-artiges Blob: Base64 dekodieren, dann PHP unserialize, wenn die inneren Bytes ein PHP-serialisiertes Array sind — PHP-Serialisierungsleitfaden
Hub-Überblick: Kodierungs-Tools · auch unter Developer Utilities

Wann der Browser reicht — und wann Sie trotzdem eine REPL brauchen

Node Buffer — derselbe UTF-8-Vertrag

Lebt die Zeichenkette schon in einem Skript, entspricht Nodes Buffer 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 — btoa nicht auf Unicode aufrufen

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 der richtige Hammer. FastMinify ersetzt keine Pipeline, die Dateien auf der Platte bereits hasht 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, kein Upload, UTF-8-Text plus ein eigener Bildkonverter mit ehrlichem 32-MiB-Deckel und URL-safe-Schalter. Trade-off: das Text-Tool ist kein Binärdatei-Encoder; HEIC/PDF liegen außerhalb des Bild-Tools; JWT-Verifikation ist eine andere Seite. Nutzen Sie es zum Prüfen, Erklären und Entblocken einer Maschine ohne Node — openssl oder Buffer bleiben in der CI.

Fazit

Base64 ist ein langweiliger, unverzichtbarer Adapter: Bytes rein, ASCII-sicheres Alphabet raus, 33 % größer, vollständig umkehrbar. FastMinify führt diesen Adapter im Browser aus — UTF-8-Text mit optionalem URL-safe-Alphabet und ein eigener Bildkonverter (PNG, JPEG, GIF, WebP, SVG, 32 MiB), der eine Data-URI oder rohes Base64 ausgibt, ohne SVG ins DOM zu injizieren. Er verschlüsselt nicht, er hasht nicht, und er ersetzt weder jwt-verify noch ein CDN. Kodieren Sie das Snippet, dekodieren Sie die Logzeile, inlinen Sie das Icon, dann aufhören. Start im Kodierungs-Tools-Hub, und JWT decode öffnen, wenn die Zeichenkette zwei Punkte hat.

URL-safe an den Produzenten anpassen — JWT-Segmente an, MIME und Data-URIs aus
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 inlinen, wenn das Asset klein genug ist, die 33-%-Steuer zu zahlen
Ganzes JWT → jwt-decode; Signaturpolitik → jwt-verify
Teilen Sie diesen Artikel
Teilen Sie diesen Artikel: