Torna al blog

Convertire un Data URI in SVG modificabile: guida sicura

Scopri come recuperare un SVG modificabile da un Data URI, distinguere Base64 e URL encoding, validare XML ed evitare rischi comuni.

9 lug 2026SVGData URIBase64Decoder SVGFrontendSVGView

Convertire un Data URI in SVG modificabile

Gli SVG Data URI sono comodi per piccole icone inline in HTML o CSS. Diventano meno comodi quando hai solo una lunga stringa data:image/svg+xml... e devi recuperare un SVG modificabile.

La regola e semplice: separa la stringa alla prima virgola, decodifica solo il payload e valida l'SVG prima di salvarlo. Questa guida prende spunto dalla discussione Stack Overflow Converting a data URI back to SVG.

Riconosci il formato

data:image/svg+xml;base64,PHN2ZyB4bWxucz0i...
data:image/svg+xml,%3Csvg%20xmlns%3D%22http...

Prima della virgola trovi tipo MIME e codifica. Dopo la virgola trovi il contenuto SVG codificato.

Decodificare Base64

function dataUriBase64ToSvg(dataUri) {
  const [, payload] = dataUri.split(",", 2);

  if (!payload) {
    throw new Error("Invalid SVG Data URI");
  }

  return new TextDecoder().decode(
    Uint8Array.from(atob(payload), (char) => char.charCodeAt(0)),
  );
}

TextDecoder conserva meglio testo UTF-8, simboli e metadati rispetto a una conversione ASCII improvvisata.

Decodificare URL encoding

function dataUriEncodedToSvg(dataUri) {
  const [, payload] = dataUri.split(",", 2);

  if (!payload) {
    throw new Error("Invalid SVG Data URI");
  }

  return decodeURIComponent(payload);
}

Questa forma e frequente nei background CSS perche puo restare piu corta e leggibile.

Decoder universale

function dataUriToSvg(dataUri) {
  const [header, payload] = dataUri.split(",", 2);

  if (!header?.startsWith("data:image/svg+xml") || !payload) {
    throw new Error("Expected an SVG Data URI");
  }

  if (header.includes(";base64")) {
    return new TextDecoder().decode(
      Uint8Array.from(atob(payload), (char) => char.charCodeAt(0)),
    );
  }

  return decodeURIComponent(payload);
}

Dopo la decodifica, verifica che esista una radice <svg> e che il risultato sia XML valido.

Buone pratiche

  1. Valida l'XML recuperato.
  2. Rimuovi script, event handler, riferimenti esterni e foreignObject.
  3. Controlla viewBox, dimensioni e clipping.
  4. Apri il risultato in SVG Viewer.
  5. Esporta una nuova stringa con SVG to Data URI.

Errori comuni

  • Decodificare l'intera stringa invece del payload.
  • Usare Base64 su SVG codificato come URL.
  • Riutilizzare SVG non affidabile senza sanificazione.
  • Dimenticare che CSS, HTML e JSON richiedono escaping diverso.

Workflow SVGView

Decodifica il Data URI, incolla l'SVG in SVG Viewer, pulisci il markup con SVG Sanitizer, ottimizza con SVG Optimizer e rigenera la Data URI con SVG to Data URI.

Articoli correlati

Continua a esplorare i flussi di lavoro SVG e i consigli per la produzione.