Codificador de imágenes Base64

Codifica imágenes a data URIs en Base64 para HTML y CSS

Suelta una imagen aquí o haz clic para subir

Compatible con PNG, JPG, SVG, WebP, GIF, AVIF

¿Qué es la codificación de imágenes en Base64?

La codificación de imágenes en Base64 convierte los datos binarios de una imagen en una cadena ASCII que puede incrustarse directamente en HTML, CSS o JSON sin referenciar un archivo externo. El resultado es un data URI — una cadena autocontenida que comienza con data:image/png;base64, seguida de los bytes codificados en Base64 de la imagen. Los navegadores tratan los data URIs exactamente igual que las URLs de imágenes externas: decodifican el contenido Base64 y renderizan la imagen en línea.

La técnica está definida por RFC 2397 (esquema data URI) y RFC 4648 (codificación Base64). Cuando una imagen se codifica en Base64, cada 3 bytes de datos binarios de píxeles se convierten en 4 caracteres ASCII, lo que aumenta el tamaño del contenido en aproximadamente un 33%. A pesar de esta sobrecarga, las imágenes en línea eliminan una petición HTTP por recurso — una optimización significativa cuando las imágenes son pequeñas (iconos, logos, píxeles de seguimiento 1x1) y la latencia de ida y vuelta de una petición separada superaría el coste de los bytes adicionales.

Los data URIs son compatibles con todos los navegadores modernos, clientes de correo electrónico (con matices) y cualquier contexto que acepte sintaxis URI estándar. Se usan ampliamente en aplicaciones de página única, plantillas de email HTML, sprites SVG y declaraciones CSS de background-image donde reducir el número total de peticiones de red mejora el tiempo de carga percibido.

¿Por qué usar este codificador de imágenes Base64?

Esta herramienta convierte cualquier imagen a un data URI listo para usar directamente en tu navegador — sin subidas, sin servidor, sin cuenta requerida.

Conversión instantánea
Arrastra y suelta una imagen o selecciona un archivo, y el data URI completo aparece de inmediato. Sin esperar procesamiento en servidor — la API FileReader lo gestiona todo de forma local.
🔒
Procesamiento con privacidad ante todo
Tus imágenes nunca abandonan tu dispositivo. La codificación se ejecuta íntegramente en el navegador usando el método nativo FileReader.readAsDataURL(). No se transmiten datos a ningún servidor.
🌐
Compatibilidad con todos los formatos principales
Acepta PNG, JPEG, SVG, WebP, GIF, ICO, BMP y cualquier otro formato de imagen compatible con tu navegador. El tipo MIME se detecta automáticamente a partir del archivo.
📦
Resultado listo para copiar
La salida es una cadena data URI completa — pégala directamente en el atributo src de una etiqueta img HTML, en una declaración CSS url(), o en un payload JSON sin ningún formateo manual.

Casos de uso de la codificación de imágenes en Base64

Desarrollo frontend
Incrusta iconos pequeños y recursos de interfaz directamente en HTML o CSS para eliminar peticiones HTTP. Esto reduce la latencia en cascada para imágenes críticas en la parte superior de la página, mejorando las puntuaciones de Largest Contentful Paint (LCP).
Plantillas de email HTML
Muchos clientes de correo bloquean las imágenes externas por defecto. Las imágenes Base64 en línea se renderizan de inmediato sin que el destinatario tenga que hacer clic en "cargar imágenes", mejorando las tasas de apertura y la coherencia visual.
Aplicaciones de página única
Empaqueta recursos pequeños como data URIs en tu JavaScript o CSS para reducir el número total de peticiones de red. Webpack y Vite admiten la inserción automática en Base64 para recursos por debajo de un umbral de tamaño configurable.
Payloads de API y JSON
Codifica avatares de usuario, firmas o miniaturas como cadenas Base64 para incluirlos directamente en respuestas de API JSON. Esto evita la necesidad de un endpoint separado de alojamiento de archivos para imágenes pequeñas.
Documentación y Markdown
Incrusta diagramas o capturas de pantalla como data URIs en archivos Markdown o documentos README. Las imágenes viajan con el documento y se muestran correctamente sin alojamiento externo.
Pruebas y prototipado
Usa data URIs Base64 como imágenes de marcador en fixtures de prueba, stories de Storybook o archivos HTML prototipo. No es necesario configurar un servidor de archivos estáticos ni gestionar recursos de imagen durante el desarrollo inicial.

Estructura de un data URI

Un data URI codifica el formato de la imagen y su contenido binario en una sola cadena. Entender su estructura ayuda al construir o analizar data URIs mediante programación:

ComponenteDescripción
data:URI scheme identifier
image/pngMIME type of the image
;base64,Encoding declaration
iVBORw0KGgo...Base64-encoded binary data

Comparación de formatos de imagen para codificación Base64

La elección del formato de imagen afecta el tamaño de la salida Base64, la compatibilidad con navegadores y las características de renderizado. Usa el formato que mejor se adapte a tu tipo de contenido:

FormatoTipo MIMETransparenciaIdeal para
PNGimage/pngYesScreenshots, icons, UI elements
JPEGimage/jpegNoPhotos, gradients, large images
SVGimage/svg+xmlYesLogos, icons, scalable graphics
WebPimage/webpYesModern web images, smaller files
GIFimage/gifYes (1-bit)Simple animations, small icons
ICOimage/x-iconYesFavicons

Ejemplos de código

Cómo convertir imágenes a data URIs Base64 en los lenguajes y entornos más populares:

JavaScript (browser)
// Convert a File object to a Base64 data URI
function fileToDataUri(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.onload = () => resolve(reader.result)
    reader.onerror = reject
    reader.readAsDataURL(file)
    // reader.result → "data:image/png;base64,iVBORw0KGgo..."
  })
}

// Convert a canvas element to a data URI
const dataUri = canvas.toDataURL('image/png')
// → "data:image/png;base64,iVBORw0KGgo..."

// Convert with quality parameter (JPEG/WebP only)
const jpegUri = canvas.toDataURL('image/jpeg', 0.8)
// → "data:image/jpeg;base64,/9j/4AAQ..."
Python
import base64

# Read an image file and encode it to a data URI
with open('logo.png', 'rb') as f:
    encoded = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:image/png;base64,{encoded}'
# → "data:image/png;base64,iVBORw0KGgo..."

# Detect MIME type automatically
import mimetypes
mime, _ = mimetypes.guess_type('photo.jpg')
# mime → "image/jpeg"

with open('photo.jpg', 'rb') as f:
    b64 = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:{mime};base64,{b64}'
Node.js
import { readFileSync } from 'fs'
import { lookup } from 'mime-types'

// Read file and encode to data URI
const buffer = readFileSync('icon.png')
const base64 = buffer.toString('base64')
const mime = lookup('icon.png') // → "image/png"

const dataUri = `data:${mime};base64,${base64}`
// → "data:image/png;base64,iVBORw0KGgo..."

// From a Buffer received via HTTP/API
function bufferToDataUri(buf, mimeType) {
  return `data:${mimeType};base64,${buf.toString('base64')}`
}
CLI (bash)
# Encode an image to Base64 (macOS)
base64 -i logo.png | tr -d '\n'

# Encode an image to a full data URI (Linux)
echo -n "data:image/png;base64,$(base64 -w 0 logo.png)"

# Encode and copy to clipboard (macOS)
echo -n "data:image/png;base64,$(base64 -i logo.png | tr -d '\n')" | pbcopy

# Detect MIME type and encode (Linux, requires file command)
MIME=$(file -b --mime-type image.webp)
echo -n "data:$MIME;base64,$(base64 -w 0 image.webp)"

Preguntas frecuentes

¿Cuál es el tamaño máximo de imagen para la codificación Base64?
No existe un límite estricto en la especificación Base64. La compatibilidad con data URIs varía según el navegador: la mayoría de los navegadores modernos gestionan data URIs de varios megabytes. Sin embargo, la codificación Base64 aumenta el tamaño un 33%, por lo que una imagen de 1 MB se convierte en aproximadamente 1,33 MB de texto. Para imágenes de más de 10-20 KB, servir archivos separados con caché adecuada es más eficiente.
¿La codificación Base64 reduce la calidad de la imagen?
No. Base64 es una codificación sin pérdida — convierte datos binarios a texto sin alterar el contenido. Los datos decodificados son idénticos byte a byte al archivo original. Cualquier pérdida de calidad vendría del formato de imagen en sí (p. ej., compresión JPEG), no de la codificación Base64.
¿Por qué la salida codificada en Base64 es más grande que la imagen original?
Base64 representa 3 bytes de datos binarios usando 4 caracteres ASCII, lo que supone un aumento de tamaño del 33%. Un data URI también añade un prefijo (p. ej., data:image/png;base64,) de aproximadamente 25-30 caracteres. Para imágenes pequeñas (menos de 2-5 KB), esta sobrecarga se compensa eliminando una petición HTTP. Para imágenes más grandes, la penalización de tamaño hace que los archivos externos sean más eficientes.
¿Puedo usar imágenes Base64 en CSS background-image?
Sí. Usa el data URI como valor de la función url(): background-image: url('data:image/png;base64,...'). Funciona en todos los navegadores modernos. Es más efectivo para patrones de fondo pequeños y de uso frecuente o iconos donde evitar una petición HTTP compensa el ligero aumento en el tamaño del CSS.
¿Es segura la codificación de imágenes en Base64 para imágenes confidenciales?
Base64 es una codificación, no un cifrado. Cualquier persona que vea el data URI puede decodificarlo y recuperar la imagen original. No confíes en Base64 para proteger imágenes confidenciales. Esta herramienta procesa las imágenes íntegramente en tu navegador — no se envían datos a ningún servidor — pero el data URI resultante es texto plano que puede ser leído por cualquier persona con acceso al código fuente de tu HTML o CSS.
¿Cómo convierto un data URI Base64 de vuelta a un archivo de imagen?
En JavaScript, usa fetch() con el data URI y llama a blob() sobre la respuesta, luego crea un enlace de descarga. En Python, divide la cadena por la coma, decodifica la parte Base64 con base64.b64decode() y escribe los bytes en un archivo. También puedes usar la herramienta Decodificador de imágenes Base64 de este sitio.
¿Debo codificar en Base64 todas las imágenes de mi sitio web?
No. La inserción en Base64 es beneficiosa para imágenes pequeñas (iconos, logos, píxeles 1x1) donde la sobrecarga de la petición HTTP supera la penalización del 33% de tamaño. Para imágenes más grandes, usa archivos separados con cabeceras de caché adecuadas — el navegador puede almacenarlos en caché de forma independiente y cargarlos en paralelo. Un umbral habitual es 2-8 KB: las imágenes por debajo de este tamaño se benefician de la inserción en línea, mientras que las más grandes deben servirse como archivos externos.