Base64 es una forma de representar datos binarios arbitrarios como texto compuesto solo por letras, números y los caracteres +, / y =. No comprime ni cifra los datos: el resultado ocupa aproximadamente un tercio más, y cualquiera que conozca el algoritmo puede leer el contenido original.
Cómo funciona la codificación
Los bytes de entrada se agrupan de tres en tres (24 bits) y se dividen en cuatro bloques de seis bits. Cada bloque corresponde a un carácter del alfabeto Base64 (A–Z, a–z, 0–9, +, /). Si la longitud de los datos no es múltiplo de tres bytes, al final se añade el carácter de relleno =.
Para qué sirve
Muchos protocolos y formatos —correo electrónico (MIME), URL, JSON, XML— están pensados para texto y no manejan bien bytes "en crudo": bytes nulos, caracteres de control o secuencias que chocan con la sintaxis del formato. Base64 evita ese problema convirtiendo cualquier dato binario en texto seguro.
Casos de uso habituales
- Adjuntos de correo mediante MIME.
- Enviar imágenes o archivos pequeños dentro de una API JSON.
- Guardar datos binarios en campos de texto de una base de datos o archivo de configuración.
- Codificar las partes header y payload de un JWT.
Qué NO es Base64
No es cifrado ni hashing. Cualquiera puede decodificar una cadena Base64 y recuperar los datos originales sin necesitar clave ni contraseña: es solo un formato de representación, no una medida de seguridad.
Alfabeto estándar y alfabeto URL-safe
El alfabeto clásico de Base64 usa los caracteres + y /, que tienen un significado especial en las URL y en los nombres de archivo. Para esos casos existe la variante Base64URL, donde + se sustituye por - y / por _. Si se inserta el resultado de la codificación estándar en una URL sin aplicar percent-encoding adicional, los caracteres + y / pueden distorsionar la dirección o entrar en conflicto con los separadores de ruta.
Error habitual: relleno truncado o «roto»
El carácter = al final de la cadena no es basura, sino parte de la codificación: indica cuántos bytes faltan en el último bloque. Si se copia una cadena Base64 de forma incompleta o se eliminan los caracteres de relleno a mano, el decodificador devolverá un error o un resultado truncado. Algunos sistemas (por ejemplo, JWT) descartan el = deliberadamente, y en ese caso hay que restaurar la longitud antes de decodificar.