Agregaste un SVG a tu sitio web, abres la página y no aparece nada: solo un espacio vacío donde debería estar tu imagen, un icono de imagen rota o el temido texto alternativo. Los problemas de carga de SVG son muy frustrantes, porque se supone que los SVG deberían funcionar sin complicaciones. Aquí te explicamos por qué suelen fallar y cómo solucionar cada problema.
Tu servidor web tiene que indicarle al navegador «este es un archivo SVG» enviando la cabecera Content-Type correcta. Si el servidor envía el tipo incorrecto, es probable que el navegador se niegue a renderizarlo.
Cómo comprobarlo: Abre las DevTools (F12) → pestaña Red → busca tu archivo SVG → comprueba en las Cabeceras de Respuesta que aparezca Content-Type: image/svg+xml.
Solución: Agrega esto a tu archivo .htaccess (Apache) o nginx.conf:
AddType image/svg+xml .svg (Apache)
types { image/svg+xml svg; } (Nginx)
No puedes poner código SVG crudo dentro de <img src="...">: el atributo src espera una URL, no código XML. Esto no funciona:
<img src="<svg>...</svg>"> ❌
Solución: O guarda el SVG como un archivo .svg independiente y enlázalo, o incrústalo directamente en línea en el HTML sin usar una etiqueta <img>.
Cuando incrustas un SVG en línea en HTML, la etiqueta SVG debe incluir el atributo de espacio de nombres:
<svg xmlns="http://www.w3.org/2000/svg">
Sin el atributo xmlns, el navegador trata tu SVG como elementos HTML personalizados desconocidos en lugar de gráficos vectoriales. Esta es la causa número 1 de que los SVG en línea no se rendericen.
Si tu SVG está alojado en un dominio distinto al de tu sitio web, es posible que el navegador lo bloquee por la política de Intercambio de Recursos de Origen Cruzado (CORS). Esto es muy frecuente cuando cargas SVG desde una CDN o un servicio de alojamiento de imágenes.
Solución: O aloja el SVG en el mismo dominio que tu sitio, o configura el servidor externo para que envíe las cabeceras Access-Control-Allow-Origin: *.
Tu archivo se llama logo.svg pero en realidad es un PNG o JPG al que alguien le cambió el nombre. Esto pasa más a menudo de lo que crees, sobre todo con archivos de herramientas de diseño que se exportan con la extensión incorrecta.
Solución: Abre el archivo en un editor de texto. Si empieza por <svg o <?xml, es un SVG de verdad. Si parece código binario ilegible, es una imagen rasterizada con la extensión equivocada.
El CSS de tu página podría estar ocultando o sobrescribiendo los estilos del SVG. Los causantes más comunes son:
img { display: none; } o img { width: 0; height: 0; }<svg>overflow: hidden y altura ceroSolución: Dale a tu SVG atributos explícitos de width y height, y revisa las DevTools para ver si el CSS lo está ocultando.
A veces el software de diseño exporta SVG con código XML no válido: etiquetas sin cerrar, caracteres ilegales o datos de ruta rotos. Los navegadores son muy estrictos con la sintaxis de SVG.
Solución: Pasa tu SVG por un validador/optimizador de SVG como SVGO. Limpia el marcado no válido de forma automática.
Ya arreglaste el SVG pero sigues viendo la versión rota? Limpia la caché (Ctrl+Shift+R) o abre la página en una ventana de incógnito para descartar problemas de caché.
image/svg+xml? ✅ La configuración del servidor está bien → revisa el marcado<svg> tiene el atributo xmlns="http://www.w3.org/2000/svg"? ✅ El marcado está bien → revisa el CSS