Codificador y decodificador Base32
Codifique texto en Base32 RFC 4648, el alfabeto A–Z y 2–7 de los secretos de autenticación: Hello se convierte en JBSWY3DP. Al decodificar admite minúsculas y saltos de línea, pero rechaza símbolos extraños. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- Hello
- Modo de cálculo
- Encode
- Resultado
- JBSWY3DP
- Longitud
- 8
- Bytes de entrada
- 5
- Alfabeto
- RFC4648
Base32 convierte texto UTF-8 arbitrario en una cadena compacta formada únicamente por las letras de la A a la Z y los dígitos del dos al siete, con relleno opcional de signos de igual para que cada bloque ocupe un límite de ocho caracteres. A diferencia de Base64, el alfabeto evita el signo más, la barra y otros signos de puntuación que rompen las URL, los argumentos de línea de comandos o los sistemas de archivos insensibles a mayúsculas, por lo que las semillas secretas, las claves TOTP y muchos tokens de protocolo siguen distribuyéndose en Base32. Esta capacidad implementa de extremo a extremo el alfabeto de la sección seis del RFC 4648: el modo de codificación lee su cadena como bytes UTF-8 y emite un resultado Base32 con relleno; el modo de decodificación acepta Base32 en mayúsculas y minúsculas, elimina los espacios en blanco, valida cada carácter y devuelve el texto UTF-8 original.
Cómo el Base32 del RFC 4648 empaqueta bits en A-Z y 2-7
La sección seis del RFC 4648 define un alfabeto de treinta y dos símbolos: las veintiséis letras latinas mayúsculas seguidas de los seis dígitos del dos al siete. La codificación parte de bytes en bruto. Para el texto, esta capacidad primero convierte su cadena con UTF-8, de modo que los caracteres multibyte sigan siendo portables entre idiomas y plataformas.
Esos bytes se leen después como un flujo continuo de bits. Cada cinco bits seleccionan un índice del alfabeto y producen un carácter Base32. Cinco bytes de entrada aportan cuarenta bits, que se reparten exactamente en ocho caracteres Base32; los restos más cortos dejan un quinteto final parcial que se completa con ceros a la derecha y después con relleno de signos de igual, de modo que la longitud total sea siempre múltiplo de ocho.
La decodificación invierte la correspondencia: cada carácter que no es de relleno aporta cinco bits, los bytes completos se emiten en cuanto se acumulan ocho bits y el relleno final se comprueba en una posición legal. Los espacios en blanco se ignoran, por lo que los tokens de varias líneas pegados desde un correo siguen funcionando. Las letras minúsculas se convierten a mayúsculas antes de la búsqueda.
Ese rechazo estricto es intencionado: una sustitución silenciosa ocultaría errores de transcripción en secretos de autenticación y formatos de transmisión.
Qué se envía y qué se recibe
Envíe un campo de cadena obligatorio llamado text y un campo mode opcional con el valor encode o decode. Cuando mode se omite, encode es el valor predeterminado, de modo que una sola carga útil sigue haciendo trabajo útil. El modo encode trata text como contenido UTF-8 plano y devuelve una cadena result en el alfabeto del RFC 4648 con relleno.
El modo decode trata text como Base32, normaliza mayúsculas y espacios en blanco, valida el alfabeto y devuelve la cadena UTF-8 recuperada en result. Ambas direcciones devuelven mode, el text original, result, un campo length para la cadena de salida principal, las etiquetas alphabet y charset, un indicador padding y una breve cadena de referencia al estándar para que los clientes puedan comprobar qué perfil han alcanzado.
Las comprobaciones clásicas incluyen codificar Hello como JBSWY3DP, codificar la letra f sola como MY con seis signos de igual de relleno y decodificar un bloque conocido con relleno hasta recuperar foobar. Use el formulario gratuito del navegador para comprobaciones rápidas y demostraciones en clase, y después invoque el mismo contrato desde scripts cuando necesite material secreto en masa o casos de regresión.
Dónde aparece la codificación Base32 en el trabajo real
Los secretos de contraseñas de un solo uso basadas en tiempo del RFC 6238 y las aplicaciones de autenticación casi siempre viajan en Base32 para que los usuarios puedan escribirlos sin confundir el cero con la letra O o el uno con la letra I como ocurriría con Base64. Las cargas QR de aprovisionamiento y los códigos de respaldo necesitan, por tanto, una codificación fiable al generar claves y una decodificación estricta al importarlas.
El DNS y algunos sistemas de configuración de red prefieren alfabetos parecidos a Base32 para etiquetas opacas que deben sobrevivir a la normalización de mayúsculas. Los enlaces profundos móviles y los tokens cortos sin conexión suelen elegir Base32 porque el conjunto de símbolos es insensible a mayúsculas tras la normalización y evita los caracteres reservados de las URL. Los equipos de soporte pegan secretos de varias líneas desde incidencias y necesitan tolerancia a los espacios sin aceptar símbolos basura que producirían una clave incorrecta.
Quienes escriben material didáctico sobre esquemas de codificación quieren una página dedicada a Base32 en lugar de enterrarlo bajo una landing genérica de Base64, porque la intención de búsqueda y las reglas del alfabeto difieren. Si necesita Base64 con alfabeto seguro para URL, codificación porcentual para URL o conversión de enteros entre bases, trátelos como intenciones de búsqueda y landings independientes en lugar de sobrecargar esta página del codificador Base32.
Qué puede hacer con ella
Intercambio de secretos TOTP y de autenticación
Codifique los secretos compartidos recién generados como Base32 según RFC 4648 para aplicaciones de autenticación, o decodifique las semillas Base32 pegadas durante la recuperación e importación de cuentas.
Tokens seguros frente a mayúsculas para configuraciones y enlaces
Genere etiquetas Base32 que sobrevivan a la normalización de mayúsculas y eviten la puntuación + / al incrustar identificadores opacos en nombres tipo DNS o enlaces profundos.
Preguntas frecuentes
¿Qué alfabeto Base32 utiliza esta herramienta?
El de la sección seis del RFC 4648: A-Z en mayúsculas y los dígitos 2-7, con relleno '=' hasta un múltiplo de ocho caracteres. No es Base32hex ni Crockford Base32.
¿Puedo codificar y decodificar?
Sí. Establezca mode en encode (valor predeterminado) para convertir texto UTF-8 plano en Base32, o en decode para recuperar el texto a partir de una cadena Base32.
¿Qué ocurre si la cadena Base32 contiene un carácter no válido?
No se cobra nada por los fallos de validación.
¿Se acepta Base32 en minúsculas al decodificar?
Sí. Las letras se convierten a mayúsculas antes de la búsqueda en el alfabeto. Los espacios en blanco se eliminan, de modo que los pegados de varias líneas siguen funcionando.
¿Cuánto cuesta?
La herramienta del navegador es gratuita y se ejecuta localmente.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/enc/base32 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base32", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base32",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base32", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base32", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "Hello"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base32",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Un símbolo ilegal durante la decodificación falla de inmediato con invalid_input, de modo que un pegado defectuoso nunca corrompa los datos en silencio.
Cómo el Base32 del RFC 4648 empaqueta bits en A-Z y 2-7
Cualquier carácter fuera de A-Z, del dos al siete y del signo de igual de relleno provoca un error invalid_input que indica la posición y el símbolo infractor. Todo el recorrido es trabajo determinista con enteros, sin coma flotante, sin red, sin semillas aleatorias y sin marcas de tiempo, por lo que entradas idénticas siempre producen JSON idénticos. El estándar que implementa esta página es el clásico alfabeto Base32 del RFC 4648, no Base32hex ni Crockford Base32, que usan tablas de símbolos distintas y romperían la interoperabilidad con TOTP y muchas API heredadas.
Qué se envía y qué se recibe
Encode también informa de input_bytes; decode informa de output_bytes. La ausencia de text, objetos que no sean cadenas, valores de mode no admitidos, cadenas que superen el máximo documentado, caracteres Base32 ilegales, relleno tras un carácter que no es de relleno, demasiadas marcas de relleno o longitudes que no sean múltiplo de ocho fallan con invalid_input y un mensaje claro en inglés. Los fallos de validación no consumen saldo prepagado. El precio de las llamadas API correctas es la base publicada de $0.002 por elemento.
Dónde aparece la codificación Base32 en el trabajo real
Al ser esta capacidad un motor de parse puro, el precio de la API es la base publicada de $0.002 por elemento correcto y la validación fallida no consume saldo.
Casos de integración
Vectores de prueba golden entre lenguajes
Genere casos de codificación y decodificación que coincidan con el Base32 de Python, Go y OpenSSL para que la CI multilenguaje comparta una única verdad de referencia.