Guías de Base64
Estas guías prácticas explican qué hace Base64, cuándo usarlo y cómo solucionar problemas con datos reales. Los ejemplos usan Base64 estándar salvo que la guía indique otra cosa.
Tutoriales independientes relacionados
- ¿Qué es Base64?
- JavaScript y UTF-8
- Python Base64
- Base64URL y relleno
- Imágenes con URL de datos
- Conjuntos de caracteres UTF-8
- Leer JWT con seguridad
- Errores comunes
1. Qué es Base64
Base64 es una codificación de binario a texto. Convierte cada grupo de tres bytes de entrada en cuatro caracteres imprimibles tomados de A-Z, a-z, 0-9, más (+) y barra (/). Un signo igual (=) rellena el grupo final cuando la longitud original no es divisible entre tres. Como cada grupo de cuatro caracteres representa tres bytes, Base64 suele aumentar el tamaño alrededor de un tercio. Codificar no oculta información: cualquiera que tenga la cadena puede decodificarla.
El formato es útil cuando el transporte espera texto pero los datos son binarios. Partes MIME de correo, campos JSON, URL de datos, archivos de configuración y cargas de API son ejemplos comunes. Es menos adecuado para archivos grandes porque la expansión añade ancho de banda y memoria.
2. Codificar texto correctamente
El texto debe convertirse primero en bytes usando un conjunto de caracteres definido. UTF-8 es el valor predeterminado más seguro para aplicaciones modernas porque representa Unicode de forma consistente. La cadena café, por ejemplo, no se codifica desde los caracteres visuales directamente; se codifican sus bytes UTF-8.
En el navegador, elige el conjunto de caracteres de origen, pega el texto y revisa el resultado. Conserva los saltos de línea de forma deliberada: codificar todo el párrafo y codificar cada línea por separado produce cadenas distintas. En una API, documenta el charset y si los saltos se normalizan a LF o CRLF.
3. Decodificar texto frente a archivos
Los bytes decodificados no siempre son texto. Un PNG, PDF, ZIP o certificado puede decodificarse correctamente y aun así mostrarse como caracteres sin sentido en un cuadro de texto. Usa un decodificador orientado a archivos cuando la entrada empiece con una URL de datos como data:application/pdf;base64,... o cuando sepas que el contenido original era binario.
Los sistemas de correo y documentación suelen insertar espacios o saltos de línea en Base64. Los decodificadores estándar pueden quitar saltos inocuos, pero los cambios accidentales dentro del alfabeto corrompen los datos. Compara la firma de tipo y la longitud del archivo al investigar.
Pruébalo con el decodificador Base64.
4. Base64URL y relleno
Las URL tratan de forma especial el signo más y la barra, por eso Base64URL reemplaza + por - y / por _. Muchos productores también omiten el relleno final. Un decodificador seguro para URL debe restaurar el relleno esperado antes de convertir los bytes finales.
Base64URL es común en JSON Web Tokens y parámetros de URL. No es cifrado ni hace confiable un token. Las aplicaciones aún deben autenticar, autorizar, validar longitudes y proteger secretos con cifrado o un diseño de token seguro.
5. URL de datos en HTML y CSS
Una URL de datos incrusta el tipo de medio y la carga codificada en una sola cadena, por ejemplo data:image/png;base64,.... Es cómoda para un icono pequeño, un fixture de prueba o una demo autocontenida. Las URL de datos grandes dificultan caché y mantenimiento, por lo que los recursos estáticos normales suelen ser mejores.
Al decodificar una URL de datos, separa los metadatos anteriores a la coma de la carga Base64. El tipo de medio indica cómo interpretar los bytes, pero no prueba que sean válidos. Valida firmas de archivo antes de mostrar contenido no confiable.
6. Base64 en API y JWT
Las API suelen usar Base64 para campos binarios, pero JSON ya es texto y normalmente no necesita Base64 para cadenas ordinarias. Los JWT usan header y payload codificados con Base64URL y separados por puntos. Esas partes son legibles, no almacenamiento confidencial.
Al integrar una API, registra si el relleno es obligatorio, si se permiten saltos de línea, el charset esperado y el tamaño máximo de carga. Prueba entrada vacía, texto Unicode, valores de uno y dos bytes y caracteres malformados.
7. Seguridad y privacidad
Base64 como mucho ofusca. No autentica un mensaje, no evita modificaciones ni protege secretos. Trata el contenido decodificado como entrada no confiable y aplica validación normal antes de parsear, renderizar o ejecutar.
Para flujos confidenciales, usa una línea de comandos local o una biblioteca sin conexión bajo los controles de tu organización. Para transporte seguro, usa HTTPS y un esquema de cifrado o cifrado autenticado diseñado para esos datos.
8. Errores comunes y lista de comprobación
“Invalid character” suele indicar que un decodificador estándar recibió caracteres seguros para URL o puntuación ajena. “Incorrect padding” normalmente apunta a una cadena truncada o a signos igual finales eliminados. El texto corrupto suele ser un desajuste de charset; una decodificación correcta con vista previa ilegible puede ser simplemente binario.
Comprueba en este orden: valor completo copiado, alfabeto estándar o URL-safe identificado, solo espacios permitidos eliminados, charset original elegido, longitud en bytes comparada y firma de archivo esperada inspeccionada. Mantén una prueba conocida como SGVsbG8= (texto UTF-8 “Hello”).
Pruébalo con el codificador Base64.
const text = "Hello, Base64!";
const encoded = btoa(unescape(encodeURIComponent(text)));
console.log(encoded); // SGVsbG8sIEJhc2U2NCE=
const decoded = decodeURIComponent(escape(atob(encoded)));
console.log(decoded);
import base64
value = "你好, Base64"
encoded = base64.b64encode(value.encode("utf-8")).decode("ascii")
decoded = base64.b64decode(encoded).decode("utf-8")
print(encoded)
print(decoded)
# Decode a text value on macOS or Linux
printf 'SGVsbG8=' | base64 --decode
# URL-safe decoding in Python
import base64
base64.urlsafe_b64decode("SGVsbG8")
Contenido revisado: 30 de agosto de 2026