Codificador y decodificador Base36

Convierte texto, bytes en hexadecimal o archivos a Base36, el alfabeto de diez dígitos y 26 letras, y decodifica cadenas Base36 de nuevo en bytes. La salida en mayúsculas es opcional.

Se ejecuta por completo en tu navegador. No se sube nada.

Cómo se usa

  1. Elige Codificar para convertir texto en Base36 o Decodificar para convertir Base36 de nuevo en texto.
  2. Escribe o pega la entrada, o abre un archivo pequeño (de hasta unos 20 KB).
  3. Activa Mayúsculas si necesitas letras mayúsculas en la salida.
  4. Copia el resultado o descárgalo como archivo.

¿Qué es Base36?

Base36 escribe los datos con los diez dígitos y las 26 letras del alfabeto latino, 0-9 seguidos de a-z. Es el alfabeto más grande que se puede formar con dígitos y letras sin tener en cuenta mayúsculas y minúsculas, así que las cadenas Base36 se conservan intactas en sistemas que cambian o ignoran las mayúsculas. Cada carácter lleva unos 5,17 bits, por lo que la salida ocupa aproximadamente 1,55 veces el tamaño de la entrada, algo menos que Base32.

Como 36 no es una potencia de dos, los bytes no se pueden dividir sin más en grupos de bits. En su lugar, la herramienta lee toda la entrada como un único número grande sin signo y lo convierte a base 36, el mismo método que usa Base58. Un número perdería sus bytes cero iniciales, así que cada uno se escribe como un 0 inicial y se restaura al decodificar. Esta aritmética se vuelve lenta con entradas grandes, por lo que la herramienta acepta hasta unos 20 KB.

Dónde se usa Base36

  • ID cortos. Los acortadores de URL, los números de pedido y los códigos de incidencia suelen mostrar en base 36 un ID numérico de la base de datos. Reddit, por ejemplo, usa base 36 para los ID de sus publicaciones y comentarios.
  • Entornos que no distinguen mayúsculas. Los nombres DNS y algunos sistemas de archivos ignoran las mayúsculas. Por ese motivo, IPFS usa una forma Base36 de algunos identificadores en las direcciones de pasarela con subdominio.
  • Números en el código. Base 36 es la base más alta que la mayoría de los lenguajes de programación admiten de forma nativa para convertir enteros.

Si se conservan las mayúsculas y quieres la cadena alfanumérica más corta posible, Base62 es más compacto.

Números Base36 en código

Esta página codifica bytes. Para convertir un entero, usa las funciones integradas de tu lenguaje o el conversor de bases numéricas:

// JavaScript
(1000000).toString(36)        // 'lfls'
parseInt('lfls', 36)          // 1000000
123456789012345678901234567890n.toString(36)   // BigInt para valores grandes

# Python
int('lfls', 36)               # 1000000
# no hay función integrada para la conversión inversa

parseInt pierde precisión por encima de Number.MAX_SAFE_INTEGER; para valores mayores, acumula tú mismo los dígitos en un BigInt.

Especificación

Alfabeto0-9 a-z
Tamaño de salidaAprox. 155% (conversión como número grande)
RellenoNinguno
EstándarSin estándar formal
Distingue mayúsculas y minúsculasNo

Ejemplos

Entrada (UTF-8)Salida
Hello, World!fg3h7vqw7een6jwwnzmp
Base64.is76f8bz4veeatf7
你好2h5exfqm65

Preguntas frecuentes

¿Base36 distingue entre mayúsculas y minúsculas?

No. La salida está en minúsculas de forma predeterminada, y la opción Mayúsculas la cambia a mayúsculas. El decodificador acepta ambas.

¿Por qué otra herramienta da un resultado Base36 distinto?

Base36 no tiene un estándar formal. Algunas herramientas codifican un número, otras codifican bytes, y tratan de forma distinta los bytes cero iniciales. Esta herramienta codifica los bytes de entrada como un único número grande y escribe cada byte cero inicial como un 0.

¿Hay un límite de tamaño?
Sí, unos 20 KB, porque la conversión de números grandes tarda más a medida que crece la entrada. Para archivos y datos grandes, son más adecuados Base32 o Base64.
¿Cómo convierto un número a Base36?
Usa el conversor de bases numéricas, que muestra un valor decimal en Base36 y en otras bases. Esta página trata la entrada como texto o bytes, así que si escribes 100 se codifican los caracteres 1, 0 y 0, no el número cien.