Voltar ao blog

Converter Data URI de volta para SVG editavel

Aprenda a recuperar SVG editavel a partir de um Data URI, detectar Base64 ou URL encoding, validar XML e evitar riscos de seguranca comuns.

9/07/2026SVGData URIBase64Decodificador SVGFrontendSVGView

Converter Data URI de volta para SVG editavel

SVG Data URI e pratico para pequenos icones inline em HTML ou CSS. O problema surge quando voce recebe uma string longa data:image/svg+xml... e precisa voltar para um SVG editavel.

A regra segura e simples: separe a string na primeira virgula, decodifique apenas o payload e valide o SVG antes de salvar. Este guia foi inspirado pela discussao do Stack Overflow Converting a data URI back to SVG.

Identifique o formato

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

Antes da virgula ficam o tipo MIME e a codificacao. Depois da virgula fica o conteudo SVG codificado.

Decodificar 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 preserva melhor texto UTF-8, simbolos e metadados do que uma conversao ASCII improvisada.

Decodificar URL encoding

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

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

  return decodeURIComponent(payload);
}

Esse formato aparece bastante em backgrounds CSS porque pode ser mais curto e facil de revisar.

Decoder universal

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);
}

Depois de decodificar, confirme que existe uma raiz <svg> e que o resultado pode ser lido como XML.

Boas praticas

  1. Valide o XML recuperado.
  2. Remova scripts, manipuladores de evento, referencias externas e foreignObject.
  3. Verifique viewBox, tamanho e recorte.
  4. Abra o resultado no SVG Viewer.
  5. Exporte novamente com SVG to Data URI.

Erros comuns

  • Decodificar a string inteira em vez do payload.
  • Usar Base64 em um SVG codificado como URL.
  • Reutilizar SVG nao confiavel sem sanitizar.
  • Esquecer que CSS, HTML e JSON exigem escaping diferente.

Workflow SVGView

Decodifique o Data URI, cole o SVG no SVG Viewer, limpe o markup com SVG Sanitizer, otimize com SVG Optimizer e gere uma nova string com SVG to Data URI.

Artigos relacionados

Continue explorando fluxos de trabalho com SVG e dicas para produção.