Konwerter SVG na Base64

Kodowanie ikon, logo i ilustracji SVG do Base64 na potrzeby znaczników img, tła w CSS i JSON. Przed kodowaniem plik SVG można też zrasteryzować do PNG, JPEG lub WebP.

Działa w całości w przeglądarce. Nic nie jest wysyłane.

Jak używać

  1. Przeciągnij plik .svg na pole upuszczania, kliknij, aby go wybrać, lub wklej obraz.
  2. Pozostaw opcję „Zachowaj oryginał”, aby zakodować sam kod SVG, albo wybierz PNG, JPEG lub WebP, aby zamienić go na piksele.
  3. Przy rasteryzacji ustaw „Maks. szerokość”, aby określić rozmiar w pikselach.
  4. Skopiuj CSS background-image do arkusza stylów albo data URI, czysty Base64, znacznik img lub wersję Markdown.

SVG jako data URI

SVG (Scalable Vector Graphics, typ MIME image/svg+xml) opisuje kształty jako tekst XML, dzięki czemu pozostaje ostry w każdym rozmiarze. Jego Base64 zwykle zaczyna się od PHN2Zy (zakodowane <svg) lub od PD94bWw, gdy plik zaczyna się deklaracją XML.

Gdy SVG jest używany jako obraz, element główny musi mieć atrybut xmlns="http://www.w3.org/2000/svg". Wiele fragmentów skopiowanych z kodu HTML go pomija, a wtedy data URI nic nie wyświetla. W trybie obrazu blokowane są też zasoby zewnętrzne, więc czcionki internetowe i podlinkowane obrazy wewnątrz SVG się nie wczytają; najpierw zamień tekst na ścieżki lub osadź te zasoby.

Base64 czy kodowanie procentowe?

Ponieważ SVG jest już tekstem, data URI może przenosić kod bezpośrednio, a w kodowaniu procentowym trzeba zapisać tylko kilka znaków (<, >, #, % i cudzysłowy). W przypadku typowej ikony w CSS taki zapis jest krótszy niż Base64 i lepiej kompresuje się za pomocą gzip. Base64 jest bezpieczniejszym wyborem, gdy ciąg przechodzi przez systemy zniekształcające cudzysłowy lub znaki specjalne albo gdy API oczekuje Base64.

/* Base64 */
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0i...");

/* Kodowanie procentowe */
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'...");

Aby utworzyć wersję w kodowaniu procentowym, użyj narzędzia Generator data URI i wybierz opcję „Kodowanie procentowe”.

Oczyszczaj niezaufane pliki SVG

SVG może zawierać elementy <script>, atrybuty obsługi zdarzeń, takie jak onload, oraz linki do innych dokumentów. Przeglądarki nie uruchamiają skryptów w pliku SVG wyświetlanym przez <img> lub jako tło CSS, ale ten sam plik osadzony bezpośrednio w HTML lub otwarty samodzielnie może je uruchomić. Jeśli użytkownicy mogą przesyłać pliki SVG do aplikacji, oczyść je przed zapisaniem lub osadzeniem, np. za pomocą DOMPurify. Base64 jedynie ukrywa kod przed pobieżnym spojrzeniem; nie czyni go bezpiecznym.

Najczęściej zadawane pytania

Co jest lepsze dla SVG: Base64 czy kodowanie procentowe?

W przypadku SVG w CSS kodowanie procentowe zwykle daje krótszy wynik i pozostaje czytelne. Base64 jest bardziej niezawodny, gdy ciąg przechodzi przez inne systemy lub gdy API wymaga Base64.

Dlaczego data URI z SVG się nie wyświetla?
Najczęstsze przyczyny to brak atrybutu xmlns w elemencie głównym, niezakodowany znak # w URI z kodowaniem procentowym oraz czcionki lub obrazy, które SVG wczytuje z innych plików.
Czy można przekonwertować SVG na ciąg Base64 w formacie PNG?

Tak. Wybierz PNG w polu „Konwertuj na”. Przeglądarka wyrenderuje SVG do pikseli, a opcja „Maks. szerokość” pozwala zmniejszyć wynik.

Czy można zdekodować data URI z SVG z powrotem do pliku?
Tak. Wklej go do narzędzia Base64 na SVG, aby zobaczyć podgląd i pobrać plik .svg.