Tutorial 22 Feb 2026 10 min de lectura

Codificación Base64 explicada: qué es, cómo funciona y cuándo usarla

Una guía completa sobre la codificación Base64: comprende el algoritmo, aprende los casos de uso comunes como data URIs, archivos adjuntos de correo electrónico y tokens de API, y conoce cuándo Base64 es la opción correcta.

Base64 Encoding Explained - Visual Guide

¿Qué es la codificación Base64?

Base64 es un esquema de codificación de binario a texto que convierte datos binarios en una secuencia de caracteres ASCII imprimibles. El nombre "Base64" proviene del hecho de que utiliza un conjunto de 64 caracteres para representar datos. Estos 64 caracteres consisten en letras mayúsculas (A-Z), letras minúsculas (a-z), dígitos (0-9) y dos caracteres adicionales, típicamente + y /, con = usado como carácter de relleno.

Base64 fue diseñado originalmente para permitir que los datos binarios se transmitan a través de canales que solo soportan de manera confiable contenido de texto. Piensa en él como un traductor universal: toma cualquier secuencia de bytes, ya sea una imagen, un documento o datos cifrados, y la convierte en una cadena de caracteres que puede viajar de forma segura a través de protocolos basados en texto como correo electrónico (SMTP), HTML, CSS, JSON y XML.

La codificación está definida en RFC 4648, que estandariza varios alfabetos de codificación Base. La variante más común que encontrarás en la web es el alfabeto Base64 estándar, pero también existe una variante segura para URL que reemplaza + por - y / por _ para evitar conflictos con caracteres reservados de URL.

Cómo funciona el algoritmo Base64

Comprender el algoritmo detrás de Base64 ayuda a desmitificar lo que parece una transformación "mágica". Aquí está el proceso paso a paso:

Paso 1: Convertir la entrada a binario

Cada byte de los datos de entrada se representa como un número binario de 8 bits. Por ejemplo, el texto ASCII Man se representa como:

  • M = 77 en decimal = 01001101 en binario
  • a = 97 en decimal = 01100001 en binario
  • n = 110 en decimal = 01101110 en binario

Concatenado, esto nos da un flujo de 24 bits: 010011010110000101101110

Paso 2: Dividir en grupos de 6 bits

En lugar de los límites habituales de bytes de 8 bits, Base64 divide el flujo binario en grupos de 6 bits. ¿Por qué 6 bits? Porque 26 = 64, que es exactamente el número de caracteres en el alfabeto Base64. Nuestro flujo de 24 bits se convierte en cuatro grupos de 6 bits:

  • 010011 = 19
  • 010110 = 22
  • 000101 = 5
  • 101110 = 46

Paso 3: Mapear a la tabla de caracteres Base64

Cada valor de 6 bits (0-63) se mapea a un carácter específico en el alfabeto Base64:

Rango de valoresCaracteres
0-25A-Z
26-51a-z
52-610-9
62+
63/

Aplicando esto a nuestros valores: 19 = T, 22 = W, 5 = F, 46 = u. Así que Man se codifica como TWFu.

Paso 4: Manejo del relleno

Cuando la longitud de la entrada no es un múltiplo de 3 bytes, el flujo binario no se divide uniformemente en grupos de 6 bits. En este caso, se añaden bits cero para completar el último grupo de 6 bits, y se agregan caracteres de relleno = a la salida para indicar cuántos bytes extra se añadieron:

  • 1 byte de entrada produce 2 caracteres Base64 + relleno ==
  • 2 bytes de entrada produce 3 caracteres Base64 + relleno =
  • 3 bytes de entrada produce 4 caracteres Base64 sin relleno

Por ejemplo, codificar solo Ma (2 bytes) nos da TWE=, y codificar solo M (1 byte) nos da TQ==.

Casos de uso comunes de la codificación Base64

La codificación Base64 aparece en muchas áreas del desarrollo web moderno y la ingeniería de software. Estos son los más importantes:

1. Data URIs en HTML y CSS

Los Data URIs te permiten incrustar archivos directamente en HTML o CSS usando codificación Base64. En lugar de hacer una solicitud HTTP separada para una imagen pequeña, puedes incluirla en línea:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." />

Esto es particularmente útil para iconos pequeños e imágenes decorativas donde eliminar una solicitud HTTP mejora el rendimiento de carga de la página. Sin embargo, Base64 aumenta el tamaño de los datos aproximadamente un 33%, por lo que esta técnica es mejor reservarla para archivos de menos de 2-3 KB. Puedes usar nuestro conversor de Imagen a Base64 para generar rápidamente data URIs desde cualquier archivo de imagen.

2. Archivos adjuntos de correo electrónico (MIME)

El uso original y quizás históricamente más significativo de Base64 es en el correo electrónico. El protocolo SMTP fue diseñado para transmitir texto ASCII de 7 bits, lo que significa que archivos binarios como imágenes, PDFs y documentos no se pueden enviar directamente. MIME (Extensiones Multipropósito de Correo de Internet) usa Base64 para codificar estos archivos adjuntos para que puedan transmitirse de forma segura a través de servidores de correo sin corrupción.

3. Tokens de autenticación de API

La autenticación HTTP Basic codifica el par usuario:contraseña en Base64 y lo envía en el encabezado Authorization:

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Es importante entender que esto proporciona codificación, no cifrado. Cualquier persona que intercepte este encabezado puede decodificarlo trivialmente, por eso la autenticación Basic siempre debe usarse sobre HTTPS.

4. JSON Web Tokens (JWT)

Los JWTs son uno de los usos más comunes de Base64 en el desarrollo web moderno. Un JWT consiste en tres partes codificadas en Base64URL separadas por puntos: el encabezado, el payload y la firma. Por ejemplo:

eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiam9obiJ9.xyz123...

El encabezado y el payload son objetos JSON codificados en Base64URL que cualquiera puede decodificar. La firma es lo que proporciona verificación de integridad. Puedes inspeccionar y decodificar JWTs usando nuestro decodificador de JWT o generar tokens de prueba con el generador de JWT.

5. Almacenamiento de datos binarios en JSON y XML

JSON y XML son formatos basados en texto que no soportan nativamente datos binarios. Cuando necesitas incluir contenido binario, como una clave criptográfica, una imagen pequeña o un certificado, la codificación Base64 es el enfoque estándar. Muchas APIs devuelven datos binarios como cadenas codificadas en Base64 dentro de respuestas JSON.

6. Codificación de datos en URLs

Mientras que Base64 estándar usa caracteres reservados en URLs (+, /, =), la variante segura para URL (Base64URL) los reemplaza con -, _ y opcionalmente elimina el relleno. Esto se usa extensivamente en tokens OAuth, URLs firmadas y parámetros de estado. Para otras necesidades de codificación de URL, consulta nuestra herramienta codificador/decodificador de URL.

Base64 NO es cifrado

Este es uno de los puntos más críticos para entender, y un error que incluso desarrolladores experimentados a veces cometen: la codificación Base64 no es un mecanismo de seguridad. No proporciona absolutamente ninguna confidencialidad.

He aquí por qué esta distinción importa:

  • Codificación transforma datos de un formato a otro para compatibilidad. Es completamente reversible por cualquiera, sin necesidad de clave o secreto.
  • Cifrado transforma datos para prevenir acceso no autorizado. Requiere una clave para revertir y está diseñado para ser computacionalmente inviable de romper sin esa clave.

Si alguien te da una cadena Base64, puedes decodificarla al instante. No hay clave, no hay contraseña, no hay secreto. Pruébalo tú mismo con nuestro codificador/decodificador Base64: pega cualquier cadena Base64 y verás los datos originales inmediatamente.

Nunca almacenes contraseñas, claves de API o datos sensibles usando solo codificación Base64. Si necesitas cifrado real, usa algoritmos como AES-256. Puedes experimentar con nuestra herramienta cifrado AES para ver la diferencia entre codificación y cifrado. Para hashing de contraseñas, considera usar algoritmos dedicados como bcrypt, scrypt o Argon2.

El incremento de tamaño: entendiendo el aumento del 33%

La codificación Base64 siempre aumenta el tamaño de los datos. La razón es matemática: cada 3 bytes (24 bits) de entrada se convierten en 4 caracteres (32 bits) de salida. Esto significa que los datos codificados son aproximadamente un 33% más grandes que el original.

Aquí hay una referencia rápida del incremento de tamaño:

Tamaño originalTamaño Base64Incremento
1 KB~1.37 KB+37%
10 KB~13.3 KB+33%
100 KB~133 KB+33%
1 MB~1.33 MB+33%

Este incremento es importante considerarlo al incrustar imágenes como data URIs. Una imagen de 50 KB se convierte en aproximadamente 67 KB cuando se codifica en Base64, y esa cadena Base64 se incluye directamente en tu HTML o CSS, haciendo el documento más grande y potencialmente más lento de analizar.

Cuándo NO usar Base64

Saber cuándo evitar Base64 es tan importante como saber cuándo usarlo. Aquí hay escenarios comunes donde Base64 es la opción incorrecta:

  • Archivos grandes: Incrustar una imagen de 500 KB como data URI Base64 aumenta el tamaño del documento HTML en ~667 KB, destruye las posibilidades de caché y ralentiza la renderización de la página. Sirve archivos grandes como recursos separados en su lugar.
  • Seguridad: Como se discutió anteriormente, nunca uses Base64 como medida de seguridad. Es trivialmente reversible.
  • Almacenamiento en base de datos: Almacenar datos binarios grandes como Base64 en una columna de base de datos desperdicia un 33% más de espacio de almacenamiento. Usa columnas nativas BLOB/BYTEA en su lugar.
  • Datos en streaming: Base64 requiere que toda la entrada esté disponible antes de codificar (debido al agrupamiento de 3 bytes). Para escenarios de streaming, la codificación de transferencia fragmentada o protocolos binarios son mejores opciones.
  • Rutas críticas de rendimiento: La codificación y decodificación Base64 requieren ciclos de CPU. En sistemas de alto rendimiento procesando millones de operaciones por segundo, la sobrecarga puede volverse significativa.

Ejemplos prácticos con código

Aquí hay ejemplos rápidos de codificación y decodificación Base64 en lenguajes de programación populares:

JavaScript (Navegador y Node.js)

// Encoding
const encoded = btoa("Hello, World!");
console.log(encoded); // "SGVsbG8sIFdvcmxkIQ=="

// Decoding
const decoded = atob("SGVsbG8sIFdvcmxkIQ==");
console.log(decoded); // "Hello, World!"

// For Unicode strings, use TextEncoder
const encoder = new TextEncoder();
const bytes = encoder.encode("Hello");
const base64 = btoa(String.fromCharCode(...bytes));

Python

import base64

# Encoding
encoded = base64.b64encode(b"Hello, World!")
print(encoded)  # b'SGVsbG8sIFdvcmxkIQ=='

# Decoding
decoded = base64.b64decode(encoded)
print(decoded)  # b'Hello, World!'

# URL-safe variant
url_safe = base64.urlsafe_b64encode(b"Hello, World!")

PHP

// Encoding
$encoded = base64_encode("Hello, World!");
echo $encoded; // "SGVsbG8sIFdvcmxkIQ=="

// Decoding
$decoded = base64_decode($encoded);
echo $decoded; // "Hello, World!"

Por supuesto, no necesitas escribir código cada vez que necesites codificar o decodificar Base64. Nuestra herramienta Base64 en línea lo maneja al instante en tu navegador sin necesidad de instalar ningún software.

Conversión de imagen a Base64: beneficios y desventajas

Convertir imágenes a cadenas Base64 es uno de los usos más debatidos de esta codificación. Aquí hay una mirada equilibrada a ambos lados:

Beneficios

  • Menos solicitudes HTTP: Cada imagen incrustada como data URI elimina un viaje de ida y vuelta de red. Para páginas con muchos iconos pequeños, esto puede mejorar notablemente los tiempos de carga.
  • Documentos autocontenidos: Un archivo HTML con imágenes Base64 es completamente independiente. Esto es útil para plantillas de correo, documentos sin conexión y exportaciones de un solo archivo.
  • Sin problemas de CORS: Las imágenes en línea evitan completamente las restricciones de origen cruzado.
  • Despliegue simplificado: No es necesario gestionar archivos de imagen separados, rutas CDN o pipelines de assets para gráficos pequeños.

Desventajas

  • Aumento de tamaño del 33%: La cadena codificada siempre es más grande que el archivo binario original.
  • Sin caché del navegador: Las imágenes Base64 en línea no se pueden cachear independientemente. Cada carga de página transfiere la cadena codificada completa nuevamente.
  • Bloqueo de renderización: Las imágenes Base64 en CSS deben descargarse y analizarse como parte de la hoja de estilos antes de que la página pueda renderizarse.
  • Dificultad de mantenimiento: Actualizar una imagen Base64 en línea requiere regenerar y reemplazar toda la cadena codificada.

La regla general: usa data URIs Base64 para imágenes de menos de 2 KB (iconos pequeños, SVGs simples, píxeles de seguimiento 1x1). Para cualquier cosa más grande, sirve la imagen como un archivo separado y deja que el navegador la cachee. Puedes experimentar con esto usando nuestras herramientas de conversión Imagen a Base64 y Base64 a Imagen.

Variantes de Base64 que debes conocer

No toda la codificación Base64 es igual. Aquí están las variantes clave:

  • Base64 estándar (RFC 4648): Usa A-Za-z0-9+/ con relleno =. Esta es la variante más común.
  • Base64URL (RFC 4648 Sección 5): Usa A-Za-z0-9-_ en lugar de +/. Esencial para URLs, nombres de archivos y tokens. Usado en JWTs.
  • MIME Base64 (RFC 2045): Mismo alfabeto que el estándar pero inserta saltos de línea cada 76 caracteres. Usado en archivos adjuntos de correo.
  • Base32: Usa un alfabeto de 32 caracteres. Menos eficiente en espacio pero insensible a mayúsculas/minúsculas, útil en contextos donde la sensibilidad a mayúsculas es problemática (como claves secretas TOTP).

Resumen y puntos clave

La codificación Base64 es una herramienta fundamental en el kit de todo desarrollador. Estos son los puntos esenciales a recordar:

  • Base64 convierte datos binarios a texto usando un alfabeto de 64 caracteres, produciendo una salida que es un 33% más grande que la entrada.
  • Funciona dividiendo datos binarios en grupos de 6 bits y mapeando cada grupo a un carácter imprimible.
  • Los usos comunes incluyen data URIs, archivos adjuntos de correo, tokens JWT, autenticación de API e incrustación de datos binarios en JSON/XML.
  • Base64 es codificación, no cifrado. Nunca lo uses como medida de seguridad.
  • Usa Base64 para archivos pequeños y transporte de datos. Evítalo para archivos grandes, seguridad y rutas críticas de rendimiento.
  • La variante segura para URL (Base64URL) reemplaza caracteres problemáticos para uso en URLs y tokens.
Consejo: Añade a marcadores nuestro codificador/decodificador Base64 para tareas rápidas de codificación y decodificación. Se ejecuta completamente en tu navegador, así que tus datos nunca salen de tu dispositivo.
Recordatorio de seguridad: Si necesitas proteger datos sensibles, usa herramientas de cifrado adecuadas como nuestra herramienta de cifrado AES, no codificación Base64. Para generación segura de contraseñas, prueba el generador de contraseñas.
Prueba nuestro codificador Base64 gratuito

Codifica y decodifica texto o archivos a Base64 al instante en tu navegador. No se envían datos a ningún servidor.