Base64 es una de las codificaciones más utilizadas en la web y una de las peor entendidas. Aparece dentro de tokens JWT, adjuntos de correo, data URLs, payloads de APIs, claves SSH y certificados TLS. Pero muchos desarrolladores la conocen cuando algo se rompe — un JWT que no decodifica, un PNG incrustado en CSS que se ve roto, o una API que rechaza una subida binaria. Esta guía explica qué es Base64 realmente, para qué se inventó y cuándo debes — y cuándo no — usarla.

Qué hace Base64

En esencia, Base64 toma datos binarios y los re-expresa usando sólo 64 caracteres ASCII imprimibles y seguros: A–Z, a–z, 0–9, más + y /. Cada 3 bytes de entrada (24 bits) se convierten en 4 caracteres (6 bits cada uno). El resultado ocupa aproximadamente un 33% más que la entrada, pero no contiene nada que pueda confundir a un sistema orientado a texto: sin saltos de línea, sin caracteres de control, sin bytes no ASCII.

Por qué existe

Los primeros protocolos de correo (SMTP, MIME) se diseñaron en torno a ASCII de 7 bits. Si querías adjuntar un PDF o una foto, los bytes crudos se corrompían al pasar por servidores intermedios que alegremente borraban el bit más alto o insertaban retornos de carro. Base64 resolvió el problema haciendo que lo binario pareciera texto aburrido. El mismo problema reaparece en JSON, parámetros URL, cabeceras HTTP y XML — cualquier sitio que asuma texto. Base64 es el adaptador universal.

Casos de uso habituales

Base64 no es cifrado

Merece su propia sección porque el error es frecuente y costoso. Base64 no tiene secreto: cualquiera con la cadena codificada puede decodificarla en una línea de consola. Nunca lo uses para proteger contraseñas, claves de API o datos de usuario. Si ves credenciales "ofuscadas" con Base64 en código fuente, considéralas texto plano. Usa cifrado real (AES, NaCl, libsodium) para todo lo que de verdad necesite mantenerse en secreto.

Variantes importantes

El Base64 estándar usa + y /, que no son seguros en URLs. base64url los reemplaza por - y _ y omite el relleno = — es lo que usan los JWT y las APIs web modernas. También hay variantes MIME con líneas envueltas (76 caracteres) y viejas implementaciones incorrectas que te encontrarás ocasionalmente. En caso de duda, verifica que el decodificador acepta exactamente el alfabeto que produjo la fuente.

Sobrecoste de tamaño

Tres bytes entran, cuatro caracteres salen. El coste exacto es 4⁄3 ≈ 33% antes del relleno o envoltura. Para activos pequeños suele merecer la pena; para nada mayor que unos kilobytes, considera una petición HTTP aparte.

Cuándo usarlo

Úsalo cuando datos binarios deban viajar por un canal sólo de texto y el tamaño no sea crítico. Usa cifrado real cuando importe la confidencialidad. Y cuando depures — pega primero en un decodificador antes de asumir que el token está roto; nueve de cada diez veces el token está bien y el sistema que lo desempaqueta espera un relleno o alfabeto distinto.