Wann solltest du Base64-Bilder verwenden?

Base64-Bilder (Data URIs) lohnen sich für winzige Bilder von wenigen Kilobyte, etwa Icons, kleine Logos und Grafiken der Benutzeroberfläche, und für Fälle, in denen eine separate Datei nicht möglich ist, wie HTML-Seiten aus einer einzigen Datei, JSON-Daten oder Offline-Dokumente. Für Fotos, große Bilder und Bilder, die auf vielen Seiten vorkommen, solltest du sie meiden, denn Base64 macht das Bild etwa 33 Prozent größer, und es kann nicht mehr einzeln im Cache landen.

6 Min. Lesezeit

Die Faustregel

Bette ein Bild ein, wenn eine eigene Anfrage mehr kostet als die zusätzlichen Bytes. Mit modernen HTTP/2- und HTTP/3-Verbindungen sind zusätzliche Anfragen günstig, dieser Punkt ist also schnell erreicht: Eine gute Arbeitsgrenze liegt bei 2 bis 4 KB pro Bild. Verbreitete Build-Tools sehen das ähnlich: Vite bettet Assets unter 4 KB standardmäßig ein, die Asset-Module von webpack alles unter 8 KB.

Das Tool unten wandelt ein PNG (oder jedes andere Bild) in eine Data URI um. Leg das Bild ab oder öffne es und wähl dann unter Kopieren als, wie du es kopieren willst: Data URI, reines Base64, eine fertige CSS-Zeile mit background-image, ein HTML-img-Tag mit Breite und Höhe oder Markdown. Es zeigt die Größe der Data URI und wie viel größer sie als die Datei ist, und warnt dich, wenn das Ergebnis groß genug ist, um eine Seite zu bremsen. Die Bilder werden in deinem Browser umgewandelt und nie hochgeladen.

Hier ausprobieren: PNG in Base64

Vollständige Tool-Seite öffnen

Was passiert, wenn du ein Bild einbettest

Eine Data URI wie data:image/png;base64,iVBORw0KGgo... steckt die Bytes des Bildes direkt in das HTML, CSS oder JSON, das es verwendet. Der Browser bekommt das Bild zusammen mit dieser Datei, ohne separaten Download. Das ist der ganze Vorteil. Die Nachteile kommen aus derselben Tatsache:

  • Größe: Base64 schreibt 3 Bytes als 4 Zeichen, das Bild wächst also um etwa ein Drittel. Gzip- oder Brotli-Komprimierung auf dem Server holt bei der Übertragung einen Teil davon zurück, aber nicht alles, und bei schon komprimierten Bildern (PNG, JPG, WebP) bringt sie wenig.
  • Caching: Eine separate Bilddatei landet einmal im Cache und wird auf jeder Seite wiederverwendet. Ein eingebettetes Bild wird nur als Teil der Datei gecacht, in der es steckt. Änderst du eine Zeile CSS, werden alle eingebetteten Icons neu heruntergeladen.
  • Blockiertes Rendern: CSS blockiert die erste Darstellung. Jedes Kilobyte Bild, das in einem Stylesheet steckt, verzögert den Moment, in dem überhaupt etwas auf dem Bildschirm erscheint, auch wenn das Bild weit unten auf der Seite steht.
  • Kein Lazy Loading: loading="lazy" und die Auswahl über srcset verlieren ihren Sinn, weil die Bytes schon mit der Seite angekommen sind.
  • Wartung: Ein langer Base64-String ist im Code-Review unlesbar und durch einen fehlerhaften Kopiervorgang schnell kaputt.

Größentabelle: einbetten oder separate Datei?

BildTypische DateigrößeAls Base64Empfehlung
UI-Icon mit 16 bis 24 px (PNG oder SVG)200 Bytes bis 1 KBetwa 0,3 bis 1,4 KBEinbetten, der Idealfall
Kleines Logo oder Abzeichen2 bis 5 KBetwa 2,7 bis 6,7 KBEinbetten, wenn es auf einer Seite oder in einer E-Mail-Signatur genutzt wird, sonst als Datei
Unscharfer Platzhalter für ein Foto300 Bytes bis 1 KBetwa 0,4 bis 1,4 KBEinbetten, das echte Foto dann als Datei laden
Logo, das auf jeder Seite erscheint10 bis 30 KBetwa 13 bis 40 KBSeparate Datei, damit sie nur einmal gecacht wird
Produktfoto oder großes Titelbild50 bis 500 KBetwa 67 bis 670 KBSeparate Datei mit Lazy Loading oder Preload

Gute Einsatzbereiche für Base64-Bilder

  • Kleine Icons in CSS, etwa Pfeile, Häkchen, eine eigene Checkbox oder der Pfeil eines Auswahlfelds, die zusammen mit den Styles erscheinen müssen und nie verspätet aufblitzen dürfen.
  • Lieferungen aus einer einzigen Datei: ein HTML-Bericht, eine exportierte Rechnung, eine Dokumentationsseite oder ein Prototyp, der auch direkt von der Festplatte geöffnet oder als ein einziger Anhang verschickt funktionieren muss.
  • APIs und Datenbanken: JSON kennt keinen Binärtyp, deshalb werden Bilder in API-Anfragen und Antworten (Unterschriften, Profilbilder, gescannte Dokumente, in manchen Integrationen auch Produktbilder für Marktplätze) üblicherweise als Base64-String verschickt.
  • Platzhalter in niedriger Qualität: Eine winzige, unscharfe Version direkt im HTML erscheint sofort, während das volle Bild lädt.
  • SVG-Icons: SVG ist Text und braucht oft gar kein Base64. Mit der Option URL-Kodierung statt Base64 (kürzer) im Tool bleibt das SVG lesbar, und das Ergebnis ist meist kürzer.

Wann du darauf verzichten solltest

  • Fotos und jedes Bild über etwa 10 KB auf einer Webseite. Nimm eine normale Datei in WebP oder AVIF, mit gesetzter Breite und Höhe und Lazy Loading für Bilder unterhalb des sichtbaren Bereichs.
  • Das größte Bild oben auf der Seite (das LCP-Element). Ein großes eingebettetes Bild macht das HTML selbst schwer und verzögert alles andere darin. Eine separate Datei mit Preload ist meist schneller.
  • Bilder, die sich über viele Seiten wiederholen, etwa das Logo der Website oder ein Hintergrundmuster. Hier schlägt das Caching die gesparte Anfrage.
  • HTML-E-Mails an ein breites Publikum. Viele E-Mail-Programme zeigen Data-URI-Bilder nicht an, am bekanntesten Gmail und Outlook für Windows. Nimm stattdessen gehostete Bilder oder Anhänge, die über eine Content-ID (CID) eingebunden werden. Eingebettete Data URIs funktionieren vor allem in Apple Mail und einigen mobilen Apps, und das reicht für einen Newsletter nicht.
  • Sehr große Data URIs allgemein. Der alte Internet Explorer 8 begrenzte sie auf 32 KB. Moderne Browser akzeptieren viel größere, aber die Leistung leidet lange, bevor irgendeine Grenze erreicht ist.

So machst du es richtig

Verkleinere das Bild, bevor du es umwandelst. Jedes gesparte Byte wird in der Data URI mit 4/3 multipliziert. Komprimiere also PNG-Icons, verkleinere zu große Bilder auf die Größe, in der sie angezeigt werden, und nimm für Fotos, die unbedingt eingebettet werden müssen, etwa in JSON-Daten, ein JPG oder WebP mit vernünftiger Qualität. Die Tools Bild komprimieren und Bildgröße ändern auf dieser Website erledigen das im Browser, und die kleinere Datei kannst du dann hierher mitnehmen.

Gib die Abmessungen an. Ein img-Tag ohne width und height lässt das Layout springen, wenn das Bild erscheint. Die HTML-Ausgabe dieses Tools enthält deshalb die echte Breite und Höhe des Bildes.

Behalte die Quelldatei. Leg das originale PNG oder SVG in deinem Projekt ab und erzeuge die Data URI daraus, entweder mit deinem Build-Tool oder mit diesem Tool, wenn sich etwas ändert. Betrachte den Base64-String nie als Original.

Miss nach. Vergleiche die Seite mit und ohne eingebettete Bilder im Netzwerk-Tab der Entwicklertools deines Browsers oder mit Lighthouse. Wird die CSS- oder HTML-Datei spürbar größer, ohne dass etwas schneller wird, geh zurück zur separaten Datei.

Schritt für Schritt

  1. Bild hinzufügenLeg ein PNG, JPG, SVG oder anderes Bild auf dem Tool ab oder öffne es von deinem Gerät.
  2. Größe prüfenLies die Größe der Data URI ab und wie viel größer sie als die Datei ist. Ist sie groß genug, um Seiten zu bremsen, erscheint ein Hinweis.
  3. Ausgabe wählenWähl unter Kopieren als Data URI, Base64, CSS, HTML oder Markdown. Bei SVG schaltest du URL-Kodierung statt Base64 ein, um ein kürzeres Ergebnis zu bekommen.
  4. Kopieren und einfügenKopiere den Code und füge ihn in dein Stylesheet, Template, JSON oder README ein.

Häufige Fragen

Sind Base64-Bilder schneller als Bilddateien?

Nur bei sehr kleinen Bildern, grob unter 2 bis 4 KB, wo die gesparte Anfrage mehr zählt als die zusätzliche Größe. Bei größeren Bildern ist eine separate Datei schneller und kann gecacht werden.

Wie viel größer ist ein Base64-Bild?

Etwa 33 Prozent größer als die Originaldatei, weil aus 3 Bytes 4 Zeichen werden. Aus einem Icon mit 3 KB werden etwa 4 KB Text.

Funktionieren Base64-Bilder in E-Mails?

Nicht zuverlässig. Unter anderem Gmail und Outlook für Windows zeigen Data-URI-Bilder nicht an. Nimm für E-Mails gehostete Bilder oder CID-Anhänge.

Ist Base64 schlecht für SEO?

Nicht direkt, aber ein eingebettetes Bild hat keine eigene URL. Es erscheint deshalb kaum in der Bildersuche, so wie es eine normale Datei mit aussagekräftigem Namen tut, und schweres HTML bremst die Seite. Nimm normale Dateien für Bilder, die gefunden werden sollen.

Wird mein Bild beim Umwandeln hochgeladen?

Nein. Das Bild wird in deinem Browser gelesen und umgewandelt und nie an einen Server geschickt. Das Tool ist kostenlos und funktioniert offline, sobald die Seite geladen ist.

Kann ich einen Base64-String wieder in ein Bild umwandeln?

Ja. Füge den Base64-Text oder die ganze Data URI in dasselbe Tool ein. Das Bild wird in der Vorschau gezeigt, und mit Herunterladen speicherst du es mit der richtigen Dateiendung.