Data-URI-Generator

Wandeln Sie Text oder eine Datei in eine data:-URL für HTML, CSS oder JSON um, wahlweise mit Base64 oder Prozentkodierung. Fügen Sie eine vorhandene Data-URI ein, um MIME-Typ, Zeichensatz und Größe zu prüfen, eine Vorschau zu sehen und den Inhalt herunterzuladen.

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Geben Sie den Text ein oder wählen Sie die Datei aus, die Sie einbetten möchten.
  2. Prüfen oder ergänzen Sie den MIME-Typ, etwa image/png oder image/svg+xml, und wählen Sie „Base64“ oder „Prozentkodierung“.
  3. Kopieren Sie die erzeugte Data-URI in Ihr HTML, CSS oder JSON.
  4. Um eine vorhandene Data-URI zu untersuchen, wechseln Sie zu „Analysieren“ und fügen sie dort ein. Sie sehen dann MIME-Typ, Zeichensatz, Größe und eine Vorschau und können die eingebettete Datei herunterladen.

Syntax von Data-URIs

Eine Data-URI, definiert in RFC 2397, transportiert eine kleine Datei direkt in der URL selbst:

data:[<mediatype>][;base64],<data>

data:text/plain;charset=UTF-8,Hello%20world
data:image/png;base64,iVBORw0KGgo...

Der Medientyp teilt dem Browser mit, wie die Daten zu interpretieren sind; fehlt er, wird text/plain;charset=US-ASCII angenommen. Das Flag ;base64 bedeutet, dass der Teil nach dem Komma Base64 ist. Ohne dieses Flag sind die Daten einfacher Text, in dem Sonderzeichen prozentkodiert sind.

Base64 oder Prozentkodierung

Base64 ist die richtige Wahl für Binärdateien wie PNG, JPEG, WebP, Schriftarten und PDFs. Es vergrößert die Daten stets um etwa 33 %. Bei Textformaten ist die Prozentkodierung oft kleiner, da die meisten Zeichen unverändert bleiben und nur wenige, etwa <, >, #, % und doppelte Anführungszeichen, maskiert werden müssen. Damit eignet sie sich gut für SVG-Icons, und das lesbare Ergebnis lässt sich zudem besser mit gzip oder Brotli komprimieren. Jedes Byte von Nicht-ASCII-Text wird allerdings zu drei Zeichen, sodass Base64 bei chinesischem oder kyrillischem Text meist kürzer ist. Probieren Sie im Zweifel beide Optionen aus und behalten Sie das kürzere Ergebnis.

/* Prozentkodiertes SVG in CSS: innen einfache Anführungszeichen, # als %23 geschrieben */
.dot { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Ccircle cx='4' cy='4' r='4' fill='%23f60'/%3E%3C/svg%3E"); }

Wann sich das Einbetten lohnt

Eine Data-URI spart eine HTTP-Anfrage, doch die Daten werden Teil des Dokuments, das sie enthält:

  • Kein separates Caching. Ein in HTML eingebettetes Bild wird mit jeder Seite erneut heruntergeladen. Ein in ein Stylesheet eingebettetes Bild wird zusammen mit dieser Datei zwischengespeichert, und jede Änderung daran macht das gesamte Stylesheet im Cache ungültig.
  • Langsamere erste Darstellung. Große Data-URIs in CSS verzögern das Rendern, da der Browser zuerst das gesamte Stylesheet herunterladen und parsen muss.
  • Größenzuschlag. Base64 fügt ein Drittel hinzu, das durch Komprimieren des HTML oder CSS nur teilweise wieder eingespart wird.

Mit HTTP/2 und HTTP/3 sind zusätzliche Anfragen günstig. Betten Sie daher nur kleine Ressourcen von wenigen Kilobyte ein, etwa Icons, winzige Platzhalter oder einen kritischen Hintergrund, und liefern Sie alles andere als normale Dateien aus. Websites mit einer Content Security Policy müssen data: in img-src bzw. font-src erlauben, damit eingebettete Bilder und Schriftarten geladen werden.

Häufig gestellte Fragen

Gibt es eine Größenbeschränkung für Data-URIs?

RFC 2397 legt keine Grenze fest, und moderne Browser akzeptieren Data-URIs von mehreren Megabyte in Bildern und Stylesheets. Große Data-URIs sind trotzdem keine gute Idee: Sie blähen die Seite auf, lassen sich nicht separat cachen und brauchen länger zum Parsen.

Warum öffnet sich eine Data-URI nicht, wenn ich auf einen Link dazu klicke?

Die meisten Browser verhindern zum Schutz vor Phishing, dass Webseiten das Hauptfenster zu einer data:-URL navigieren. Verwenden Sie Data-URIs in Bildern, CSS oder Download-Links, oder fügen Sie die URI hier unter „Analysieren“ ein, um eine Vorschau zu sehen und den Inhalt herunterzuladen.

Wie verwende ich eine Data-URI in HTML und CSS?
Setzen Sie sie überall dort ein, wo eine URL erwartet wird: <img src="data:image/png;base64,..."> in HTML oder background-image: url("data:image/svg+xml,...") in CSS. Setzen Sie den Wert in CSS in Anführungszeichen, besonders bei prozentkodiertem SVG.
Muss ich einen Zeichensatz angeben?
Bei Texttypen wie text/plain oder text/html, die Nicht-ASCII-Zeichen enthalten, ja: Fügen Sie ;charset=UTF-8 nach dem Medientyp hinzu, sonst kann der Standardwert US-ASCII diese Zeichen verfälschen. Binäre Typen wie image/png benötigen keinen Zeichensatz.
Wie wandle ich ein Bild in eine Data-URI um?
Wählen Sie die Bilddatei hier aus oder verwenden Sie das Tool Bild zu Base64. Es kann das Bild vorher auch skalieren oder konvertieren und gibt fertige HTML-, CSS- und Markdown-Snippets aus.