¿Cuándo conviene usar imágenes en Base64?

Usa imágenes en Base64 (data URI) para imágenes muy pequeñas de pocos kilobytes, como iconos, logotipos pequeños y gráficos de la interfaz, y cuando un archivo aparte es imposible, como en páginas HTML de un solo archivo, datos JSON o documentos que se abren sin conexión. Evítalas en fotos, imágenes grandes e imágenes compartidas por muchas páginas, porque Base64 aumenta el tamaño alrededor de un 33 por ciento y la imagen deja de poder guardarse en caché por separado.

6 min de lectura

La regla general

Incrusta una imagen cuando el coste de una petición aparte supera el coste de los bytes extra. Con las conexiones HTTP/2 y HTTP/3 actuales, las peticiones adicionales son baratas, así que ese punto llega pronto: un buen límite de trabajo es de 2 a 4 KB por imagen. Las herramientas de build más usadas coinciden; Vite incrusta por defecto los recursos de menos de 4 KB y los asset modules de webpack los de menos de 8 KB.

La herramienta de abajo convierte un PNG (o cualquier imagen) en un data URI. Suelta la imagen o ábrela y luego elige cómo copiarla en Copiar como: Data URI, Base64 sin más, una línea CSS background-image lista, una etiqueta img de HTML con ancho y alto, o Markdown. Muestra el tamaño del data URI y cuánto más ocupa que el archivo, y avisa cuando el resultado es tan grande que puede hacer más lenta la página. Las imágenes se convierten en tu navegador y nunca se suben.

Pruébalo aquí: PNG a Base64

Abrir la herramienta completa

Qué pasa al incrustar una imagen

Un data URI como data:image/png;base64,iVBORw0KGgo... mete los bytes de la imagen dentro del HTML, CSS o JSON que la usa. El navegador recibe la imagen junto con ese archivo, sin una descarga aparte. Esa es toda la ventaja. Los costes nacen del mismo hecho:

  • Tamaño: Base64 escribe 3 bytes como 4 caracteres, así que la imagen crece cerca de un tercio. La compresión gzip o Brotli del servidor recupera parte de eso durante la transferencia, pero no todo, y las imágenes ya comprimidas (PNG, JPG, WebP) ganan poco.
  • Caché: un archivo de imagen aparte se guarda en caché una vez y se reutiliza en todas las páginas. Una imagen incrustada solo se guarda como parte del archivo que la contiene. Cambia una línea del CSS y todos los iconos incrustados se descargan otra vez.
  • Bloqueo del renderizado: el CSS bloquea el primer pintado. Cada kilobyte de imágenes incrustadas en una hoja de estilos retrasa el momento en que aparece algo en pantalla, aunque esas imágenes estén al final de la página.
  • Sin carga diferida: loading="lazy" y la elección de imagen con srcset pierden sentido, porque los bytes ya llegaron con la página.
  • Mantenimiento: una cadena Base64 larga es ilegible en una revisión de código y se rompe fácilmente con una copia mal hecha.

Guía de tamaños: ¿incrustar o archivo aparte?

ImagenTamaño típico del archivoEn Base64Recomendación
Icono de interfaz de 16 a 24 px (PNG o SVG)200 bytes a 1 KBunos 0,3 a 1,4 KBIncrustar, caso ideal
Logotipo pequeño o insignia2 a 5 KBunos 2,7 a 6,7 KBIncrustar si se usa en una sola página o en una firma de correo; si no, archivo
Marcador borroso para una foto300 bytes a 1 KBunos 0,4 a 1,4 KBIncrustar y cargar la foto real como archivo
Logotipo presente en todas las páginas10 a 30 KBunos 13 a 40 KBArchivo aparte, para guardarlo en caché una vez
Foto de producto o imagen de portada50 a 500 KBunos 67 a 670 KBArchivo aparte con carga diferida o preload

Buenos usos de las imágenes en Base64

  • Iconos pequeños en CSS, como flechas, marcas de verificación, una casilla personalizada o la flecha de un desplegable, que deben aparecer junto con los estilos y nunca de forma tardía.
  • Entregables de un solo archivo: un informe HTML, una factura exportada, una página de documentación o un prototipo que debe funcionar al abrirlo desde el disco o al enviarlo como un único adjunto.
  • API y bases de datos: JSON no tiene un tipo binario, así que las imágenes en peticiones y respuestas de API (firmas, avatares, documentos escaneados, imágenes de producto en algunas integraciones con marketplaces) suelen enviarse como cadenas Base64.
  • Marcadores de imagen de baja calidad: una versión diminuta y borrosa incrustada en el HTML aparece al instante mientras carga la imagen completa.
  • Iconos SVG: el SVG es texto, así que muchas veces no necesita Base64. La opción Codificación URL en lugar de Base64 de la herramienta mantiene el SVG legible y suele dar un resultado más corto.

Cuándo evitarlas

  • Fotos y cualquier imagen de más de unos 10 KB en una página web. Usa un archivo normal en WebP o AVIF, con ancho y alto definidos y carga diferida para las imágenes que quedan fuera de la primera pantalla.
  • La imagen más grande de la parte superior de la página (el elemento LCP). Una imagen grande incrustada vuelve pesado el propio HTML y retrasa todo lo que contiene; precargar un archivo aparte suele ser más rápido.
  • Imágenes que se repiten entre páginas, como el logotipo del sitio o un patrón de fondo. Aquí la caché vale más que ahorrar una petición.
  • Correos HTML para el público general. Muchos clientes de correo no muestran imágenes en data URI; Gmail y Outlook para Windows son los más conocidos. Usa imágenes alojadas en un servidor o adjuntos referenciados por Content-ID (CID). Los data URI incrustados funcionan sobre todo en Apple Mail y algunas apps móviles, algo insuficiente para un boletín.
  • Data URI muy grandes en general. El antiguo Internet Explorer 8 los limitaba a 32 KB; los navegadores actuales aceptan tamaños mucho mayores, pero el rendimiento se resiente mucho antes de llegar a cualquier límite.

Cómo hacerlo bien

Reduce la imagen antes de convertirla. Cada byte que ahorras se multiplica por 4/3 en el data URI, así que comprime los iconos PNG, redimensiona las imágenes más grandes que el tamaño al que se muestran y, para fotos que debas incrustar, como en un JSON, usa JPG o WebP con una calidad razonable. El compresor y el redimensionador de imágenes de este sitio lo hacen en el navegador, y luego puedes traer aquí el archivo más pequeño.

Incluye las dimensiones. Una etiqueta img sin ancho ni alto hace que el diseño salte cuando aparece la imagen. Por eso la salida HTML de esta herramienta incluye el ancho y el alto reales de la imagen.

Conserva el archivo fuente. Guarda el PNG o SVG original en tu proyecto y genera el data URI a partir de él, con tu herramienta de build o con esta herramienta cuando algo cambie. No trates nunca la cadena Base64 como la copia maestra.

Mide. Compara la página con y sin las imágenes incrustadas en el panel Red (Network) del navegador o con Lighthouse. Si el CSS o el HTML crecen bastante y nada va más rápido, vuelve al archivo aparte.

Paso a paso

  1. Añade la imagenSuelta un PNG, JPG, SVG u otra imagen en la herramienta o ábrela desde tu dispositivo.
  2. Revisa el tamañoMira el tamaño del data URI y cuánto más ocupa que el archivo. Aparece un aviso si es tan grande que puede frenar la página.
  3. Elige la salidaEn Copiar como, elige Data URI, Base64, CSS, HTML o Markdown. Para SVG, activa Codificación URL en lugar de Base64 si quieres un resultado más corto.
  4. Copia y pegaCopia el código y pégalo en tu hoja de estilos, plantilla, JSON o README.

Preguntas frecuentes

¿Las imágenes en Base64 cargan más rápido que los archivos?

Solo las muy pequeñas, más o menos por debajo de 2 a 4 KB, donde ahorrar una petición importa más que el tamaño extra. Con imágenes más grandes, un archivo aparte es más rápido y se puede guardar en caché.

¿Cuánto más ocupa una imagen en Base64?

Alrededor de un 33 por ciento más que el archivo original, porque 3 bytes se convierten en 4 caracteres. Un icono de 3 KB pasa a unos 4 KB de texto.

¿Funcionan las imágenes Base64 en el correo electrónico?

No de forma fiable. Gmail y Outlook para Windows, entre otros, no muestran imágenes en data URI. Para correos usa imágenes alojadas o adjuntos CID.

¿Base64 perjudica el SEO?

No directamente, pero una imagen incrustada no tiene URL propia, así que es poco probable que aparezca en la búsqueda de imágenes como un archivo normal con un nombre descriptivo, y un HTML pesado hace más lenta la página. Usa archivos normales para las imágenes que quieras que se encuentren.

¿Se sube mi imagen al convertirla aquí?

No. La imagen se lee y se convierte en tu navegador y nunca se envía a un servidor. La herramienta es gratis y funciona sin conexión una vez cargada la página.

¿Puedo convertir una cadena Base64 de nuevo en imagen?

Sí. Pega el texto Base64 o el data URI completo en la misma herramienta. Verás la imagen y Descargar la guarda con la extensión correcta.