Skip to content

Guide

URIs de datos Base64 para imágenes: cuándo conviene incrustar

Incrustar una imagen evita un viaje de red, pero también significa que el navegador nunca podrá cachear esa imagen por sí sola.

By Published

Un URI de datos Base64 permite incrustar los bytes de una imagen directamente dentro de HTML, CSS o JSON como una cadena de texto, en lugar de referenciar un archivo de imagen aparte que el navegador tiene que solicitar. Se ve así: data:image/png;base64,iVBORw0KGgo... y, una vez pegado en un <img src> o un background-image de CSS, el navegador lo decodifica y lo renderiza sin ninguna petición de red adicional. Suena como una ganancia pura —menos viajes de ida y vuelta suele ser más rápido— pero cambia un coste por otro, y el intercambio solo tiene sentido para casos de uso concretos, mayormente pequeños.

Lo que ganas: una petición menos

Cada archivo de imagen aparte es una petición HTTP aparte, y en una página con muchos iconos pequeños, cada una de esas peticiones carga con su propia sobrecarga de latencia — DNS (si es un host distinto), establecimiento de conexión y tiempo de ida y vuelta— que puede sumar más retraso que los propios bytes. Incrustar un puñado de iconos pequeños y reutilizados con frecuencia como Base64 colapsa esas peticiones en el mismo documento que el navegador ya está cargando, lo que es genuinamente más rápido para ese patrón concreto.

Lo que pierdes: tamaño y caché

Base64 infla el tamaño codificado en aproximadamente un tercio sobre el archivo original — consulta por qué Base64 hace los archivos más grandes para la matemática exacta— y esa cadena inflada pasa a formar parte del propio documento HTML o CSS. Eso significa que el navegador ya no puede cachear la imagen de forma independiente: cada vez que vuelve a obtener o analizar la página, vuelve a descargar los bytes de la imagen junto con todo lo demás, en lugar de tomar una copia cacheada del disco como haría con un archivo .png normal. Para un icono reutilizado en decenas de páginas, eso son decenas de descargas repetidas en lugar de un único archivo cacheado.

Regla general: tamaño y reutilización

SituaciónMejor opción
Icono diminuto (menos de ~2 KB), usado una vezBase64 en línea
Icono pequeño, reutilizado en muchas páginasArchivo normal cacheable
Desenfoque de marcador de posición para carga diferidaBase64 en línea (es diminuto por diseño)
Cualquier foto o imagen destacadaArchivo normal cacheable, siempre

El patrón que casi nunca tiene sentido es incrustar una foto completa o una imagen destacada — la penalización de tamaño y la pérdida de caché juegan ambas en tu contra a esa escala, sin ningún beneficio que lo compense. Cíñete a recursos pequeños, estáticos y repetidos con frecuencia, y usa el conversor de imagen a Base64 para ver el tamaño codificado exacto antes de decidir.

Frequently asked questions

¿Cómo es un URI de datos Base64 de una imagen?
Es una única cadena que empieza por data:, seguida del tipo MIME, la codificación y los bytes codificados en Base64 — por ejemplo data:image/png;base64,iVBORw0KGgoAAAANSU... — que puede usarse en cualquier sitio donde iría una URL de imagen normal, en un <img src>, un background-image de CSS o una etiqueta <image> de SVG.
¿Usar imágenes en Base64 perjudica el rendimiento de la página?
Puede hacerlo, para cualquier cosa que supere iconos pequeños. La cadena codificada es aproximadamente un 33% más grande que el archivo original, no se puede cachear por separado en el navegador (queda incrustada en el propio documento HTML o CSS), y las imágenes en línea grandes hinchan el payload inicial de la página, retrasando el renderizado de todo lo demás.
¿Cuándo debería realmente incrustar una imagen como Base64?
Para recursos muy pequeños y reutilizados con frecuencia —iconos, pequeños sprites de interfaz, un desenfoque de marcador de posición para imágenes de carga diferida— donde ahorrarse una petición de red compensa la penalización de tamaño. Para cualquier cosa mayor de unos pocos kilobytes, o cualquier imagen reutilizada en varias páginas, un archivo de imagen normal cacheable casi siempre rinde mejor.
¿Puedo incrustar una imagen Base64 directamente en CSS?
Sí — background-image: url('data:image/png;base64,...') funciona en cualquier navegador moderno, y es una forma habitual de incrustar patrones de fondo o iconos diminutos y repetitivos sin una petición HTTP extra.

Sources & references

Authoritative references cited by this piece. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.

Related

Published September 25, 2026