Qué es Base32 y por qué existe
Base32 es un esquema de codificación definido en la RFC 4648 que representa cualquier dato binario usando solo 32 caracteres: las letras A-Z y los dígitos 2-7, más el = como relleno. Cada carácter transporta 5 bits, así que cada 5 bytes de entrada se convierten en exactamente 8 caracteres de salida. ¿Para qué otro esquema si ya existe Base64? Porque Base32 tiene dos superpoderes que Base64 no tiene: no distingue mayúsculas de minúsculas (no hay dos caracteres que se diferencien solo por la caja) y evita los caracteres ambiguos — el alfabeto no incluye el 0 ni el 1, así que nunca los confundís con la O o con la l. Eso lo hace ideal para todo lo que un humano tenga que leer, dictar por teléfono o tipear a mano: las claves secretas TOTP/2FA de Google Authenticator, nombres codificados en DNS (que es case-insensitive por diseño) y los identificadores ULID, que usan una variante Base32 de Crockford.
Cómo funciona: 5 bytes se convierten en 8 caracteres
El algoritmo toma los bytes de entrada (acá, tu texto codificado a UTF-8 con TextEncoder, así que tildes, ñ y emojis salen perfectos) y los lee como una tira continua de bits. Cada grupo de 5 bits es un número entre 0 y 31, que se mapea a un carácter del alfabeto. Como 5 bytes = 40 bits = 8 grupos exactos, el bloque natural de Base32 es de 8 caracteres. Si la entrada no es múltiplo de 5 bytes, el último grupo se completa con ceros y la salida se rellena con = hasta llegar a 8. El ejemplo clásico de la RFC: foobar se codifica como MZXW6YTBOI======, y fo como MZXQ====. Podés verificarlo ahora mismo en la herramienta de arriba.
Comparativa: Base32 vs Base64 vs Hexadecimal
| Base32 | Base64 | Hexadecimal | |
|---|---|---|---|
| Alfabeto | 32 caracteres (A–Z, 2–7) | 64 caracteres (A–Z, a–z, 0–9, +, /) | 16 caracteres (0–9, A–F) |
| Bits por carácter | 5 | 6 | 4 |
| Overhead de tamaño | +60% (5 bytes → 8 chars) | +33% (3 bytes → 4 chars) | +100% (1 byte → 2 chars) |
| Distingue mayúsculas | No | Sí | No |
| Caracteres ambiguos | No (sin 0 ni 1) | Sí (0/O, 1/l/I) | No |
| Usos típicos | Claves TOTP/2FA, DNS, ULID | Emails MIME, data URIs, JWT | Colores CSS, hashes, dumps |
La regla práctica: si el resultado lo va a leer solo una máquina, usá Base64 (más compacto) — para eso tenés nuestro codificador Base64 y su decodificador. Si lo va a leer, dictar o tipear un humano, o el canal ignora mayúsculas (como DNS), Base32 es la elección correcta.
Dónde te cruzás con Base32 en la vida real
- Claves TOTP/2FA. El secreto que escaneás como QR en Google Authenticator, Authy o 1Password es Base32. Si el QR falla, la clave que tipeás a mano (tipo
JBSW Y3DP EHPK 3PXP) también. - DNS y DNSSEC. Los nombres de dominio ignoran mayúsculas, así que codificar hashes en registros (NSEC3) requiere un alfabeto case-insensitive.
- ULID. Identificadores únicos ordenables que usan Base32 de Crockford (una variante con otro alfabeto) para ser compactos y legibles.
- Tokens legibles. Códigos de activación, licencias y cupones que un humano tiene que tipear sin frustrarse.
Referencia: alfabeto Base32 (RFC 4648)
| Valor | Car. | Valor | Car. | Valor | Car. | Valor | Car. |
|---|---|---|---|---|---|---|---|
| 0 | A | 8 | I | 16 | Q | 24 | Y |
| 1 | B | 9 | J | 17 | R | 25 | Z |
| 2 | C | 10 | K | 18 | S | 26 | 2 |
| 3 | D | 11 | L | 19 | T | 27 | 3 |
| 4 | E | 12 | M | 20 | U | 28 | 4 |
| 5 | F | 13 | N | 21 | V | 29 | 5 |
| 6 | G | 14 | O | 22 | W | 30 | 6 |
| 7 | H | 15 | P | 23 | X | 31 | 7 |
El relleno = no tiene valor: solo completa el bloque de 8 caracteres cuando la entrada no es múltiplo de 5 bytes.