Tus datos son 100 % privados: Base64 se codifica y decodifica íntegramente en tu dispositivo.
Base64 es una forma de representar datos binarios como texto plano usando 64 caracteres ASCII: A–Z, a–z, 0–9, más + y /. Permite que datos binarios como imágenes, claves y adjuntos de correo electrónico viajen de forma segura a través de sistemas diseñados para texto. Es codificación, no cifrado.
Base64 utiliza un alfabeto fijo de 64 caracteres. Cada valor del 0 al 63 se asigna exactamente a uno de ellos, que es cómo cualquier 3 bytes binarios se convierten en 4 caracteres legibles:
| Valores | Caracteres | |
|---|---|---|
| 0–25 | A–Z | 26 letras mayúsculas |
| 26–51 | a–z | 26 letras minúsculas |
| 52–61 | 0–9 | 10 dígitos |
| 62–63 | + / | 2 símbolos |
El signo "=" es la única excepción. Es relleno, no uno de los 64 valores, y solo completa el último bloque.
Casi con toda seguridad ya lo has visto. Base64 aparece en cualquier lugar donde los datos binarios necesitan viajar dentro de texto:
El truco del data-URI se ve así. La cadena larga es la imagen completa:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />Los primeros protocolos de red fueron construidos para texto, no para bytes sin procesar. ASCII usaba 7 bits y 128 caracteres, lo cual era adecuado para el inglés pero no para datos binarios. Algunos sistemas alteraban los caracteres de control o reescribían los finales de línea (LF a CR + LF), corrompiendo silenciosamente imágenes y audio en tránsito.
Base64 evita todo eso emitiendo únicamente caracteres con los que todos los sistemas ya están de acuerdo. Base16 y Base32 hacen el mismo trabajo con alfabetos más pequeños, pero Base64 empaca más datos por carácter mientras se mantiene seguro. Por eso ganó.
Todo el esquema es una idea repetida: tomar 3 bytes (24 bits), volver a dividirlos en cuatro grupos de 6 bits, y buscar cada grupo en el alfabeto. Aquí está la palabra "Logto", codificada a mano.
Paso 1. Convierte cada carácter en su binario de 8 bits:
| Carácter | Código ASCII | Binario |
|---|---|---|
| L | 76 | 01001100 |
| o | 111 | 01101111 |
| g | 103 | 01100111 |
| t | 116 | 01110100 |
| o | 111 | 01101111 |
Paso 2. Toma los primeros tres bytes, "Log", y vuelve a dividir esos mismos 24 bits en cuatro grupos de 6 bits:
Paso 3. Lee cada grupo de 6 bits como un número, luego busca el número en el alfabeto:
| Grupo de 6 bits | Valor | Carácter Base64 |
|---|---|---|
| 010011 | 19 | T |
| 000110 | 6 | G |
| 111101 | 61 | 9 |
| 100111 | 39 | n |
"Logto" tiene 5 bytes, no es múltiplo de 3. Los últimos dos bytes, "to", dejan una división de 6 + 6 + 4. Rellena esos últimos 4 bits con ceros para completar un grupo de 6 bits, luego añade un "=" para completar el bloque de 4 caracteres:
Une los bloques:
"Logto" → TG9ndG8=Todos los lenguajes lo incluyen de forma nativa. En Node.js:
const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=Tres reglas se derivan de ese proceso, que vale la pena tener en cuenta:
Recurre a Base64 cuando los datos binarios deben pasar por un canal exclusivo de texto:
Lo que obtienes a cambio:
El Base64 estándar depende de tres caracteres que chocan con el funcionamiento de las URLs, cadenas de consulta y nombres de archivo: +, / y el relleno =. Coloca una cadena Base64 normal en un enlace y puede romperse de formas silenciosas:
Puedes codificarlos con porcentaje (+ se convierte en %2B, / en %2F, = en %3D), pero eso infla la cadena y es fácil codificarla dos veces por error.
Base64URL (RFC 4648 §5) soluciona esto en el origen: cambia + por -, cambia / por _, y elimina el relleno =. El resultado se puede usar directamente en una URL, parámetro de consulta o nombre de archivo sin nada que escapar. Lo verás en URLs, nombres de archivo y muchas APIs web.
const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8Base64 es una representación, no una solución mágica. Ten tres cosas en mente:
No. Es codificación reversible con un alfabeto público, por lo que cualquiera puede decodificarlo instantáneamente y no añade ninguna confidencialidad. Cifra los datos sensibles en su lugar.
Base64 convierte cada 3 bytes en 4 caracteres, por lo que la forma codificada siempre es aproximadamente un tercio más grande que los bytes originales.
Son relleno que mantiene la salida como múltiplo de 4 caracteres. Un "=" significa que la entrada tenía 2 bytes sobrantes; dos "=" significa que tenía 1; sin "=" significa que la longitud ya era múltiplo de 3 bytes.
Base64URL es la misma codificación con un alfabeto seguro para URLs y nombres de archivo: - y _ reemplazan + y /, y el relleno = generalmente se elimina. Es común en URLs, nombres de archivo y muchas APIs web.
Cualquier dato binario: imágenes, PDFs, claves, ejecutables. Base64 trabaja sobre bytes sin procesar, por lo que el tipo de contenido original no importa.
No. La codificación y decodificación se ejecutan completamente en tu navegador. Nada de lo que pegues se sube ni se registra.