¿Qué es la codificación Base64? Una guía en inglés sencillo (y por qué no está cifrado)

11 de julio de 2026 · 8 min de lectura

Lo ha visto: una larga cadena de letras y números, tal vez terminando en uno o dos signos iguales, ubicada en un JWT, una fuente de correo electrónico o una etiqueta de imagen. Se trata de Base64, una de las codificaciones más comunes en informática y que un sorprendente número de desarrolladores utilizan todos los días sin saber qué hace realmente, o peor aún, creyendo que hace algo que no hace. Esta guía explica Base64 en un lenguaje sencillo: qué es, por qué existe, dónde encontrarlo y el único concepto erróneo peligroso que causa incidentes de seguridad reales.

Qué es realmente Base64

Base64 es una forma de representar datos binarios, cualquier byte, utilizando solo 64 caracteres de texto imprimibles: las 26 letras mayúsculas, las 26 letras minúsculas, los 10 dígitos y dos símbolos, más (+) y barra (/). El signo igual (=) se utiliza como relleno al final. Ese es el alfabeto completo y de ahí viene el nombre. Cada carácter en la salida Base64 es un carácter seguro e imprimible sin códigos de control ni espacios en blanco ambiguos, que es exactamente el punto.

La razón por la que existe es histórica y sigue siendo relevante. Los protocolos principales de Internet, el correo electrónico a través de SMTP, los encabezados HTTP y otros, se diseñaron para texto sin formato. Aliméntelos con datos binarios sin procesar, como una imagen o un blob cifrado, y ciertos valores de bytes se malinterpretan como caracteres de control y corrompen los datos. Base64 resuelve esto convirtiendo binario en un subconjunto de texto que sobrevive intacto a cualquier canal basado en texto. Es un traductor entre el mundo binario y el mundo del texto.

Cómo funciona, brevemente

El algoritmo toma su entrada tres bytes a la vez. Tres bytes son 24 bits, que se dividen en cuatro grupos de 6 bits cada uno, y cada grupo de 6 bits se asigna a uno de los 64 caracteres. Entonces, cada 3 bytes de entrada se convierten en exactamente 4 caracteres de salida. Cuando su entrada no es un múltiplo limpio de 3 bytes, Base64 rellena la salida con signos iguales, uno = si el último grupo tenía 2 bytes, dos == si tenía solo 1 byte, por lo que el resultado siempre es un múltiplo de 4 caracteres. Eso es lo que significan esos signos iguales finales: le dicen al decodificador cuántos bytes reales había en el grupo final.

Esta proporción de 3 a 4 tiene una consecuencia directa: la salida de Base64 es aproximadamente un 33% mayor que los datos originales. Una imagen de 1 MB se codifica aproximadamente en 1,37 MB. Ese tamaño de gastos generales es el precio que se paga por la seguridad del texto, y es por eso que Base64 es ideal para cosas pequeñas y una mala elección para las grandes.

Donde conocerás Base64

Base64 está en todas partes una vez que sabes mirar. Las URL de datos incrustan un archivo directamente en HTML o CSS, los datos:image/png;base64,... que a veces se ven en una etiqueta de imagen o estilo de fondo, permitiendo que un pequeño ícono se cargue con la página en lugar de como una solicitud separada. Los archivos adjuntos de correo electrónico están codificados en Base64, por lo que los archivos binarios sobreviven al transporte de correo basado en texto; todos los archivos adjuntos que haya enviado viajaron de esta manera, razón por la cual un archivo de correo electrónico sin formato es más grande que el archivo que contiene.

Los JSON Web Tokens (JWT) codifican su encabezado y carga útil en una variante de Base64 segura para URL. La autenticación básica HTTP envía su nombre de usuario y contraseña como Base64 en un encabezado. Las API que aceptan cargas de archivos dentro de un cuerpo JSON codifican el archivo en Base64, porque JSON es texto y no puede contener bytes sin formato. Y los archivos PEM, certificados SSL y claves SSH son archivos binarios codificados en Base64 entre las líneas de encabezado BEGIN y END. La misma codificación simple subyace a todo ello.

El mito peligroso: Base64 no es cifrado

Esto es lo más importante que hay que entender, porque hacerlo mal provoca verdaderas violaciones de seguridad. Base64 proporciona seguridad cero. No es cifrado. Cualquiera que tenga la cadena codificada puede decodificarla instantáneamente, sin clave, en una línea en cualquier consola del navegador. La cadena c2VjcmV0 se decodifica a "secreto" en aproximadamente un segundo.

El peligro proviene del aspecto de Base64. Una cadena Base64 aparece codificada y aleatoria, visualmente similar a datos cifrados, lo que engaña a la gente haciéndoles creer que está protegida. Esto conduce a incidentes genuinos: un desarrollador envía un archivo de configuración con credenciales de base de datos codificadas en Base64 al control de versiones, creyendo que la codificación las oculta, pero no es así. Una API registra el encabezado de Autorización y un revisor "no puede leer" la contraseña Base64, por lo que permanece en los registros como texto sin formato hasta que alguien la decodifica en cinco segundos. Almacenar una clave API como Base64 en una base de datos parece opaco pero no protege nada.

Si la confidencialidad es importante, utilice cifrado real (como AES a través de Web Crypto API) y, para las contraseñas, utilice un hash lento como bcrypt o Argon2. Base64 es para representación y transporte, nunca para ocultar datos.

Base64 seguro para URL (Base64url)

Base64 estándar usa + y /, pero ambos tienen un significado especial en las URL, + puede significar un espacio en una cadena de consulta y / delimita segmentos de ruta. Por lo tanto, una variante segura para URL llamada Base64url reemplaza + con - (menos) y / con _ (guión bajo) y generalmente elimina el relleno =, que de otro modo necesitaría codificación porcentual en una URL. Esta es la variante que utilizan JWT, tokens OAuth y cookies seguras para URL. Si alguna vez introduce un segmento JWT en un decodificador Base64 estándar estricto y obtiene un error o basura, este suele ser el motivo: primero debe convertir los caracteres seguros para URL y restaurar el relleno.

El Unicode te atrapó

Un error sutil afecta a los desarrolladores que codifican en Base64 texto que no está en inglés. La función clásica del navegador btoa() asume que cada carácter es un solo byte, que se divide en letras acentuadas, emoji o cualquier escritura no latina. La solución es codificar el texto como UTF-8 primero y luego codificar en Base64 los bytes resultantes; de lo contrario, "café" o "こんにちは" saldrán dañados. Un buen codificador maneja este paso UTF-8 por usted, por lo que el texto acentuado y los emoji van de ida y vuelta de manera limpia.

La herramienta TextCaret Base64 codifica a través de UTF-8 para que las letras acentuadas y los emoji sobrevivan intactos, se ejecute completamente en su navegador y nunca envíe sus datos a un servidor, lo cual es importante cuando inspecciona un token o una credencial.

Cuándo usarlo, cuándo evitarlo

Utilice Base64 cuando necesite mover pequeños datos binarios a través de un canal de solo texto: un pequeño ícono en línea, un token, un pequeño archivo dentro de una carga útil JSON, una credencial que está depurando. Evítelo para archivos binarios grandes en rutas sensibles al rendimiento, la penalización de tamaño del 33% y la pérdida de almacenamiento en caché por separado hacen que un archivo real o una carga de varias partes sea la mejor opción. Y nunca lo uses como capa de seguridad. Manténgalo en su carril, representación y transporte, y Base64 será una herramienta universal y confiable.