Tutorial · Desarrolladores

Cómo codificar y decodificar en Base64

Abres el código de una web y ves una imagen escrita como una cadena interminable de letras y números. Un token de sesión parece un galimatías de 200 caracteres. Un email con adjunto muestra bloques de texto aparentemente aleatorios. En todos estos casos estás viendo Base64: la forma estándar de representar datos binarios como texto.

En este tutorial aprenderás qué es Base64, cómo funciona su codificación, cuándo usarlo —y cuándo evitarlo—, y harás tus propias codificaciones y decodificaciones paso a paso.

Qué es Base64: binario disfrazado de texto

Base64 resuelve un problema antiguo: muchos sistemas —emails, URLs, JSON, HTML— solo manejan texto de forma fiable, pero a veces necesitas transportar datos binarios —imágenes, archivos, bytes arbitrarios— por esos canales. Base64 traduce cualquier secuencia de bytes a una cadena de texto segura usando un alfabeto de 64 caracteres: A-Z, a-z, 0-9, más + y /, con = como relleno.

El mecanismo es elegante: toma los bytes de entrada en grupos de 3 (24 bits) y los reparte en 4 grupos de 6 bits; cada grupo de 6 bits —valores de 0 a 63— se representa con un carácter del alfabeto. Por eso la salida es siempre un 33 % más larga que la entrada: 3 bytes se convierten en 4 caracteres.

Un ejemplo mínimo: el texto «Hola» son 4 bytes. En grupos de 3: «Hol» + «a». Codificado resulta «SG9sYQ==»: 8 caracteres para 4 bytes de entrada, con == de relleno porque 4 no es múltiplo de 3. Puedes verificarlo con cualquier codificador online: el resultado será siempre el mismo.

Cómo codificar y decodificar paso a paso

Codificar es mecánico: introduces tus datos en la herramienta gratuita de Base64 de Tótem (usatotem.com/herramientas-desarrollador/base64/), eliges codificar y obtienes la cadena. Decodificar es el proceso inverso: pegas la cadena y recuperas los datos originales, byte a byte, sin pérdida alguna.

La codificación es determinista: los mismos bytes producen siempre la misma cadena. Esto la hace útil para comparar o identificar contenidos, aunque para eso los hashes son mejores. Y es totalmente reversible: no hay pérdida de información en ningún sentido.

Un detalle práctico: si vas a codificar un documento JSON para transportarlo, minifícalo primero con la herramienta gratuita de minificar JSON (usatotem.com/herramientas-desarrollador/minificar-json/). Eliminar espacios y saltos de línea reduce los bytes de entrada, y con el sobrecoste del 33 % de Base64, cada byte ahorrado cuenta triple.

Usos reales: data URIs, JWT, emails y APIs

El uso más visible son las data URIs: incrustar imágenes directamente en HTML o CSS como data:image/png;base64,iVBORw0KGgo.... Esto elimina una petición HTTP al servidor, lo que acelera la carga de imágenes pequeñas como iconos o logos. La contrapartida es el 33 % de sobrecoste y que la imagen no se cachea por separado.

La regla práctica: data URIs para imágenes de menos de 2-4 KB —iconos, miniaturas—, archivos separados para todo lo demás. Una foto de 500 KB incrustada en Base64 se convierte en 665 KB dentro de tu HTML, bloqueando su renderizado: un desastre de rendimiento.

Otros usos cotidianos: los tokens JWT usan Base64 para sus tres partes (cabecera, payload, firma); los emails codifican los adjuntos en Base64 dentro del mensaje; y las credenciales básicas de HTTP viajan como usuario:contraseña en Base64 —que no es cifrado, como veremos, solo transporte—. Reconocer estos patrones te ayuda a depurar APIs y protocolos.

Lo que Base64 NO es: no es cifrado

La confusión más peligrosa: creer que Base64 protege los datos. No lo hace. Es una codificación pública y reversible sin clave: cualquiera que intercepte «SG9sYQ==» puede decodificarlo a «Hola» en un segundo con herramientas gratuitas. Base64 es como escribir un mensaje con un alfabeto alternativo: no lo oculta, solo lo transforma.

Esto tiene implicaciones directas. Las credenciales en Base64 dentro de cabeceras HTTP solo son seguras si viajan sobre HTTPS, que es quien cifra de verdad. Un token JWT codifica su contenido en Base64 —cualquiera puede leerlo—, y su seguridad reside en la firma criptográfica, no en la codificación.

La regla de oro: Base64 es para transporte y compatibilidad, nunca para confidencialidad. Si necesitas que algo sea secreto, usa cifrado real (AES, TLS) o un hash con sal para verificación. Y jamás almacenes «contraseñas en Base64» pensando que están protegidas: es uno de los errores de seguridad más comunes y más fáciles de explotar.

Tres decisiones prácticas al usar Base64

Para cerrar, tres decisiones prácticas. Primera: ¿texto o binario? Si tus datos ya son texto —JSON, XML—, no los codifiques en Base64 sin motivo: solo añadirás peso. Base64 es para datos binarios que deben viajar por canales de texto.

Segunda: ¿qué variante? La estándar usa + y /, problemáticos en URLs. Si tu cadena viaja en una dirección web o un parámetro, usa la variante URL-safe que los sustituye por - y _. Muchas herramientas la ofrecen como opción.

Tercera: ¿merece la pena el sobrecoste? El 33 % extra es aceptable para tokens, iconos y metadatos, pero prohibitivo para archivos grandes. Para ficheros pesados existen alternativas mejores: subida multipart, almacenamiento de objetos con URLs firmadas o compresión previa. Base64 es una herramienta de precisión, no un camión de mudanzas.

Herramientas gratuitas mencionadas

Preguntas frecuentes

¿Base64 cifra los datos?

No: Base64 es una codificación reversible y pública, sin clave. Cualquiera puede decodificar una cadena Base64 en segundos. Para proteger datos necesitas cifrado real (AES, TLS); Base64 solo sirve para transporte, nunca para confidencialidad.

¿Por qué algunas cadenas Base64 terminan en =?

El relleno con = aparece cuando los bytes de entrada no son múltiplo de 3: se añaden uno o dos = al final para completar el último grupo de 4 caracteres. Es parte normal del formato; al decodificar se ignoran.

¿Base64 funciona en URLs?

Existen variantes: la estándar usa + y /, y la «URL-safe» los sustituye por - y _ para no interferir con direcciones web. Si tu Base64 viaja en una URL, usa la variante URL-safe o codifica los caracteres especiales.

¿Debo codificar en Base64 los datos de mi API JSON?

Porque JSON es texto y Base64 también: codificar un JSON no aporta nada salvo peso extra. Base64 tiene sentido para datos binarios (imágenes, archivos) o para empaquetar datos en contextos que exigen texto plano ASCII.

En resumen

Base64 es una de esas tecnologías invisibles que conviene entender: no es cifrado, es una traducción que permite llevar datos binarios por canales de texto. Conociendo su alfabeto de 64 caracteres, su sobrecoste del 33 % y sus usos típicos —data URIs, APIs, credenciales en tránsito—, sabrás cuándo usarlo y cuándo no.

La próxima vez que veas una cadena larga de letras, números, + y / terminada en =, ya sabrás qué es. Y si necesitas transportar un JSON pesado codificado, minifícalo primero con la herramienta gratuita de minificar JSON: menos bytes de entrada, menos caracteres de salida.

Artículos relacionados

Privacidad por diseño. Tus archivos no salen de tu navegador.