Conversor de Imágenes Base64

Convierte una imagen en un URI de datos Base64, o pega una cadena Base64 para recuperar una imagen descargable — todo se ejecuta localmente, nada se sube a ningún servidor.

251 visitas

Cómo Funciona

Esta herramienta funciona en dos direcciones. En el modo Imagen → Base64, elige un archivo con el selector nativo del navegador; la herramienta lo lee con la API FileReader.readAsDataURL() y genera un URI de datos completo — una cadena como data:image/png;base64,iVBORw0KG... — que se muestra en un cuadro, mientras que el contenido Base64 en bruto (sin prefijo) se muestra en un segundo cuadro para que puedas tomar la forma que necesites, con un botón de copiar de un solo clic para cada una. En el modo Base64 → Imagen, pega en el área de texto ya sea un URI de datos completo o solo el texto Base64 puro; si pegas Base64 puro sin prefijo, la herramienta añade automáticamente una cabecera data:image/png;base64, para que el navegador pueda seguir mostrándola, y luego aparece una vista previa en vivo con una etiqueta <img> junto con un botón de descarga que guarda los bytes decodificados como un archivo de imagen real.

La codificación Base64 toma datos binarios y los representa usando solo 64 caracteres ASCII imprimibles (A–Z, a–z, 0–9, + y /), lo que permite incrustar una imagen —inherentemente binaria— dentro de formatos de solo texto como HTML, CSS, JSON o una URL. El mecanismo es fijo y matemático: cada 3 bytes (24 bits) del archivo original se convierten exactamente en 4 caracteres Base64 (4 × 6 bits), rellenados con = cuando la longitud de entrada no es múltiplo de 3. Esa proporción de 3 bytes de entrada por 4 caracteres de salida es también la razón por la que la salida Base64 siempre es aproximadamente un 33% más grande que el binario original — 4 dividido entre 3 es aproximadamente 1,333 —, una sobrecarga matemática fija, no una aproximación ni un ajuste de calidad.

Datos Útiles

Incrustar una imagen como URI de datos directamente en tu HTML o CSS tiene una ventaja real: elimina una solicitud HTTP adicional, algo que importa para recursos muy pequeños y reutilizados con frecuencia, como iconos, sprites pequeños o un logotipo diminuto incrustado en una plantilla de correo electrónico donde las imágenes externas podrían estar bloqueadas. La desventaja se invierte para cualquier cosa más grande: un URI de datos no puede almacenarse en caché de forma independiente por el navegador como sí puede hacerlo un archivo .png o .jpg enlazado, infla el tamaño del archivo HTML/CSS que lo contiene (en ese mismo ~33%) y bloquea el renderizado de ese archivo hasta que se haya descargado todo el bloque codificado. Como regla general, los URI de datos son adecuados para recursos de pocos kilobytes y poco adecuados para fotografías, imágenes principales o cualquier cosa que el usuario quiera que se almacene en caché entre cargas de página.

El prefijo de tipo MIME — la parte image/png, image/jpeg o image/webp de data:image/png;base64,... — no es decorativo. Es lo que le indica al navegador (o a cualquier otro programa que lea la cadena) a qué decodificador entregar los siguientes bytes; sin él, o con uno incorrecto, un contenido Base64 por lo demás válido puede no renderizarse o hacerlo como un tipo de archivo completamente distinto. Por eso exactamente esta herramienta añade automáticamente un prefijo PNG cuando pegas Base64 puro sin ninguno especificado — un valor predeterminado razonable, aunque conviene cambiarlo para que coincida con el formato real del archivo original si sabes que era un JPEG o WebP.

Preguntas Frecuentes

¿Por qué la salida Base64 siempre es más grande que la imagen original?

Base64 codifica cada 3 bytes de entrada binaria como 4 caracteres de texto, así que la salida siempre es aproximadamente 4/3 del tamaño de la entrada — cerca de un 33% más grande. Es una propiedad matemática fija de la codificación (6 bits de información por carácter imprimible en lugar de 8), no algo causado por ajustes de baja calidad ni por una herramienta ineficiente.

¿Mi imagen se sube a un servidor para convertirla?

No. Ambas direcciones se ejecutan por completo en tu navegador: FileReader.readAsDataURL() lee el archivo localmente, y la decodificación de vuelta a imagen también ocurre localmente. Nada se transmite a ninguna parte.

¿Cuándo tiene sentido usar realmente un URI de datos Base64 en vez de un archivo de imagen normal?

Tiene sentido para recursos pequeños y reutilizados con frecuencia — iconos, pequeños sprites de interfaz, un logotipo en un correo HTML — donde ahorrar una solicitud HTTP compensa el aumento de tamaño de ~33%. Es poco adecuado para fotografías o cualquier imagen que quieras que el navegador almacene en caché de forma independiente entre páginas, ya que un URI de datos incrustado se vuelve a descargar cada vez que se carga el archivo HTML o CSS que lo contiene.

Pegué una cadena Base64 pero no aparece nada en la vista previa — ¿por qué?

Dos causas comunes: a la cadena le falta el prefijo de tipo MIME (o tiene uno incorrecto) — esta herramienta añade automáticamente data:image/png;base64, si no hay ninguno, pero eso solo ayuda si los bytes subyacentes son realmente datos PNG — o el propio texto Base64 se truncó o se corrompió (por ejemplo, por espacios en blanco o saltos de línea insertados al copiar desde ciertas fuentes). Verifica que el prefijo coincida con el formato real y que copiaste la cadena completa.

¿Cuál es la diferencia entre los cuadros de salida "URI de datos completo" y "solo Base64"?

El URI de datos completo (que empieza con data:image/...;base64,) es lo que pegas directamente en un atributo src de HTML o en un url() de CSS para que el navegador lo renderice de inmediato. El cuadro de solo Base64 elimina ese prefijo, que es lo que necesitas cuando un programa, una API o un archivo de configuración esperan únicamente el contenido codificado en bruto y añadirán su propia información de tipo por separado.

Comentarios

Aún no hay comentarios — ¡sé el primero en escribir uno!

Herramientas Similares