Subir un archivo
  1. base64hub
  2. Herramientas de imagen
  3. Base64 a JPG

Base64 a JPG

Pega el Base64 de una foto, con o sin el prefijo data:image/jpeg;base64,, y guárdala como .jpg. El archivo decodificado es el JPEG original byte a byte, metadatos incluidos.

Gratis sin registro, sin límites Local no se sube nada Exacto el archivo original byte a byte Actualizado 27 oct 2026
Entrada –Salida –Tamaño –

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo convertir Base64 a JPG

  1. Pega la cadena en el cuadro. Funcionan tanto el Base64 sin más que empieza por /9j/ como las URI completas data:image/jpeg;base64,, y también una etiqueta <img> o una regla CSS que contenga una.
  2. La línea de estado confirma Base64 válido y Detectado JPEG, y la vista previa muestra la foto con su tamaño en píxeles y el tamaño del archivo.
  3. Pon un Nombre de archivo y pulsa Descargar archivo.

Las fotos grandes no son problema. Una cadena Base64 de varios megabytes se puede pegar o abrir desde un archivo .txt; todo lo que pase de 4 MB se decodifica sin mostrarse en el cuadro de texto.

Qué obtienes

La decodificación devuelve exactamente los bytes que se codificaron. La calidad no cambia y no se vuelve a comprimir nada. Eso también significa que todo lo que contenía el archivo original vuelve con él:

  • Metadatos EXIF: modelo de cámara, hora de captura, orientación y, si la ubicación estaba activada, coordenadas GPS. Si recibiste el Base64 de otra persona, la foto puede decir más de lo que pretendía. Si vas a reenviarla, quita antes los metadatos, por ejemplo con JPG a Base64 y Quitar metadatos (EXIF).
  • Miniaturas incrustadas y perfiles de color.
  • Datos al final de la imagen. Las fotos en movimiento de algunos móviles Android añaden un vídeo corto tras el JPEG, y por eso una «foto» así puede ocupar varias veces más de lo esperado.

El SHA-256 bajo la vista previa te permite demostrar que el archivo guardado coincide con un hash que te dieron.

Distinguir un JPEG de lo que solo dice serlo

El decodificador se guía por los bytes e ignora la etiqueta. Una URI data:image/jpeg con datos PNG, o un campo de API llamado photo_jpg que contiene WebP, se identifica como lo que es: «Esto parece WebP, no JPEG», con un botón Descargar como .webp.

Los CDN de imágenes eligen el formato de salida según el encabezado Accept del navegador, así que una imagen descargada como photo.jpg y codificada luego en Base64 en un navegador puede ser WebP o AVIF. Una imagen copiada con «Copiar imagen» en un navegador suele llegar al portapapeles como PNG, aunque la página mostrara un JPEG, así que lo que la codificó desde el portapapeles generó Base64 de un PNG.

Si de verdad necesitas un JPEG, renombrar no sirve. Guarda el archivo en su formato real, conviértelo con Imagen a Base64 y Convertir a JPEG, y decodifica aquí ese resultado.

Cómo detectar un JPEG truncado

Los archivos JPEG terminan con el marcador FF D9. Según cómo se divida la longitud del archivo entre 3, eso da una de tres terminaciones en Base64:

Longitud del archivo mód. 3Últimos bytesEl Base64 termina en
2FF D9/9k=
1.. FF D9/2Q==
0.. FF D9/Z, normalmente //Z

Un JPEG cortado se sigue decodificando. Los navegadores dibujan la parte que recibieron, así que la zona inferior de la foto sale gris o falta, o un JPEG progresivo se ve borroso. Las causas típicas son una columna de base de datos demasiado corta, un logger que limita la longitud de línea y una app de mensajería que parte los textos largos. Vuelve a copiar el valor desde su origen.

La misma comprobación en Python:

import base64

def check_jpeg(b64: str) -> str:
    data = base64.b64decode(b64.split(",", 1)[-1])
    if not data.startswith(b"\xff\xd8\xff"):
        return "not a JPEG"
    end = data.rfind(b"\xff\xd9")
    if end < 0:
        return "truncated: no end-of-image marker"
    extra = len(data) - end - 2
    return f"complete, {extra} bytes after the end marker" if extra else "complete"

Tómalo como una prueba rápida. Un JPEG de cámara lleva una miniatura EXIF con su propio FF D9, así que una foto muy truncada puede pasar la prueba. Base64 en Python explica más sobre la decodificación de archivos.

Problemas habituales

  • Error «Longitud incorrecta». Se perdió o se añadió un carácter, normalmente en un salto de línea al copiar. Vuelve a copiar el valor completo.
  • Carácter no válido \. La cadena venía de un JSON con barras escapadas (\/9j\/4AAQ...). Pásala por Reparar Base64 o quita antes los escapes del JSON.
  • La foto es enorme. Base64 oculta el tamaño real de una imagen: una cadena de 4 MB es una foto de 3 MB. La fila Tamaño muestra el tamaño decodificado, y las dimensiones en píxeles aparecen sobre la vista previa.

Preguntas frecuentes

¿El archivo decodificado debe ser .jpg o .jpeg?

Da igual. Las dos extensiones significan el mismo formato y todos los programas aceptan ambas. La herramienta usa .jpg; escribe jpeg en Extensión si un sistema exige la forma larga.

¿Cómo compruebo que una cadena Base64 de un JPEG está completa?

Un JPEG completo termina con los bytes FF D9, así que su Base64 suele terminar en /9k=, /2Q== o /Z. Una cadena que termina de otra forma y una imagen a la que le falta la parte inferior apuntan las dos a un truncamiento.

¿Puedo ver los datos EXIF de la foto decodificada?

La herramienta no lista los campos EXIF, pero Mostrar volcado hex deja ver un bloque Exif y a menudo el fabricante de la cámara en la columna de texto. Descarga el archivo y ábrelo en un visor EXIF para ver la lista completa.

¿Por qué la foto decodificada sale girada en algunas apps?

Los móviles suelen guardar los píxeles de lado y registrar la rotación en una etiqueta EXIF. Los navegadores la aplican, así que la vista previa se ve bien, pero el software que ignora la etiqueta muestra la orientación en bruto. Los bytes no cambian en ningún caso.