Ir al contenido principal
Bethemesh
GuíaBuenas prácticas

Optimizar un archivo SVG sin alterar su apariencia

Aprende a optimizar SVG de forma segura: elimina datos innecesarios, simplifica el XML, reduce precisión, limpia estilos y valida que el resultado visual no cambie.

Publicado el 31 de agosto de 2026Lectura : 21 minPor Bethemesh Team
Intermedio
Ilustración de un archivo SVG antes y después de su optimización, con código XML simplificado y el mismo resultado visual
Mostrar el contenido
  1. ¿Por qué optimizar un SVG?
  2. Empieza por comprender qué contiene el archivo
  3. Conserva siempre una fuente maestra
  4. Establece una medida de referencia
  5. Tamaño bruto y tamaño transferido
  6. Primera categoría: eliminar comentarios innecesarios
  7. Segunda categoría: examinar <metadata>
  8. Datos propios de programas gráficos
  9. Minificar el XML
  10. No confundas legibilidad con eficiencia de producción
  11. Reducir la precisión numérica con cuidado
  12. ¿Cuánta precisión conservar?
  13. Precisión y pequeños iconos
  14. Precisión y grandes ilustraciones
  15. Simplificar valores
  16. Atributos por defecto
  17. Atributos redundantes
  18. Estilos inline
  19. CSS interno
  20. Clases generadas automáticamente
  21. IDs
  22. Acortar IDs
  23. Eliminar IDs aparentemente sin uso
  24. <defs>
  25. Gradientes duplicados
  26. clipPath
  27. Máscaras
  28. Filtros
  29. Filtros y área de renderizado
  30. Paths
  31. Comandos relativos y absolutos
  32. Eliminar comandos redundantes
  33. Simplificación geométrica
  34. Fusionar paths
  35. Separar paths
  36. Formas primitivas frente a paths
  37. Círculos y elipses
  38. Polígonos y polilíneas
  39. Grupos <g>
  40. Eliminar grupos vacíos
  41. Aplanar transformaciones
  42. Matrices
  43. viewBox
  44. width y height
  45. Espacio vacío del viewBox
  46. Color
  47. Colores con nombre
  48. No cambies colores por aproximación sin decidirlo
  49. Contraste
  50. Conversión de colores
  51. Opacidad
  52. fill="none"
  53. stroke="none"
  54. Trazos y escalado
  55. Texto
  56. Fuentes
  57. Texto convertido a contornos
  58. Imágenes raster embebidas
  59. Base64
  60. Recursos externos
  61. SVG inline frente a archivo externo
  62. Iconos repetidos
  63. <symbol> y <use>
  64. Accesibilidad
  65. <title>
  66. <desc>
  67. aria-hidden
  68. Seguridad
  69. Scripts
  70. Eventos
  71. Enlaces
  72. foreignObject
  73. Optimización no es sanitización
  74. Metadatos y privacidad
  75. Licencias y atribución
  76. Compatibilidad de navegadores
  77. Rendimiento de renderizado
  78. Número de nodos
  79. Paths con miles de puntos
  80. Filtros costosos
  81. Animaciones
  82. CSS externo
  83. JavaScript
  84. Tests visuales
  85. Diferencias subpíxel
  86. Pruebas en varios tamaños
  87. Pruebas en diferentes fondos
  88. Modo oscuro
  89. currentColor
  90. Variables CSS
  91. Responsive SVG
  92. preserveAspectRatio
  93. Optimización de un icono simple
  94. Optimización de un logo
  95. Optimización de una ilustración
  96. Optimización de un gráfico
  97. SVG generado por código
  98. SVG exportado de un editor
  99. Herramientas automáticas
  100. Configuración reproducible
  101. Versionar la herramienta
  102. Revisar los diffs
  103. CI
  104. Presupuesto de tamaño
  105. Presupuesto de complejidad
  106. ¿Cuánto se puede ahorrar?
  107. ¿Optimizar siempre?
  108. Compresión HTTP
  109. Caché
  110. SVG inline y caché
  111. Sprite SVG
  112. Tree shaking de iconos
  113. Duplicación en bundles
  114. SVG frente a PNG
  115. SVG frente a icon fonts
  116. Data URI
  117. Codificación de caracteres
  118. XML válido
  119. Namespaces
  120. Doctype y declaraciones XML
  121. Compatibilidad con editores
  122. Orden de las operaciones
  123. No optimices manualmente después del build
  124. Optimización con pérdida
  125. Transformaciones sin pérdida
  126. Define tu nivel de riesgo
  127. Optimizar con Bethemesh
  128. Flujo recomendado
  129. Checklist antes de publicar
  130. Errores frecuentes
  131. Lo que debes recordar
  132. Preguntas frecuentes

Un archivo SVG puede ser visualmente muy simple y contener, sin embargo, una cantidad sorprendente de información innecesaria. Los programas de diseño pueden añadir comentarios, metadatos, identificadores internos, grupos, estilos, coordenadas con una precisión excesiva y estructuras destinadas a facilitar la edición, no la entrega en una página web.

Optimizar SVG consiste en reducir esa complejidad sin alterar lo que el archivo debe mostrar o hacer.

La parte importante de la frase es «sin alterar». Un SVG no es simplemente una imagen comprimida: es un documento estructurado. Puede contener estilos, referencias, máscaras, filtros, texto, elementos accesibles e incluso comportamiento. Eliminar algo porque parece redundante puede romper el resultado.

¿Por qué optimizar un SVG?

Un SVG más limpio puede aportar:

  • menos bytes transferidos;
  • menos código que analizar;
  • archivos más fáciles de revisar;
  • menor ruido generado por herramientas gráficas;
  • mejor integración en un pipeline web;
  • menos información interna expuesta públicamente.

Para un icono de 600 bytes, ahorrar 50 bytes importa poco. Para una biblioteca de cientos de ilustraciones o un SVG exportado de varios cientos de kilobytes, la limpieza puede ser mucho más relevante.

Empieza por comprender qué contiene el archivo

Antes de optimizar, identifica el tipo de SVG.

Puede tratarse de:

  • un icono simple;
  • un logo;
  • una ilustración compleja;
  • un gráfico;
  • un diagrama;
  • un SVG con texto;
  • un componente interactivo;
  • un recurso que utiliza CSS externo;
  • un símbolo destinado a un sprite.

Las transformaciones seguras para un icono autónomo no son necesariamente seguras para un documento que utiliza IDs desde JavaScript o CSS.

Si necesitas revisar primero los fundamentos, consulta Entender el formato SVG.

Conserva siempre una fuente maestra

No conviertas la versión optimizada en tu único archivo editable.

Conserva un master procedente de la herramienta de diseño o una versión fuente legible. Genera el SVG optimizado como un derivado de producción.

Así podrás volver a exportar, modificar la ilustración y cambiar las reglas de optimización sin perder información útil.

Establece una medida de referencia

Antes de modificar el archivo, registra:

  • tamaño en bytes;
  • dimensiones o viewBox;
  • apariencia;
  • comportamiento;
  • elementos accesibles;
  • referencias externas o internas importantes.

Después de cada transformación importante, compara con esa referencia.

Tamaño bruto y tamaño transferido

El peso del archivo en disco no siempre coincide con los bytes transferidos por la red.

SVG es texto y suele comprimirse bien mediante Brotli o gzip a nivel HTTP.

Una reducción de 10 KB en el XML puede producir una reducción diferente una vez comprimida.

Mide ambos valores cuando el rendimiento de red sea el objetivo.

Primera categoría: eliminar comentarios innecesarios

Los comentarios XML utilizados durante el diseño o la generación no afectan normalmente al renderizado.

Por ejemplo:

<!-- Exported from design-final-v27.ai -->

puede no tener ninguna utilidad en producción.

Sin embargo, un comentario puede tener valor para mantenimiento o licencias. No lo elimines automáticamente si forma parte de una obligación de atribución.

Segunda categoría: examinar <metadata>

SVG permite incluir un elemento <metadata>.

Puede contener información útil o simplemente datos del programa de edición.

Antes de eliminarlo, comprueba si contiene:

  • autoría;
  • licencia;
  • copyright;
  • información editorial;
  • datos internos;
  • información generada automáticamente.

La optimización no debería borrar a ciegas información jurídica que necesitas conservar.

Datos propios de programas gráficos

Los editores vectoriales pueden añadir:

  • namespaces específicos;
  • nombres de capas;
  • coordenadas auxiliares;
  • identificadores de objetos;
  • información de la aplicación;
  • datos para volver a editar el documento.

Gran parte de esa información no es necesaria para mostrar el SVG en un navegador.

Un optimizador puede retirarla del derivado público mientras el master conserva toda la información de edición.

Minificar el XML

Los espacios, saltos de línea e indentación mejoran la lectura humana, pero aumentan el tamaño bruto.

Una versión de producción puede minificarse:

<svg viewBox="0 0 24 24"><path d="..."/></svg>

La ganancia depende del tamaño y la estructura del archivo.

No confundas legibilidad con eficiencia de producción

No es necesario elegir entre código mantenible y archivo pequeño.

Puedes conservar:

  • un master formateado y documentado;
  • un derivado minificado para producción.

Este patrón es más seguro que editar manualmente el archivo minificado.

Reducir la precisión numérica con cuidado

Las herramientas de diseño pueden exportar valores como:

12.000000
4.58372941

En muchos casos, parte de esa precisión no produce una diferencia visible.

Reducir decimales puede ahorrar bytes en:

  • coordenadas;
  • transformaciones;
  • tamaños;
  • curvas;
  • gradientes.

Pero una reducción demasiado agresiva puede cambiar la geometría.

¿Cuánta precisión conservar?

No existe un número universal.

Depende de:

  • tamaño del viewBox;
  • escala de visualización;
  • complejidad de los paths;
  • transformaciones acumuladas;
  • sensibilidad visual.

Prueba el resultado en el tamaño real y también ampliado para detectar deformaciones.

Precisión y pequeños iconos

En un icono de 16 o 24 píxeles, una pequeña variación de coordenadas puede afectar al alineamiento visual.

No supongas que «más pequeño» significa «menos sensible».

Los trazos finos y las formas simétricas pueden mostrar rápidamente los errores de redondeo.

Precisión y grandes ilustraciones

En un viewBox muy amplio, algunos decimales pueden ser completamente irrelevantes.

La tolerancia debe relacionarse con la escala del documento.

Simplificar valores

Algunas representaciones numéricas pueden acortarse sin cambiar su significado.

Por ejemplo, según el contexto:

0.5

puede sustituir una representación más larga equivalente.

Los optimizadores automatizan este tipo de normalización.

Atributos por defecto

SVG define valores por defecto para numerosas propiedades.

Un exportador puede escribir atributos que el navegador ya asumiría.

Eliminar un atributo explícito puede ser seguro si:

  • el valor coincide realmente con el default;
  • no depende de herencia;
  • no existe CSS que espere encontrarlo;
  • no cambia la semántica.

Atributos redundantes

Un elemento puede heredar una propiedad de su padre y repetirla de forma innecesaria.

Consolidar estilos puede reducir el archivo, pero requiere comprender la cascada.

Estilos inline

Un SVG puede contener muchos atributos como:

fill="#000000"
stroke="none"

repetidos en cada elemento.

A veces pueden trasladarse a un grupo padre o a una regla CSS interna.

Pero hacerlo cambia la estructura de herencia y debe validarse.

CSS interno

Un bloque <style> puede ser más eficiente cuando muchas formas comparten propiedades.

En otros casos, introducir clases y CSS para dos elementos aumenta la complejidad.

La optimización depende del documento real.

Clases generadas automáticamente

Los editores pueden crear nombres como:

.cls-1
.st0
.style27

Renombrarlos o eliminarlos puede ahorrar muy poco.

Además, pueden ser utilizados por CSS o JavaScript externo.

No optimices identificadores sin saber si forman parte de una interfaz pública.

IDs

Los IDs merecen especial atención.

Pueden ser utilizados por:

  • url(#gradient);
  • máscaras;
  • filtros;
  • clipPath;
  • <use>;
  • CSS;
  • JavaScript;
  • fragmentos de URL;
  • tests.

Cambiar un ID sin actualizar todas sus referencias rompe el SVG.

Acortar IDs

En un SVG completamente autónomo, un optimizador puede transformar un ID largo en uno corto y actualizar todas las referencias.

Eso puede ser seguro si se analiza todo el documento.

No es seguro si código externo utiliza el ID original.

Eliminar IDs aparentemente sin uso

Un ID puede no tener referencias dentro del propio archivo y seguir siendo necesario para un script externo.

Antes de eliminarlo, determina cómo se integra el SVG.

<defs>

<defs> almacena recursos que no se renderizan directamente, como:

  • gradientes;
  • símbolos;
  • filtros;
  • máscaras;
  • patrones;
  • clipping paths.

Eliminar definiciones no utilizadas puede ahorrar bytes.

Pero necesitas un análisis correcto de referencias.

Gradientes duplicados

Las herramientas gráficas pueden exportar varios gradientes idénticos con IDs distintos.

Fusionarlos puede reducir el documento.

Comprueba que realmente tienen los mismos atributos, transformaciones y unidades.

clipPath

Los clipping paths pueden ser esenciales para la composición.

Algunas herramientas generan clips que no producen ningún efecto visible porque coinciden exactamente con los límites del contenido.

Un optimizador avanzado puede detectarlos, pero es una transformación geométrica que merece validación.

Máscaras

Las máscaras pueden afectar a transparencia y composición de maneras menos evidentes.

No las elimines únicamente porque el resultado parece correcto sobre un fondo blanco.

Prueba diferentes fondos cuando corresponda.

Filtros

Sombras, desenfoques y efectos pueden utilizar <filter>.

Los filtros complejos pueden aumentar mucho el código y también el coste de renderizado.

Optimizar un filtro no es solo ahorrar bytes: puede implicar simplificar el efecto visual.

Filtros y área de renderizado

Un filtro mal definido puede extender el área de cálculo mucho más de lo necesario.

Esto afecta al rendimiento de renderizado aunque el archivo pese poco.

Paths

Los elementos <path> suelen concentrar gran parte de la información geométrica.

Un path puede optimizarse mediante:

  • reducción de precisión;
  • eliminación de comandos redundantes;
  • uso de comandos relativos o absolutos más cortos;
  • simplificación geométrica;
  • fusión de paths compatibles.

No todas estas operaciones tienen el mismo nivel de riesgo.

Comandos relativos y absolutos

Según las coordenadas, una forma puede expresarse de manera más corta con comandos relativos o absolutos.

Los optimizadores pueden elegir automáticamente la representación más compacta.

Eliminar comandos redundantes

Un path exportado puede contener movimientos o segmentos que no cambian la forma.

Suprimirlos puede ser seguro cuando el análisis geométrico es correcto.

Simplificación geométrica

Reducir el número de puntos de una curva puede ahorrar mucho, pero ya no es una simple minificación.

Estás modificando la geometría.

Utiliza tolerancias conservadoras y compara visualmente.

Fusionar paths

Dos paths con los mismos estilos pueden, en algunos casos, fusionarse.

Esto reduce etiquetas y atributos.

Sin embargo, puede cambiar:

  • orden de pintura;
  • reglas de relleno;
  • eventos;
  • IDs;
  • animaciones;
  • comportamiento CSS.

No lo hagas sin analizar el contexto.

Separar paths

Paradójicamente, en algunos casos separar una estructura compleja puede permitir una representación más eficiente o reutilizable.

La optimización no siempre consiste en reducir el número de elementos.

Formas primitivas frente a paths

Un rectángulo puede escribirse como <rect> o como <path>.

La representación más corta depende de los atributos y del contexto.

Mantener primitivas puede mejorar la legibilidad y facilitar modificaciones.

No conviertas todo a paths por principio.

Círculos y elipses

<circle> y <ellipse> suelen ser expresivos y compactos.

Convertirlos a curvas Bézier puede aumentar el código.

Polígonos y polilíneas

Para determinadas formas, <polygon> o <polyline> pueden ser más claros que un path.

Un optimizador debe comparar representaciones, no aplicar una regla universal.

Grupos <g>

Los grupos sirven para:

  • compartir estilos;
  • aplicar transformaciones;
  • estructurar el documento;
  • controlar eventos;
  • facilitar animaciones.

Un grupo sin atributos ni función puede ser redundante.

Eliminar grupos vacíos

Un <g> que no aporta estilo, transformación, ID ni semántica puede eliminarse y sus hijos pueden subir de nivel.

Pero comprueba primero que no lo utiliza código externo.

Aplanar transformaciones

Un exportador puede crear una cadena de transformaciones.

Aplicarlas directamente a las coordenadas puede simplificar el árbol.

Sin embargo, modifica los números y puede aumentar la longitud de los paths.

A veces el resultado es más grande.

Matrices

Las transformaciones pueden representarse mediante matrices.

Una matriz puede ser compacta, pero menos legible.

En producción esto puede ser aceptable si el master permanece disponible.

viewBox

El viewBox es uno de los atributos que menos conviene eliminar sin comprender sus consecuencias.

Define el sistema de coordenadas y permite que el SVG escale correctamente.

Un SVG responsive suele depender de él.

width y height

Eliminar dimensiones explícitas puede ser útil cuando quieres que CSS controle el tamaño, pero no siempre.

El comportamiento depende de cómo se inserta el SVG:

  • <img>;
  • inline;
  • background;
  • objeto embebido.

No conviertas una preferencia de integración en una regla universal de optimización.

Espacio vacío del viewBox

Un viewBox mucho mayor que el dibujo puede generar márgenes invisibles.

Ajustarlo al contenido puede mejorar la integración y, a veces, permitir coordenadas más compactas.

Pero cambia el encuadre del recurso y puede ser intencionado.

Color

Los colores pueden expresarse de varias formas.

Por ejemplo, algunos valores hexadecimales pueden acortarse:

#ffffff → #fff

cuando ambas formas son equivalentes.

Colores con nombre

En ciertos casos, un nombre CSS puede ser más corto que un hexadecimal; en otros, no.

La minificación puede elegir la representación más compacta compatible.

No cambies colores por aproximación sin decidirlo

Transformar #fefefe en #fff no es una minificación exacta: cambia el color.

Puede ser visualmente imperceptible, pero ya es una optimización con pérdida.

Debe ser una decisión consciente.

Contraste

Si modificas colores para simplificar una paleta, vuelve a comprobar el contraste cuando el SVG contiene información o texto relevante.

Puedes utilizar el verificador de contraste y consultar Contraste WCAG.

Conversión de colores

Cuando necesites revisar valores entre HEX, RGB o HSL, utiliza el convertidor de colores.

No cambies espacios o valores únicamente para reducir caracteres si la conversión altera el resultado.

Opacidad

opacity, fill-opacity y stroke-opacity pueden interactuar.

Combinar valores aparentemente equivalentes puede producir diferencias cuando existen grupos y composiciones.

fill="none"

No elimines fill="none" suponiendo que la ausencia de fill significa lo mismo.

El valor por defecto de fill no es none.

Este es un ejemplo clásico de optimización que puede cambiar el aspecto.

stroke="none"

Comprueba también los valores por defecto y la herencia antes de retirar atributos de trazo.

Trazos y escalado

vector-effect="non-scaling-stroke" puede ser funcionalmente importante.

Eliminarlo puede hacer que el grosor del trazo cambie al escalar el SVG.

Texto

Los elementos <text> mantienen contenido textual y pueden aportar accesibilidad, selección y menor tamaño.

Convertir texto a paths garantiza una apariencia más controlada pero puede aumentar enormemente el archivo y perder semántica.

Fuentes

Un SVG con texto depende de las fuentes disponibles salvo que incorpore o convierta glifos.

No existe una única estrategia correcta.

Para un logo, puede ser importante fijar la apariencia. Para un gráfico accesible, conservar texto real puede ser preferible.

Texto convertido a contornos

Los contornos pueden contener muchos puntos.

Antes de optimizarlos agresivamente, comprueba que las letras pequeñas no se deforman.

Imágenes raster embebidas

Un SVG puede contener una imagen JPEG o PNG mediante <image>.

Si está incrustada como Base64, el SVG puede pesar mucho aunque la parte vectorial sea mínima.

Optimiza también el recurso raster.

Base64

Codificar binarios en Base64 aumenta su representación textual.

En algunos casos, enlazar un recurso externo puede ser más eficiente; en otros, la autonomía del SVG es un requisito.

La decisión depende del contexto.

Recursos externos

Un SVG puede referenciar recursos externos.

Esto afecta a:

  • portabilidad;
  • seguridad;
  • caché;
  • CORS;
  • disponibilidad.

Una optimización que cambia referencias debe preservar el comportamiento.

SVG inline frente a archivo externo

Un SVG inline puede compartir CSS con la página y evitar una solicitud adicional.

Un archivo externo puede cachearse independientemente y mantener el HTML más pequeño.

No existe una opción universalmente más rápida.

Iconos repetidos

Si el mismo icono aparece muchas veces, un sprite SVG o un sistema de símbolos puede reducir duplicación.

Pero añade una arquitectura que debe justificarse por el uso real.

<symbol> y <use>

<symbol> permite definir contenido reutilizable.

<use> puede instanciarlo varias veces.

La optimización debe conservar IDs y referencias necesarios para este mecanismo.

Accesibilidad

Un SVG puede contener:

  • <title>;
  • <desc>;
  • roles;
  • aria-labelledby;
  • IDs asociados.

Un optimizador agresivo puede eliminar elementos que parecen no afectar a los píxeles pero sí afectan a usuarios de tecnologías de asistencia.

<title>

No elimines automáticamente <title> si forma parte de la estrategia accesible.

Por otro lado, un SVG decorativo puede no necesitar un título interno.

La decisión depende de cómo se inserta el recurso.

<desc>

Una descripción puede aportar contexto adicional a un gráfico complejo.

Eliminarla únicamente para ahorrar bytes puede ser una mala decisión.

aria-hidden

Un icono decorativo puede estar oculto para tecnologías de asistencia.

Asegúrate de que la optimización no cambie esa intención.

Seguridad

SVG es un formato activo y complejo.

Los archivos procedentes de usuarios o fuentes no confiables deben tratarse con una política de sanitización, no solo de optimización.

Minificar no significa sanitizar.

Scripts

Un SVG puede contener scripts en determinados contextos.

Si tu aplicación no necesita comportamiento activo, una política de sanitización puede prohibirlos.

No confíes en una reducción de tamaño como mecanismo de seguridad.

Eventos

Atributos de eventos y referencias pueden introducir comportamiento.

Los SVG no confiables deben procesarse con herramientas diseñadas para seguridad.

Enlaces

Un SVG puede contener enlaces.

Eliminar o conservarlos depende de la función del documento.

foreignObject

foreignObject permite incluir contenido de otros namespaces, como HTML.

Es potente pero aumenta la complejidad y las consideraciones de compatibilidad y seguridad.

Optimización no es sanitización

Un optimizador busca reducir o normalizar.

Un sanitizador aplica una política de seguridad.

Aunque algunas herramientas hagan ambas cosas parcialmente, son objetivos distintos.

Metadatos y privacidad

Los SVG pueden contener nombres de capas, rutas de archivos, comentarios o información del software.

Revisa los derivados públicos si proceden de documentos internos.

La ausencia de EXIF no significa ausencia de metadatos.

Licencias y atribución

No elimines comentarios o metadatos obligatorios por una licencia.

La reducción de bytes no justifica incumplir las condiciones de uso.

Compatibilidad de navegadores

SVG básico tiene un soporte excelente, pero algunas características avanzadas pueden comportarse de forma diferente.

Una optimización que sustituye una construcción por otra debe respetar los navegadores objetivo.

Rendimiento de renderizado

Un SVG pequeño en bytes puede ser caro de renderizar si contiene:

  • miles de nodos;
  • filtros complejos;
  • máscaras;
  • paths extremadamente detallados;
  • animaciones.

El peso de red y el coste de renderizado son métricas distintas.

Número de nodos

Reducir nodos innecesarios puede ayudar al análisis y al renderizado.

Pero no sacrifiques estructura útil únicamente por conseguir el menor contador posible.

Paths con miles de puntos

Una ilustración trazada automáticamente puede contener mucha más geometría de la necesaria.

La simplificación puede producir grandes mejoras, pero debe considerarse una transformación visual potencialmente con pérdida.

Filtros costosos

Los desenfoques y sombras amplias pueden exigir más trabajo de rasterización.

Si el efecto es puramente decorativo, compara su coste con una alternativa más simple.

Animaciones

SVG admite diferentes formas de animación.

Optimizar un SVG animado requiere verificar:

  • IDs;
  • targets;
  • tiempos;
  • transformaciones;
  • CSS;
  • JavaScript.

Una transformación segura para un recurso estático puede romper la animación.

CSS externo

Si una página aplica reglas a .logo-part o #needle, renombrar clases o IDs dentro del SVG inline puede romper la interfaz.

Documenta qué identificadores forman parte del contrato del componente.

JavaScript

Lo mismo ocurre con selectores utilizados por scripts.

La minificación de IDs solo es segura si el pipeline controla también el código que los referencia.

Tests visuales

Una de las mejores defensas consiste en comparar el renderizado antes y después.

Puedes generar imágenes raster de ambas versiones y utilizar comparación visual o revisión humana.

Diferencias subpíxel

Una comparación exacta de píxeles puede detectar pequeñas diferencias de rasterización que no son visualmente relevantes.

Define tolerancias adecuadas si automatizas el proceso.

Pruebas en varios tamaños

Un SVG puede parecer idéntico a 500 píxeles y mostrar defectos a 16 píxeles.

Prueba los tamaños de uso reales, especialmente para iconos.

Pruebas en diferentes fondos

La transparencia, máscaras y bordes pueden revelar diferencias únicamente sobre ciertos fondos.

Prueba claro y oscuro cuando el recurso se utiliza en ambos contextos.

Modo oscuro

Si el SVG utiliza colores fijos, puede necesitar una variante o estilos adaptables.

Si depende de currentColor, una optimización debe conservar esa capacidad.

currentColor

currentColor permite que un SVG herede el color del contexto.

Sustituirlo por un hexadecimal fijo puede romper la integración aunque el archivo se vea igual en una captura concreta.

Variables CSS

Los SVG inline pueden utilizar custom properties.

Un optimizador no debe resolverlas a valores estáticos si el diseño espera modificarlas.

Responsive SVG

Un viewBox correcto permite escalar.

Evita eliminarlo en recursos que deben adaptarse a diferentes tamaños.

preserveAspectRatio

Este atributo controla cómo se ajusta el contenido al viewport SVG.

Eliminar un valor explícito puede cambiar el encuadre si no coincide con el comportamiento por defecto deseado.

Optimización de un icono simple

Para un icono autónomo:

  1. conserva el master;
  2. elimina datos del editor;
  3. retira comentarios innecesarios;
  4. simplifica atributos redundantes;
  5. reduce precisión con cuidado;
  6. minifica;
  7. compara a 16, 24 y 32 px.

Este caso suele admitir una optimización bastante agresiva.

Para un logo:

  • protege proporciones y colores;
  • comprueba texto convertido o fuentes;
  • conserva accesibilidad según la integración;
  • evita simplificaciones geométricas visibles;
  • prueba fondos relevantes.

La fidelidad de marca puede importar más que unos bytes adicionales.

Optimización de una ilustración

Las ilustraciones complejas pueden contener grupos, máscaras, gradientes y paths detallados.

Empieza por la limpieza sin pérdida antes de simplificar geometría.

Mide qué transformación produce realmente los mayores ahorros.

Optimización de un gráfico

Los gráficos pueden contener texto y semántica.

No conviertas automáticamente etiquetas a paths ni elimines descripciones accesibles.

Si el gráfico se genera mediante código, quizá sea mejor optimizar el generador que limpiar cada exportación.

SVG generado por código

Cuando controlas el generador, elimina la redundancia en origen.

Es preferible producir un SVG limpio que depender siempre de una etapa correctiva.

SVG exportado de un editor

Aquí la optimización posterior suele aportar más porque el archivo está diseñado para conservar información de edición.

Herramientas automáticas

Los optimizadores SVG pueden aplicar decenas de transformaciones.

No actives todas las opciones sin entenderlas.

Un preset conservador es un buen punto de partida.

Configuración reproducible

Guarda la configuración del optimizador en el proyecto.

Así el mismo master produce resultados coherentes entre desarrolladores y CI.

Versionar la herramienta

Una actualización del optimizador puede cambiar el resultado.

Bloquear la versión ayuda a evitar diffs masivos inesperados.

Revisar los diffs

SVG es texto, por lo que Git puede mostrar cambios.

Sin embargo, una minificación completa hace los diffs difíciles de leer.

Otra razón para conservar un master legible separado del derivado.

CI

Puedes automatizar comprobaciones como:

  • el SVG es XML válido;
  • no contiene scripts prohibidos;
  • no supera un tamaño límite;
  • no contiene namespaces de editores no deseados;
  • el viewBox existe cuando es obligatorio.

Presupuesto de tamaño

Un proyecto de iconos puede establecer un tamaño máximo razonable.

Pero un límite único para todos los SVG no tiene sentido: una ilustración compleja no puede compararse con un pictograma.

Presupuesto de complejidad

También puedes limitar:

  • número de nodos;
  • cantidad de puntos;
  • filtros;
  • dimensiones.

Estos indicadores pueden detectar exportaciones accidentales muy complejas.

¿Cuánto se puede ahorrar?

Depende totalmente del origen.

Un SVG escrito a mano puede estar ya cerca del mínimo.

Una exportación de un editor puede reducirse de forma espectacular.

No prometas un porcentaje fijo.

¿Optimizar siempre?

Si un archivo pesa 400 bytes y se utiliza una vez, dedicar tiempo a una optimización extrema probablemente no sea rentable.

Prioriza los recursos grandes, repetidos o críticos.

Compresión HTTP

Como SVG es texto, asegúrate de que el servidor aplica Brotli o gzip cuando corresponde.

Un SVG minificado sin compresión HTTP puede transferir más que un SVG algo más largo pero bien comprimido.

Caché

Un archivo SVG externo puede cachearse.

Utiliza nombres versionados o hashes cuando quieras una caché de larga duración.

SVG inline y caché

Un SVG inline forma parte del HTML y no se cachea de manera independiente.

Si un logo grande aparece en muchas páginas, un archivo externo puede ser más eficiente.

Sprite SVG

Un sprite puede centralizar muchos iconos y reducir duplicación.

Pero si cada página utiliza solo uno o dos iconos, cargar un sprite enorme puede ser contraproducente.

Mide el patrón real de uso.

Tree shaking de iconos

En aplicaciones modernas, importa únicamente los iconos utilizados cuando la librería lo permita.

Optimizar cada SVG y después enviar cientos de iconos sin usar no resuelve el problema principal.

Duplicación en bundles

Comprueba que el mismo icono no se incluya varias veces mediante dependencias diferentes.

La optimización del pipeline de JavaScript puede ser tan importante como la del archivo SVG.

SVG frente a PNG

Para gráficos vectoriales simples, SVG suele escalar mejor y puede ser más ligero.

Para contenido fotográfico o extremadamente complejo, raster puede ser más apropiado.

Consulta Comparación de formatos de imagen.

SVG frente a icon fonts

Las fuentes de iconos fueron populares, pero SVG ofrece control más directo sobre semántica, color y formas.

No migres únicamente por moda; evalúa la arquitectura existente.

Data URI

Un SVG pequeño puede incorporarse como data URI, pero esto afecta a legibilidad y caché.

La codificación Base64 no siempre es necesaria para SVG textual.

Codificación de caracteres

Si incrustas SVG en una URL de datos, debes codificar correctamente caracteres especiales.

Una minificación incorrecta puede romper la sintaxis del CSS o HTML contenedor.

XML válido

Después de transformaciones manuales, valida el documento.

Una etiqueta mal cerrada o un carácter sin escapar puede invalidar el recurso.

Namespaces

El namespace SVG puede ser necesario según el contexto del archivo.

No elimines atributos de namespace únicamente porque el navegador parezca tolerarlo en una prueba.

Doctype y declaraciones XML

En SVG utilizados directamente en HTML moderno, algunas declaraciones históricas pueden ser innecesarias.

Pero el contexto de consumo importa.

Compatibilidad con editores

Una versión optimizada puede dejar de abrirse cómodamente en el editor original.

Eso es aceptable si conservas el master.

No exijas que el derivado de producción siga siendo un documento de trabajo perfecto.

Orden de las operaciones

Un pipeline razonable puede:

  1. exportar desde el master;
  2. normalizar;
  3. eliminar datos de editor;
  4. limpiar atributos;
  5. optimizar geometría conservadoramente;
  6. minificar;
  7. validar;
  8. ejecutar tests visuales;
  9. publicar.

El orden puede afectar al resultado.

No optimices manualmente después del build

Si el archivo se genera automáticamente, una edición manual del derivado desaparecerá en el siguiente build.

Corrige la fuente o la configuración.

Optimización con pérdida

La simplificación geométrica, reducción agresiva de precisión o aproximación de colores pueden considerarse con pérdida.

Sepáralas mentalmente de las transformaciones exactas.

Transformaciones sin pérdida

Suelen incluir, según el contexto:

  • eliminar espacios;
  • normalizar sintaxis equivalente;
  • retirar comentarios no necesarios;
  • eliminar datos de editor;
  • acortar valores exactamente equivalentes.

Incluso aquí, metadatos y comentarios pueden tener significado no visual.

Define tu nivel de riesgo

Puedes tener perfiles:

Conservador: solo limpieza estructural claramente segura.

Estándar: reducción de precisión moderada y consolidaciones verificadas.

Agresivo: simplificación geométrica y transformaciones orientadas al mínimo tamaño.

Para activos de marca, utiliza un perfil más conservador.

Optimizar con Bethemesh

El optimizador SVG puede ayudarte a limpiar y reducir un archivo antes de publicarlo.

Conserva siempre una copia del original y compara el resultado.

Si necesitas normalizar o revisar colores, utiliza también el convertidor de colores.

Flujo recomendado

Para un SVG procedente de un editor:

  1. guarda el master;
  2. exporta una copia;
  3. inspecciona su estructura;
  4. elimina metadatos y datos de editor innecesarios;
  5. reduce precisión de forma conservadora;
  6. limpia estilos y atributos redundantes;
  7. preserva viewBox, IDs y accesibilidad necesarios;
  8. minifica;
  9. valida XML;
  10. compara visualmente;
  11. mide tamaño bruto y transferido.

Checklist antes de publicar

Comprueba:

  • ¿el SVG se ve exactamente como debería?;
  • ¿el viewBox sigue siendo correcto?;
  • ¿funciona en todos los tamaños previstos?;
  • ¿se han conservado IDs utilizados externamente?;
  • ¿gradientes, máscaras y filtros funcionan?;
  • ¿se mantiene currentColor si era necesario?;
  • ¿la accesibilidad sigue siendo correcta?;
  • ¿se han eliminado datos internos innecesarios?;
  • ¿el XML es válido?;
  • ¿la licencia o atribución necesaria permanece?;
  • ¿la respuesta HTTP se comprime?;
  • ¿el tamaño final justifica la complejidad del pipeline?

Errores frecuentes

Evita:

  • borrar todos los IDs;
  • eliminar viewBox;
  • convertir todo a paths sin motivo;
  • reducir precisión demasiado;
  • retirar fill="none" creyendo que es el valor por defecto;
  • eliminar <title> o <desc> sin revisar accesibilidad;
  • fusionar paths que dependen del orden de pintura;
  • optimizar un SVG interactivo como si fuera estático;
  • confundir optimización con sanitización;
  • sobrescribir el único master;
  • juzgar únicamente el tamaño sin comparar el renderizado.

Lo que debes recordar

Un SVG es código además de imagen.

La optimización más segura empieza por retirar lo que no aporta nada al recurso de producción: datos del editor, comentarios innecesarios, espacios, redundancias y precisión excesiva.

Después pueden venir transformaciones más profundas, pero cuanto más modificas geometría, estilos e identificadores, mayor es la necesidad de pruebas.

Conserva un master, utiliza una configuración reproducible y compara siempre el resultado.

El mejor SVG optimizado no es necesariamente el archivo más pequeño posible: es el archivo más pequeño que conserva correctamente la apariencia, la semántica y el comportamiento que necesitas.

Preguntas frecuentes

¿Optimizar un SVG reduce siempre mucho su tamaño?
No. Un SVG escrito a mano puede estar ya muy limpio. Las exportaciones de editores suelen ofrecer más margen.

¿Puedo eliminar todos los metadatos?
No automáticamente. Revisa si contienen licencia, autoría o información que debas conservar.

¿Puedo eliminar todos los IDs?
No. Pueden ser necesarios para gradientes, máscaras, <use>, CSS, JavaScript o accesibilidad.

¿Debo eliminar width y height?
Depende de cómo se integra el SVG. No es una regla universal.

¿Debo conservar viewBox?
En la mayoría de SVG que necesitan escalar, sí. Eliminarlo puede romper el comportamiento responsive.

¿Cuántos decimales debo conservar?
No existe un valor universal. Depende de la escala y la geometría. Utiliza una configuración conservadora y compara.

¿SVG minificado se renderiza más rápido?
Puede reducir bytes y algo de trabajo de análisis, pero la complejidad geométrica, filtros y número de nodos también influyen.

¿Un optimizador SVG hace que un archivo no confiable sea seguro?
No necesariamente. Optimización y sanitización son objetivos diferentes.

¿Conviene convertir el texto a paths?
Solo cuando existe una razón concreta para fijar la apariencia. Puede aumentar mucho el archivo y eliminar semántica textual.

¿Cómo sé si la optimización ha cambiado algo?
Compara visualmente antes y después en los tamaños de uso, valida las referencias y, para recursos importantes, utiliza tests visuales automatizados.

Herramientas relacionadas

Imágenes y diseño gráfico

Optimizador SVG

Reduce el marcado SVG localmente y conserva un archivo editable.

100 % local
Usar esta herramienta
Imágenes y diseño gráfico

Convertidor de colores

Convierte un color entre HEX, RGB y HSL con sus valores equivalentes.

100 % local
Usar esta herramienta

Fuentes y referencias

  1. 1.MDN Web Docs — SVG
  2. 2.W3C — Scalable Vector Graphics (SVG) 2

Colección

Imágenes para la Web

  1. 01¿Cómo se construye una imagen digital?
  2. 02¿Qué resolución elegir para una imagen?
  3. 03RGB, HEX o HSL: ¿qué notación elegir?
  4. 04¿Cómo crear una paleta de colores a partir de una imagen?
  5. 05Contraste WCAG: ¿cómo hacer accesibles los colores?
  6. 06PNG, JPEG, WebP o AVIF: ¿qué formato elegir?
  7. 07¿Cómo comprimir una imagen sin perder calidad?
  8. 08SVG: comprender el formato vectorial
  9. 09Imágenes responsive: entender srcset y sizes
  10. 10Metadatos de imagen y privacidad: EXIF, GPS y datos ocultos
  11. 11Optimizar imágenes para la Web sin perder calidad
  12. 12Optimizar imágenes para mejorar el rendimiento web
  13. 13Optimizar un archivo SVG sin alterar su apariencia
  14. 14WebP, AVIF, JPEG XL: ¿qué formatos de imagen elegir en 2026?
GuíaFormatosPrincipiante

SVG: comprender el formato vectorial

Descubre cómo un archivo SVG describe formas, utiliza viewBox y se integra en una página web, con buenas prácticas de responsive, accesibilidad y seguridad.

31 de agosto de 202630 minLeer

¿Te ha resultado útil este artículo?