Subir un archivo
  1. base64hub
  2. Otras bases
  3. Base58

Codificador y decodificador Base58 online

Escribe texto para obtener su codificación Base58 con el alfabeto de Bitcoin, el que usan las direcciones Bitcoin, IPFS y Solana. Los alfabetos Flickr y Ripple están a un clic, y los bytes cero iniciales sobreviven a la ida y vuelta.

Gratis sin registro, sin límites Local no se sube nada 3 alfabetos Bitcoin, Flickr, Ripple Actualizado 27 oct 2026
Entrada 0Bytes 0 BSalida 0

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo codificar a Base58

  1. Escribe o pega texto en Entrada · Texto. La cadena Base58 aparece en Salida · Base58 mientras escribes.
  2. Elige el Alfabeto bajo la salida: Bitcoin (el predeterminado, que también usan IPFS y Solana), Flickr o Ripple.
  3. Para codificar bytes en bruto en lugar de texto, pon De en Hex o Base64 y pega los bytes en ese formato. Una clave pública o un hash casi siempre son bytes, no texto.
  4. Haz clic en Base58 → Texto en el selector de dirección para decodificar, o abre el decodificador Base58, que muestra los bytes en hex.

Cómo funciona la codificación Base58

Base58 no corta la entrada en grupos fijos de bits como Base64. Lee todos los bytes como un único número big-endian y escribe ese número en base 58, y luego añade un 1 por cada byte cero inicial. Por eso un solo byte cambiado puede cambiar toda la cadena, y por eso la longitud depende del valor y no solo del número de bytes.

El coste de tratar los datos como un único número crece rápido con el tamaño, así que esta herramienta limita la entrada Base58 a 64 KB. Es mucho más de lo que necesita cualquier clave, hash o dirección.

Los tres alfabetos Base58

Los tres usan los mismos 58 caracteres (dígitos y letras sin 0, O, I, l), en distinto orden:

AlfabetoEmpieza porHello0x00 0x00 0x01
Bitcoin123456789ABC…9Ajdvzr112
Flickr123456789abc…9aJCVZR112
Ripplerpshnaf39wBU…9wjdvzirrp

Flickr intercambia mayúsculas y minúsculas; Flickr lo usaba para las URLs cortas de sus fotos. El alfabeto de Ripple empieza por r, así que las direcciones del XRP Ledger, que tienen un byte de versión cero, empiezan por r igual que las direcciones Bitcoin empiezan por 1. Decodificar con el alfabeto equivocado suele funcionar sin error y da otros bytes, así que comprueba primero el alfabeto cuando un valor no cuadre.

Ceros iniciales y el prefijo 1

Como Base58 trata los datos como un número, los bytes cero del principio desaparecerían. El formato los conserva escribiendo un 1 por cada byte cero:

Bytes (hex)Base58
001
00 0011
00 0112
ff5Q
31 × 00, luego ff11111111111111111111111111111115Q
32 × 0011111111111111111111111111111111

La última fila es una dirección real: treinta y dos 1 son el System Program de Solana, cuya clave pública son 32 bytes cero. Los ceros iniciales son donde más falla el código Base58 escrito a mano, y un codificador que los pierde produce cadenas que se decodifican en menos bytes.

Dónde se usa Base58

  • Direcciones Bitcoin y claves WIF. Las direcciones legacy (1…, 3…) y las claves privadas WIF (5…, K…, L…) son Base58Check: Base58 con un byte de versión y una suma de comprobación. Las direcciones Bech32 (bc1…) son otra codificación.
  • CIDv0 de IPFS. Los identificadores Qm… son Base58 simple de un multihash de 34 bytes: 12 (SHA-256), 20 (32 bytes de longitud) y el resumen. La cabecera 12 20 es lo que hace que todo CIDv0 empiece por Qm.
  • Solana. Las direcciones y claves públicas son Base58 de 32 bytes (de 32 a 44 caracteres); las firmas de transacciones son Base58 de 64 bytes (hasta 88 caracteres).

Base58 en Python

Python no tiene Base58 en la biblioteca estándar. El algoritmo es lo bastante corto como para escribirlo, y esta versión maneja los ceros iniciales:

ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

def b58encode(data: bytes) -> str:
    n = int.from_bytes(data, "big")
    out = ""
    while n:
        n, r = divmod(n, 58)
        out = ALPHABET[r] + out
    zeros = len(data) - len(data.lstrip(b"\0"))
    return "1" * zeros + out

b58encode(b"Hello")           # '9Ajdvzr'
b58encode(bytes(32))          # '11111111111111111111111111111111'

Para código de producción, un paquete mantenido como base58 de PyPI cubre también Base58Check. Los patrones generales de codificación en Python están en la página de Python.

Preguntas frecuentes

¿Qué caracteres excluye Base58?

Base58 es Base62 sin cuatro caracteres que se confunden: 0 (cero), O (o mayúscula), I (i mayúscula) y l (L minúscula). Tampoco tiene +, / ni =, así que una cadena Base58 se selecciona con doble clic como una sola palabra y se puede usar en una URL sin escaparla.

¿Por qué la salida Base58 empieza por 1?

Cada 1 representa un byte cero inicial de la entrada. Un número sin más perdería esos ceros, así que Base58 los escribe explícitamente. Las direcciones Bitcoin empiezan por 1 porque su byte de versión es 0x00.

¿Base58 es lo mismo que Base58Check?

No. Base58Check es Base58 aplicado a una carga útil a la que se añade una suma de comprobación de 4 bytes con doble SHA-256. Lo usan las direcciones Bitcoin y las claves privadas WIF; las direcciones de Solana y los CIDv0 de IPFS usan Base58 simple. Usa la herramienta Base58Check para la forma con suma de comprobación.

¿Cuánto más largo es Base58 que la entrada?

Alrededor de un 37 % con datos aleatorios (log 256 / log 58 ≈ 1,366), algo más que el 33 % de Base64. La longitud exacta depende del valor: 32 bytes aleatorios dan 43 o 44 caracteres, mientras que 32 bytes cero dan 32 unos.