Conclusiones clave
- Conserva un viewBox válido para que el gráfico escale sin depender de dimensiones fijas.
- Elimina los metadatos y los comentarios del editor solo después de confirmar que no forman parte del flujo de trabajo.
- Reduce la precisión de los trazados contrastándola con archivos de prueba visuales, sobre todo en los iconos pequeños.
El tamaño de un SVG proviene de los trazados, la precisión, los metadatos, los atributos repetidos, los recursos incrustados y la salida del editor. Una buena optimización elimina la redundancia y conserva a la vez las funciones del documento que el producto realmente utiliza.
Lo más importante
- Conserva los títulos, las descripciones, los ID y las clases significativos que se usan para accesibilidad o estilizado.
- Sanea el SVG no confiable de forma independiente de la optimización del tamaño en bytes.
Separa la limpieza del origen de la optimización de la entrega
SVG es un formato gráfico basado en XML cuyos elementos describen formas, trazados, pintura, texto, máscaras, filtros y definiciones reutilizables. La optimización puede eliminar los residuos del editor y las instrucciones redundantes, pero no equivale a rediseñar una ilustración. Un dibujo complejo sigue siendo complejo después de eliminar los espacios en blanco.
Mantén un archivo maestro editable aparte del recurso de entrega generado. El archivo maestro puede contener capas con nombre, guías, comentarios y geometría de alta precisión que los diseñadores necesitan. La copia de entrega se puede regenerar con una configuración versionada. Esta organización evita imponer restricciones de producción al editor de origen y hace que la optimización sea reproducible.
Mide los bytes que los usuarios reciben realmente
Haz un seguimiento de al menos dos tamaños: el código fuente SVG sin comprimir y la respuesta comprimida con Brotli o gzip. Los nombres XML, los atributos repetidos y las cadenas de coordenadas suelen comprimirse bien en tránsito, por lo que una gran reducción del código fuente puede producir una mejora en la red menor de lo esperado. La complejidad de análisis y renderizado aún puede mejorar aunque los bytes comprimidos cambien poco.
Usa una página representativa para medir el tamaño de la petición, el comportamiento de la caché, el tiempo de análisis, el tiempo de pintado y la memoria. Un icono diminuto repetido a lo largo de una página tiene restricciones distintas de las de un mapa detallado que se muestra una sola vez. Establece un presupuesto para cada clase de recurso en lugar de perseguir el archivo más pequeño posible a costa de la mantenibilidad o de la fidelidad del renderizado.
Conserva el contrato de escalado
El viewBox define el sistema de coordenadas interno y es el contrato principal para el escalado independiente de la resolución. Eliminarlo puede hacer que un SVG dependa de valores fijos de width y height o provocar recortes inesperados. Conserva la relación entre viewBox, las dimensiones intrínsecas, la relación de aspecto y cualquier transformación aplicada al grupo exterior.
Prueba más de un tamaño renderizado. Un redondeo de coordenadas que resulta invisible a 24 píxeles puede desplazar un borde a 400 píxeles, y un trazo fino que se ve correcto en tamaño de escritorio puede desaparecer en una pantalla pequeña. Incluye en los archivos de prueba los contenedores no cuadrados y el comportamiento real de preserveAspectRatio del producto.
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
role="img"
aria-labelledby="upload-title"
>
<title id="upload-title">Upload</title>
<path fill="currentColor" d="M12 3 6 9h4v7h4V9h4l-6-6ZM5 19h14v2H5z" />
</svg>Simplifica la geometría con una precisión controlada
Los datos de trazado suelen ser la parte más grande de una ilustración. Los editores pueden generar decimales innecesarios, comandos repetidos, puntos de control redundantes y transformaciones que se pueden combinar. Reducir la precisión y simplificar los segmentos casi colineales puede ahorrar bytes, pero la tolerancia aceptable depende del sistema de coordenadas, del grosor del trazo y del tamaño de visualización final.
No conviertas automáticamente cada rectángulo, círculo o línea en un trazado. Las formas nativas pueden ser más cortas, más fáciles de inspeccionar y más claras para las herramientas de accesibilidad o de animación. Del mismo modo, fusionar trazados puede cambiar las reglas de relleno, el comportamiento de solapamiento, las áreas de interacción o la posibilidad de recolorear partes individuales. Compara el resultado renderizado en lugar de suponer que menos elementos siempre es mejor.
Redondear con cautela
Usa suficiente precisión de coordenadas para conservar los trazos finos, los espacios pequeños y la geometría transformada en el tamaño máximo admitido.
Conservar las primitivas útiles
Los rectángulos, los círculos y los símbolos pueden ser más pequeños y más fáciles de mantener que las cadenas de trazado equivalentes.
Revisar la fusión de trazados
La geometría fusionada puede alterar las reglas de relleno, el apilamiento, los objetivos de animación y el estilo independiente.
Reutiliza la estructura repetida sin romper las referencias
Las formas repetidas se pueden trasladar a <defs> e instanciarse con <use>, mientras que los valores de pintura comunes se pueden heredar de un grupo. Esto puede reducir la duplicación en conjuntos de iconos e ilustraciones con patrones. También puede dificultar la depuración, así que aplica la reutilización cuando las repeticiones sean considerables y el motor de renderizado en tiempo de ejecución admita las funciones elegidas.
Los ID conectan degradados, trazados de recorte, máscaras, filtros, marcadores, selectores CSS, enlaces de fragmento, objetivos de animación y atributos de accesibilidad. Un optimizador que acorte o elimine un ID debe actualizar todas las referencias. Prueba cada función referenciada, porque una máscara o un degradado rotos pueden fallar en silencio y dejar una imagen que a simple vista sigue pareciendo plausible.
Elimina de forma deliberada los metadatos y las cargas útiles incrustadas
Los espacios de nombres de editor, los comentarios del generador, las declaraciones de estilo sin usar y los grupos vacíos son candidatos habituales para su eliminación. Conserva los metadatos que respalden la licencia, la procedencia, la edición posterior o un requisito de publicación documentado. La política de optimización debería indicar qué se descarta, en lugar de tratar todos los datos no visuales como desechos.
Las imágenes rasterizadas, las fuentes y las URL de datos incrustadas pueden dominar el tamaño del archivo y, aun así, pasar desapercibidas al revisar el XML. Decide si deben permanecer en el SVG, convertirse en recursos externos controlados o eliminarse. Los recursos externos plantean sus propias cuestiones de disponibilidad, privacidad y origen cruzado, así que el ahorro de bytes por sí solo no debería determinar la elección.
Protege la semántica de los estilos y de la accesibilidad
Un SVG puede recibir color mediante currentColor, propiedades heredadas, clases, propiedades personalizadas de CSS o selectores de la aplicación. Eliminar clases y atributos de presentación a partir de una sola captura de pantalla puede romper el hover, el foco, el modo oscuro, el alto contraste o las variantes de marca. Prueba todos los estados admitidos antes de considerar que un selector no se usa.
Los gráficos independientes con significado necesitan un nombre accesible que aporte el contexto de incrustación o que provenga de relaciones de título y descripción conservadas. Los gráficos decorativos deberían ocultarse de forma coherente a las tecnologías de asistencia. No permitas que la optimización elimine los ID de accesibilidad referenciados, y no des por hecho que los títulos internos del SVG se exponen de la misma manera con todos los métodos de incrustación.
Trata el saneamiento como un control de seguridad aparte
Un SVG es contenido de documento activo, no solo un conjunto de coordenadas inofensivas. Puede contener scripts, atributos de evento, HTML incrustado, referencias externas, CSS e instrucciones de carga de recursos. La optimización puede eliminar de forma incidental algunos de estos elementos, pero un optimizador centrado en el tamaño no constituye un límite de seguridad.
Las subidas no confiables requieren un saneador o un límite controlado de rasterización con una lista de permitidos explícita de elementos y atributos admitidos. Aplica límites de bytes y de complejidad a la entrada antes del análisis, bloquea el acceso de red inesperado y actualiza el analizador y el saneador a medida que cambien las dependencias. Evalúa tanto archivos de prueba maliciosos conocidos como ilustraciones válidas y complejas.
Validar la estructura
Rechaza el XML mal formado, los espacios de nombres no admitidos, el anidamiento excesivo y las entradas que superen los límites declarados.
Sanear las funciones activas
Elimina scripts, controladores de eventos, URL inseguras, HTML incrustado y otras funciones ajenas al perfil aprobado.
Restringir el procesamiento
Aplica límites de tiempo, memoria, recursión y red para que una geometría o unos filtros hostiles no puedan consumir recursos sin límite.
Optimiza en conjunto la entrega y la incrustación
El SVG en línea evita una petición aparte y permite aplicarle estilos directamente, pero el marcado en línea repetido aumenta el tamaño del HTML y no se puede almacenar en caché de forma independiente. Una imagen externa sí se puede almacenar en caché de forma independiente y aísla buena parte del documento, aunque la página tiene menos acceso a sus estilos internos. Elige según el rol de cada recurso en lugar de adoptar un único método de incrustación para todo.
Sirve el SVG externo con el tipo de medio correcto, compresión, caché de larga duración para los nombres de archivo direccionados por contenido y una Content Security Policy clara. Evita codificar en base64 el SVG externo ordinario, porque expande la carga útil textual y puede impedir el almacenamiento en caché independiente. Precarga solo los recursos que se haya demostrado que bloquean el renderizado; la precarga indiscriminada compite con recursos más importantes.
Crea comprobaciones deterministas de regresión visual
Fija la versión y la configuración del optimizador, y genera después una salida estable para el mismo código fuente. El determinismo mantiene útil la revisión de código, evita invalidaciones de caché innecesarias y hace posible una reversión. Documenta por qué se activan o se desactivan transformaciones arriesgadas como la limpieza de ID, la fusión de trazados o la reducción de precisión.
Renderiza los archivos de prueba en tamaños pequeños y grandes, sobre fondos claros y oscuros, y en todos los temas que cambien propiedades del SVG. Usa comparaciones de píxeles con una tolerancia revisada, pero verifica también contratos estructurales como la conservación de viewBox, el nombre accesible, los ID requeridos y la ausencia de contenido activo prohibido. La revisión humana sigue siendo útil para logotipos e ilustraciones detalladas.
Detalles técnicos que conviene conocer
- Reducir la precisión de las coordenadas puede disminuir considerablemente los datos de trazado, pero la precisión aceptable depende del tamaño del viewBox, del grosor del trazo, de las transformaciones y de las dimensiones renderizadas finales.
- Los ID pueden estar referenciados por degradados, máscaras, trazados de recorte, filtros, CSS, scripts y atributos de accesibilidad. Cambiarles el nombre o eliminarlos sin un análisis de referencias puede alterar el renderizado de forma silenciosa.
- SVG es texto XML y suele comprimirse bien con Brotli o gzip en tránsito, por lo que deberían medirse tanto el tamaño del archivo de origen sin comprimir como el tamaño de entrega comprimido.
- Convertir cada forma en un trazado puede eliminar la simplicidad semántica y, a veces, aumentar el tamaño; los rectángulos, los círculos, los símbolos y las definiciones reutilizables pueden ser más compactos.
- Los elementos invisibles todavía pueden estar referenciados por animaciones, scripts, símbolos o estilos adaptables, por lo que eliminarlos a partir de un único renderizado estático puede resultar destructivo.
- La optimización debería ser determinista y estar versionada, porque pequeños cambios en la configuración de la herramienta pueden reescribir el archivo completo y volver ruidosas las revisiones o el comportamiento de la caché.
Un enfoque práctico
- 1
Clasifica cada SVG como icono, ilustración, logotipo, gráfico o subida no confiable.
- 2
Ejecuta una optimización determinista con una configuración revisada y conserva el archivo original.
- 3
Compara la salida renderizada en presentaciones pequeñas, grandes, claras y oscuras.
- 4
Rasteriza solo para los canales que no pueden consumir SVG de forma segura o coherente.
Límite de la arquitectura
La optimización no puede reparar una ilustración innecesariamente compleja ni un SVG inseguro. Trata el SVG subido como contenido de documento activo, valídalo y sanéalo antes de incrustarlo en una página de confianza.
Preguntas frecuentes
¿Se puede cambiar el tamaño de los archivos SVG sin que se vuelvan borrosos?
Sí. La geometría SVG es independiente de la resolución, por lo que se puede renderizar a distintos tamaños sin la cuadrícula de píxeles fija de una imagen ráster. Los trazos finos, los filtros, las imágenes ráster incrustadas y el redondeo agresivo de coordenadas aún pueden producir malos resultados en tamaños concretos.
¿Debería convertirse toda forma SVG en un trazado?
No. Un trazado resulta útil para geometrías arbitrarias, pero los rectángulos, los círculos, las líneas y los símbolos reutilizables pueden ser más pequeños y fáciles de mantener. La conversión también puede eliminar semántica útil o dificultar el estilizado y la animación.
¿Basta con gzip o Brotli para optimizar SVG?
La compresión de transporte elimina buena parte de la repetición textual, pero no elimina los elementos sin usar, ni los filtros costosos, ni las imágenes incrustadas sobredimensionadas, ni la geometría innecesaria. Mide el tamaño de transferencia comprimido y el costo de renderizado, y aplica después la optimización semántica allí donde produzca un beneficio verificado.
¿Un optimizador de SVG hace que el SVG subido sea seguro?
No. La optimización y el saneamiento resuelven problemas distintos. El SVG no confiable necesita validación, una lista explícita de funcionalidades permitidas, la eliminación del contenido activo y de las referencias inseguras, límites de recursos y pruebas de regresión de seguridad.
¿Cuánta precisión de coordenadas debería conservar un SVG?
No existe un número universal de decimales. Elige la precisión a partir de pruebas visuales que cubran el viewBox del recurso, los grosores de trazo, las transformaciones y los tamaños renderizados más grandes y más pequeños. Los logotipos y los diagramas técnicos suelen necesitar una tolerancia más estricta que las ilustraciones informales.