Los iconos parecen un detalle menor, pero su formato influye mucho en el rendimiento y la flexibilidad de una interfaz. Usar SVGs en línea en lugar de etiquetas img abre la puerta a mejoras reales tanto en velocidad como en personalización.

Un SVG incrustado forma parte del propio HTML, así que:
No genera peticiones HTTP adicionales. Con img, cada icono implica una solicitud al servidor. Con SVG inline, todo viaja en el mismo documento HTML.
El navegador lo procesa de inmediato. No hay que esperar a recursos externos, lo que reduce latencias y evita microbloqueos cuando la interfaz usa muchos iconos.
Menos negociación en el protocolo. Reducir solicitudes evita aperturas de conexión, cabeceras y validaciones innecesarias.
En interfaces con docenas de iconos, esto mantiene la experiencia mucho más fluida.
Con un SVG en línea, cada parte del gráfico es accesible desde CSS:
currentColor.Esto no es posible con img, donde el contenido del icono es opaco para el navegador.
Los SVG inline encajan especialmente bien en frameworks como Vue, React o Angular. Basta con crear un componente por icono, pegando el SVG tal cual dentro del componente. Esto permite:
Es una forma limpia de mantener consistencia sin depender de un sistema externo de iconos.
En accesibilidad, img y SVG inline ofrecen lo mismo: alt, title, role, aria-label y el resto de atributos funcionan igual. La única diferencia es que el SVG inline permite definir información accesible dentro del propio gráfico, mientras que img depende del elemento contenedor. El resultado final puede ser igual de accesible.
El soporte de SVG inline es completo en todos los navegadores modernos. Se integra sin dependencias, respeta las reglas del DOM y funciona igual en móvil y escritorio. No necesita loaders ni herramientas de build.
Si quieres experimentar con el comportamiento del SVG inline, he preparado un ejemplo en HTML y CSS vanilla, sin JavaScript. En el panel de estilos puedes modificar las variables CSS (--rod, --tip, --sparkles) y también el color del texto del contenedor para ver cómo el icono se adapta al instante.
Lo importante del SVG en este ejemplo es que cada tramo del dibujo usa fill="var(...)", lo que permite controlar sus colores directamente desde CSS sin tocar el propio archivo.
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 640 640"
>
<path
fill="var(--rod, currentColor)"
d="..."
/>
<path
fill="var(--tip, currentColor)"
d="..."
/>
<path
fill="var(--sparkles, currentColor)"
d="..."
/>
</svg>Usar SVG en línea reduce peticiones, mejora el tiempo de renderizado y ofrece un control total sobre la personalización. Además, se adapta perfectamente a frameworks modernos creando un componente por icono. Es una mejora sencilla con impacto real en rendimiento y en coherencia visual.