Codificador de Archivos Base64
Codifica cualquier archivo a Base64: PDF, ZIP, imágenes y más
Suelta cualquier archivo aquí o haz clic para cargar
Cualquier tipo de archivo: PDF, ZIP, imágenes, archivos binarios
¿Qué es la Codificación de Archivos Base64?
La codificación de archivos Base64 convierte archivos binarios (PDFs, ZIPs, imágenes, ejecutables, fuentes, audio) en texto ASCII plano utilizando el alfabeto definido en RFC 4648. Cada tres bytes de entrada binaria se convierten en cuatro caracteres Base64, produciendo una representación de texto que puede viajar a través de canales diseñados exclusivamente para texto: cargas útiles de API JSON, documentos XML, cuerpos de correo electrónico, atributos HTML y variables de entorno.
A diferencia de la codificación de texto a Base64 (que opera en cadenas), la codificación de archivo a Base64 lee el flujo de bytes sin procesar de cualquier archivo independientemente de su formato. Los encabezados binarios de un PDF, los bloques comprimidos de un ZIP y los datos de píxeles de un PNG se tratan idénticamente: como una secuencia de octetos para ser recodificados. El resultado siempre es ASCII válido, seguro para incrustar en cualquier lugar que acepte caracteres imprimibles.
La compensación es el tamaño: la salida Base64 es aproximadamente 33% más grande que el binario original. Para un PDF de 1 MB, eso significa aproximadamente 1,33 MB de texto Base64. Esta sobrecarga es inherente a la codificación y ninguna implementación puede evitarla. A pesar de esto, la codificación de archivos Base64 sigue siendo el método estándar para incrustar datos binarios en formatos de solo texto, especificado en MIME (RFC 2045), URIs de datos (RFC 2397) y JSON Web Tokens (RFC 7519).
¿Por Qué Usar Este Codificador de Archivos Base64?
Esta herramienta codifica archivos a Base64 directamente en tu navegador usando la API de FileReader. Ningún archivo se carga a un servidor: toda la conversión ocurre en el cliente en JavaScript.
Casos de Uso de Codificación de Archivos Base64
Sobrecarga de Tamaño de Archivo Base64
La codificación Base64 aumenta el tamaño de datos exactamente en una tercera parte. Cada 3 bytes de entrada producen 4 caracteres de salida (cada uno representando 6 bits). Los caracteres de relleno (=) se agregan cuando la longitud de entrada no es múltiplo de 3. La tabla a continuación muestra la relación entre el tamaño de archivo original y el tamaño de salida codificado.
| Tamaño de Archivo | Bytes Sin Procesar | Bytes Base64 | Sobrecarga |
|---|---|---|---|
| 1 KB | 1,024 B | 1,368 B | +33.3% |
| 10 KB | 10,240 B | 13,656 B | +33.4% |
| 100 KB | 102,400 B | 136,536 B | +33.3% |
| 1 MB | 1,048,576 B | 1,398,104 B | +33.3% |
| 5 MB | 5,242,880 B | 6,990,508 B | +33.3% |
| 10 MB | 10,485,760 B | 13,981,016 B | +33.3% |
Referencia de URI de Datos y Tipo MIME
Un URI de datos incrusta contenido de archivo directamente en HTML, CSS o JavaScript utilizando el formato data:[tipo MIME];base64,[datos codificados]. El tipo MIME le dice al navegador cómo interpretar los bytes decodificados. A continuación se encuentran extensiones de archivo comunes, sus tipos MIME y el prefijo de URI de datos correspondiente.
| Extensión | Tipo MIME | Prefijo de URI de Datos |
|---|---|---|
| application/pdf | data:application/pdf;base64,... | |
| .zip | application/zip | data:application/zip;base64,... |
| .png | image/png | data:image/png;base64,... |
| .jpg | image/jpeg | data:image/jpeg;base64,... |
| .gif | image/gif | data:image/gif;base64,... |
| .svg | image/svg+xml | data:image/svg+xml;base64,... |
| .woff2 | font/woff2 | data:font/woff2;base64,... |
| .mp3 | audio/mpeg | data:audio/mpeg;base64,... |
| .wasm | application/wasm | data:application/wasm;base64,... |
| .bin | application/octet-stream | data:application/octet-stream;base64,... |
Ejemplos de Código
Estos ejemplos ejecutables muestran cómo leer un archivo binario y codificarlo a Base64 en JavaScript, Python, Node.js, bash y Go. Cada fragmento produce Base64 estándar (RFC 4648 Sección 4) con relleno.
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
const file = e.target.files[0]
const reader = new FileReader()
reader.onload = () => {
const base64 = reader.result.split(',')[1]
console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
}
reader.readAsDataURL(file)
})
// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
const buffer = await blob.arrayBuffer()
const bytes = new Uint8Array(buffer)
let binary = ''
bytes.forEach(b => binary += String.fromCharCode(b))
return btoa(binary) // → standard Base64 string
}import base64
from pathlib import Path
# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40]) # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."
# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)
# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60]) # → "data:application/pdf;base64,JVBERi0xLj..."import { readFileSync, writeFileSync } from 'fs'
// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)
// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)
// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`# Encode a file to Base64 (macOS / Linux) base64 < document.pdf > document.b64.txt # Encode with no line wrapping (GNU coreutils) base64 -w 0 < document.pdf > document.b64.txt # Encode and copy to clipboard (macOS) base64 < image.png | pbcopy # Encode with OpenSSL (available everywhere) openssl base64 -in archive.zip -out archive.b64.txt # Pipe directly into curl for API upload base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
package main
import (
"encoding/base64"
"fmt"
"os"
)
func main() {
data, err := os.ReadFile("document.pdf")
if err != nil {
panic(err)
}
encoded := base64.StdEncoding.EncodeToString(data)
fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)
// Write to file
os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}