Datei hochladen
  1. base64hub
  2. Bild-Tools
  3. SVG-Data-URI

SVG in Data-URI

Fügen Sie SVG-Markup ein und erhalten Sie eine Data-URI für CSS-url() oder ein <img>. Eine Tabelle vergleicht Base64, URL-kodierte und optimierte Varianten, roh und mit gzip, damit Sie die kürzeste wählen können.

Kostenlos ohne Anmeldung, ohne Limits Lokal kein Upload 3 Wege Größen im Vergleich, inklusive gzip Aktualisiert 27.10.2026
Nutzdaten –URI-Länge –Overhead –

Wird in Ihrem Browser verarbeitet. Diese Seite kann Ihre Daten nirgendwohin senden – woher wir das wissen

So wandeln Sie SVG in eine Data-URI um

  1. Fügen Sie das SVG-Markup in das Feld Text ein. Öffnen Sie eine .svg-Datei in einem beliebigen Texteditor, um es zu kopieren. Das Feld enthält anfangs ein Beispiel-Icon.
  2. MIME-Typ ist bereits image/svg+xml, und Kodierung steht auf Optimiertes SVG.
  3. Sehen Sie sich die Tabelle unter den Optionen an. Sie listet URI-Länge und gzip-Größe für Base64, URL-kodiert und Optimiertes SVG auf, markiert die kleinste Variante und hat für jede eine Schaltfläche Verwenden.
  4. Wählen Sie ein Ausgabeformat: reine Data-URI, CSS-url(), HTML-<img>, HTML-<a> oder Markdown. Dann Ausgabe kopieren.

Sie können auch im Modus Aus Datei eine .svg ablegen; dann gibt es Base64 und URL-Kodierung der Datei, so wie sie ist. Die optimierte Variante und die Vergleichstabelle brauchen das Markup im Textfeld.

Größe von SVG als Base64 und URL-kodiert

Für das eingebaute Beispiel, ein 309 Byte großes Icon mit abgerundetem Quadrat, einem Kreis und einer Linie, zeigt die Tabelle:

KodierungURI-LängeMit gzip
Base64438337
URL-kodiert492239
Optimiertes SVG347220

Einfache URL-Kodierung ist roh die längste, weil jedes Leerzeichen, Anführungszeichen, <, > und jeder Zeilenumbruch zu drei Zeichen wird. Nach gzip schlägt sie Base64 aber deutlich, denn das Markup behält seine sich wiederholende Struktur, während Base64 sie verwürfelt. Stylesheets werden fast immer komprimiert ausgeliefert, also ist die gzip-Spalte diejenige, die bei den Nutzern ankommt.

Optimiertes SVG gewinnt beide Spalten. Bei einem kleinen Dreieck-Icon mit 103 Bytes ist der Abstand derselbe: Base64 166 Zeichen, URL-kodiert 172, optimiert 136. SVG in Base64 enthält einen Vergleich über einen ganzen Satz Icons.

Was „Optimiertes SVG“ macht

Der Optimierer nimmt vier Änderungen am Markup vor:

  1. Er fasst jede Folge von Leerraum, auch Zeilenumbrüche, zu einem Leerzeichen zusammen und kürzt die Enden.
  2. Er ersetzt " durch ', aber nur, wenn das SVG noch kein ' enthält.
  3. Er prozentkodiert mit encodeURIComponent und setzt dann die Zeichen zurück, die in einer URI sicher sind: Leerzeichen, =, :, /, , und ;.
  4. Er schreibt die verbleibenden Escapes in Kleinbuchstaben (%3c statt %3C), was sich etwas besser mit gzip komprimieren lässt: 220 statt 222 Bytes beim Beispiel.

Das Ergebnis für das Dreieck-Icon:

data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M8 1 15 15H1z' fill='%23e33'/%3e%3c/svg%3e

Das # der Farbe wurde zu %23. Das Escape ist zwingend: Ein nicht maskiertes # leitet ein URL-Fragment ein, und alles danach wird stillschweigend verworfen.

Regeln für Anführungszeichen und Kontext

Die optimierte Ausgabe enthält einfache Anführungszeichen, rohe Leerzeichen und rohe Klammern. Innerhalb doppelter Anführungszeichen ist das in Ordnung, sonst nirgends:

.icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' ...%3e"); }
<img src="data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' ...%3e" alt="">

Ein url(...) ohne Anführungszeichen bricht an den Leerzeichen, und ein Attribut in einfachen Anführungszeichen endet am ersten '. Wird die URI in JavaScript zusammengesetzt, von einer Template-Engine eingefügt oder in ein System kopiert, das Anführungszeichen umschreibt, ist Base64 die sicherere Wahl: Es enthält nur Buchstaben, Ziffern, +, / und = und übersteht damit jeden Kontext. Mit der Schaltfläche Verwenden in der Tabelle wechseln Sie.

Die übrigen Einschränkungen sind klein. Optimiertes SVG ist immer UTF-8 und ignoriert mit einer Warnung jeden anderen gewählten Zeichensatz. Das Zusammenfassen von Leerraum kann Text in <text>-Elementen verändern, die Leerzeichen erhalten. Und das SVG braucht weiterhin xmlns="http://www.w3.org/2000/svg" am Wurzelelement, wie jedes SVG, das als Bild verwendet wird.

Der Optimierer in JavaScript

Dieselbe Umwandlung passt in ein paar Zeilen, für Build-Skripte oder CSS-in-JS:

function svgToDataUri(svg) {
  let s = svg.trim().replace(/\s+/g, " ");
  if (!s.includes("'")) s = s.replaceAll('"', "'");
  const keep = { "%20": " ", "%3D": "=", "%3A": ":", "%2F": "/", "%2C": ",", "%3B": ";" };
  return "data:image/svg+xml," + encodeURIComponent(s)
    .replace(/%[0-9A-F]{2}/g, m => keep[m] || m.toLowerCase());
}

Sie erzeugt die oben gezeigte Dreieck-URI. Mehr zum Kodieren im Browser und in Node finden Sie unter Base64 in JavaScript. Um eine vorhandene SVG-Data-URI zu lesen, fügen Sie sie in Base64 in SVG oder den Data-URI-Parser ein.

Häufige Fragen

Wie bringe ich ein SVG am kürzesten in eine Data-URI?

Meist mit der optimierten URL-Kodierung: Leerraum zusammengefasst, doppelte Anführungszeichen durch einfache ersetzt und nur die nötigen Zeichen maskiert. Für das Beispiel-Icon sind das 347 Zeichen gegenüber 438 bei Base64.

Warum bricht mein URL-kodiertes SVG das CSS?

Meist kollidieren die Anführungszeichen. Die optimierte Ausgabe verwendet innen einfache Anführungszeichen und muss deshalb in doppelten stehen: url("data:image/svg+xml,..."). Auch ein nicht maskiertes # in einer Farbe wie #f00 schneidet die URI ab; es muss %23 heißen.

Verändert die optimierte Kodierung das Aussehen des SVG?

Bei normalen Grafiken nicht. Sie fasst nur Leerraum zusammen und tauscht die Art der Anführungszeichen. Text in <text> mit xml:space="preserve" oder einer CSS-Regel white-space kann seine zusätzlichen Leerzeichen verlieren.

Sollte eine SVG-Data-URI ;charset=utf-8 enthalten?

Nötig ist das nicht. SVG ist XML, und XML wird als UTF-8 gelesen, sofern die Datei keine andere Kodierung angibt; Beschriftungen mit Umlauten funktionieren also auch ohne. Zeichensatz steht anfangs auf (keiner); UTF-8 zu wählen fügt 14 Zeichen hinzu und schadet nicht.