Decodificador de imágenes Base64

Decodifica data URIs de Base64 a imágenes visuales

Entrada Base64

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

La decodificación de imágenes Base64 es lo opuesto a la codificación: toma una cadena Base64 o data URI que representa una imagen y la convierte nuevamente en datos binarios visibles. Cuando recibas una cadena como data:image/png;base64,iVBORw0KGgo..., la decodificación elimina el prefijo de data URI, revierte la codificación Base64 definida en RFC 4648 y reconstruye los bytes originales de la imagen. El navegador puede entonces renderizar los bytes decodificados como una imagen visible.

Los data URIs (RFC 2397) agrupan el tipo MIME y el contenido codificado en Base64 en una única cadena. Aparecen frecuentemente en respuestas de API, código fuente de correos HTML, hojas de estilo CSS y registros de base de datos donde las imágenes se almacenan como texto en lugar de archivos binarios. Decodificar estas cadenas es necesario para previsualizar la imagen, verificar su contenido o guardarla como archivo independiente. Como Base64 utiliza 4 caracteres ASCII para representar cada 3 bytes de datos binarios, la cadena codificada siempre es aproximadamente un 33% más grande que la imagen original.

Esta herramienta analiza tanto data URIs completos (data:image/png;base64,...) como cadenas Base64 sin el prefijo data:. Para cadenas sin prefijo, el formato de la imagen se detecta automáticamente inspeccionando los primeros caracteres Base64, que corresponden a los magic bytes del archivo — por ejemplo, iVBORw0KGgo siempre indica un archivo PNG. La imagen decodificada se renderiza directamente en el navegador y puede descargarse como archivo.

Un escenario común es trabajar con una API REST que devuelve una foto de perfil o miniatura de documento como cadena Base64 dentro de un campo JSON — por ejemplo, {"avatar": "data:image/png;base64,iVBORw0KGgo..."}. Para usar la imagen, extrae el valor del campo, elimina el prefijo de data URI hasta la coma inclusive, y luego alimenta los caracteres Base64 restantes a través de un decodificador como atob() en JavaScript o base64.b64decode() en Python para recuperar los bytes originales. Pegar el valor completo en esta herramienta salta todos esos pasos manuales y renderiza la imagen instantáneamente.

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

Esta herramienta convierte datos de imágenes Base64 nuevamente en una imagen visible y descargable completamente en tu navegador — sin carga, sin procesamiento en servidor, sin cuenta requerida.

Vista previa instantánea
Pega una cadena Base64 o data URI y ve la imagen decodificada inmediatamente. Sin esperar procesamiento del lado del servidor — el navegador decodifica y renderiza el resultado localmente.
🔒
Procesamiento con privacidad primero
Tus datos de imagen nunca salen de tu dispositivo. La decodificación se ejecuta completamente en el navegador utilizando APIs JavaScript nativos. Ninguna cadena Base64 se transmite a ningún servidor.
🖼️
Detección automática de formato
Compatible con PNG, JPEG, SVG, WebP, GIF, BMP e ICO. El tipo MIME se extrae del prefijo de data URI o se detecta automáticamente desde los magic bytes Base64 cuando no hay prefijo presente.
📋
Descargar el resultado
Guarda la imagen decodificada como archivo con la extensión correcta. La descarga utiliza el formato detectado — sin renombramiento manual de .txt a .png requerido.

Casos de uso de decodificación de imágenes Base64

Depuración de frontend
Inspecciona imágenes codificadas en Base64 incrustadas en código fuente HTML, CSS o JavaScript. Pega el data URI para verificar que la imagen correcta se esté renderizando antes de desplegar.
Inspección de respuestas de API
Las APIs REST y GraphQL frecuentemente devuelven imágenes como cadenas Base64 en cargas útiles JSON — avatares de usuarios, miniaturas de documentos o códigos QR. Decodifícalos para verificar que el contenido coincida con las expectativas.
Desarrollo de plantillas de correo
Los correos HTML frecuentemente incrustan imágenes como data URIs para evitar bloqueos de imágenes externas. Decodifica el Base64 para previsualizar lo que los destinatarios verán sin enviar un correo de prueba.
Verificación de registros de base de datos
Cuando las imágenes se almacenan como texto Base64 en columnas de base de datos (campos MongoDB, PostgreSQL text), decodifica registros de muestra para confirmar la integridad de datos después de migraciones o importaciones.
Análisis de seguridad
Inspecciona cargas útiles de imágenes Base64 sospechosas en registros, correos o tráfico web. La decodificación revela el contenido y formato real de la imagen, ayudando a identificar píxeles de rastreo o datos incrustados inesperados.
Aprendizaje y educación
Entiende cómo funciona la codificación Base64 codificando una imagen y luego decodificándola nuevamente. Compara el archivo original con el resultado convertido para verificar que Base64 es una codificación sin pérdida.

Estructura de Data URI para imágenes

Un data URI empaqueta el tipo de imagen y el contenido codificado en una única cadena. Cada componente es esencial para una decodificación correcta: el esquema (data:) señala que la URL es independiente en lugar de una referencia a un recurso externo; el tipo MIME (p. ej., image/png) le indica al renderizador qué formato usar al interpretar los bytes crudos; el marcador ;base64, distingue contenido codificado en Base64 de data URIs que utilizan codificación de porcentaje para formatos de texto plano. La carga útil Base64 en sí puede terminar con uno o dos caracteres de relleno = — estos son necesarios cuando el número de bytes de entrada no es múltiplo de tres, asegurando que la longitud codificada sea siempre múltiplo de cuatro. Omitir o truncar cualquiera de estos componentes causa que la decodificación falle o produzca una imagen corrupta.

ComponenteDescripción
data:URI scheme identifier
image/pngMIME type declaring the image format
;base64,Encoding declaration (always base64 for binary)
iVBORw0KGgo...Base64-encoded pixel data

Detección del formato de imagen desde Base64

Cuando una cadena Base64 carece de un prefijo data:, el formato de imagen puede identificarse inspeccionando los primeros caracteres. Estos caracteres corresponden a los magic bytes del archivo — secuencias de bytes fijas al inicio de cada archivo de imagen que identifican el formato:

FormatoPrefijo Base64Firma hexadecimalTipo MIME
PNGiVBORw0KGgo89 50 4E 47image/png
JPEG/9j/FF D8 FFimage/jpeg
GIFR0lGOD47 49 46 38image/gif
WebPUklGR52 49 46 46image/webp
SVGPHN2Zy3C 73 76 67 (text)image/svg+xml
BMPQk42 4Dimage/bmp
ICOAAABAA00 00 01 00image/x-icon

Ejemplos de código

Cómo decodificar cadenas de imágenes Base64 nuevamente en archivos de imagen en lenguajes y entornos populares:

JavaScript (browser)
// Decode a Base64 data URI to a Blob and create a download link
const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Method 1: fetch API (simplest)
const res  = await fetch(dataUri)
const blob = await res.blob()
// blob.type → "image/png", blob.size → 2048

// Method 2: manual decode for older environments
const [header, b64] = dataUri.split(',')
const mime    = header.match(/:(.*?);/)[1]   // → "image/png"
const binary  = atob(b64)
const bytes   = Uint8Array.from(binary, c => c.charCodeAt(0))
const blob2   = new Blob([bytes], { type: mime })

// Create a download link
const url = URL.createObjectURL(blob)
const a   = document.createElement('a')
a.href = url
a.download = 'decoded.png'
a.click()
URL.revokeObjectURL(url)
Python
import base64
import re

data_uri = 'data:image/png;base64,iVBORw0KGgo...'

# Parse the data URI
match = re.match(r'data:(image/[\w+.-]+);base64,(.+)', data_uri)
mime_type = match.group(1)    # → "image/png"
b64_data  = match.group(2)

# Decode and write to file
image_bytes = base64.b64decode(b64_data)
ext = mime_type.split('/')[1].replace('jpeg', 'jpg').replace('svg+xml', 'svg')

with open(f'output.{ext}', 'wb') as f:
    f.write(image_bytes)
# → writes output.png (byte-for-byte identical to the original)

# Decode raw Base64 (no data: prefix)
raw_b64 = 'iVBORw0KGgo...'
image_bytes = base64.b64decode(raw_b64)
Node.js
import { writeFileSync } from 'fs'

const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Extract MIME type and Base64 payload
const [meta, b64] = dataUri.split(',')
const mime = meta.match(/:(.*?);/)[1]  // → "image/png"

// Decode to Buffer and save
const buffer = Buffer.from(b64, 'base64')
writeFileSync('output.png', buffer)
// → output.png (identical to the original file)

// Validate by checking magic bytes
console.log(buffer.subarray(0, 4))
// PNG → <Buffer 89 50 4e 47>  (\x89PNG)
// JPEG → <Buffer ff d8 ff e0>
CLI (bash)
# Decode a raw Base64 string to an image file (Linux)
echo 'iVBORw0KGgo...' | base64 -d > output.png

# Decode a raw Base64 string to an image file (macOS)
echo 'iVBORw0KGgo...' | base64 -D > output.png

# Extract Base64 from a data URI and decode
echo 'data:image/png;base64,iVBORw0KGgo...' | \
  sed 's/^data:.*base64,//' | base64 -d > output.png

# Identify the image format from the decoded file
file output.png
# → output.png: PNG image data, 64 x 64, 8-bit/color RGBA

Preguntas frecuentes

¿Cuál es la diferencia entre un data URI y una cadena Base64 cruda?
Un data URI incluye un prefijo que declara el tipo MIME y codificación: data:image/png;base64,iVBORw0KGgo.... Una cadena Base64 cruda contiene solo los bytes codificados (iVBORw0KGgo...) sin metadatos. Esta herramienta acepta ambos formatos. Cuando pegas una cadena cruda, detecta el formato de imagen automáticamente desde los magic bytes Base64.
¿Decodificar Base64 cambia la calidad de la imagen?
No. Base64 es una codificación sin pérdida que convierte datos binarios a texto ASCII y de vuelta sin alterar un solo byte. La imagen decodificada es idéntica byte-por-byte al archivo original. Cualquier diferencia de calidad que notes proviene del formato de imagen en sí (p. ej., compresión JPEG aplicada antes de codificar), no del paso de decodificación Base64.
¿Cómo puedo saber qué formato tiene una imagen Base64?
Si la cadena comienza con data:image/png;base64, el formato está declarado en el tipo MIME. Para cadenas Base64 crudas, inspecciona los primeros caracteres: iVBORw0KGgo indica PNG, /9j/ indica JPEG, R0lGOD indica GIF, y UklGR indica WebP. Estos prefijos corresponden a los magic bytes de cada formato.
¿Por qué mi cadena Base64 falla al decodificarse?
Las causas comunes incluyen datos truncados (la cadena fue cortada durante copia-pega), caracteres incorrectos (Base64 utiliza A-Z, a-z, 0-9, +, / y = para relleno), espacios incrustados o saltos de línea, y un prefijo de data URI faltante o malformado. Esta herramienta elimina espacios automáticamente, pero los datos truncados o corruptos no pueden recuperarse.
¿Es seguro decodificar imágenes Base64 de fuentes no confiables?
Esta herramienta decodifica y renderiza imágenes en el sandbox del navegador, que las aísla de tu sistema. Sin embargo, las imágenes SVG pueden contener JavaScript incrustado. Los navegadores modernos bloquean la ejecución de scripts en SVG renderizado mediante etiquetas img o data URIs, pero ten cuidado con SVGs de fuentes no confiables. La herramienta no ejecuta ningún script desde imágenes decodificadas.
¿Puedo decodificar imágenes Base64 sin conexión a Internet?
Sí, una vez que la página se ha cargado. Toda la decodificación se ejecuta localmente en tu navegador utilizando APIs JavaScript nativos (atob, Uint8Array, Blob). No se realizan solicitudes de red durante el proceso de decodificación. La herramienta funciona idénticamente sin conexión.
¿Cuál es la longitud máxima de cadena Base64 que esta herramienta puede manejar?
El límite práctico depende de la memoria de tu navegador. La mayoría de navegadores modernos manejan data URIs de varios megabytes sin problemas. Para imágenes muy grandes (10 MB+ codificadas), podrías experimentar renderización más lenta. En ese tamaño, decodificar programáticamente con Node.js o Python y escribir directamente a un archivo es más eficiente que usar una herramienta basada en navegador.