Enviar um arquivo
  1. base64hub
  2. Outras bases
  3. Base64 para Base58

Conversor de Base64 para Base58 online

Cole o Base64 e receba os mesmos bytes em Base58, com o alfabeto do Bitcoin que a Solana e o IPFS usam. Base64 URL-safe, preenchimento ausente e quebras de linha são aceitos.

Grátis sem cadastro, sem limites Local nada é enviado Tolerante aceita Base64 URL-safe e sem preenchimento Atualizado 27 de out. de 2026
Entrada 0Bytes 0 BSaída 0

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como converter Base64 para Base58

  1. Cole a string Base64 em Entrada · Base64. Caracteres padrão e URL-safe funcionam, assim como preenchimento = ausente, quebras de linha e um prefixo data:.
  2. Leia o resultado em Saída · Base58.
  3. Escolha o Alfabeto abaixo da saída se o destino não for o Base58 no estilo Bitcoin. Flickr e Ripple ordenam os mesmos 58 caracteres de outro jeito.
  4. Use Copiar saída, ou clique em Base58 → Base64 no seletor de direção para voltar. A página Base58 para Base64 já começa nesse sentido.

A conversão passa pelos bytes brutos: o Base64 é decodificado, e os bytes são codificados em Base58. Nada é acrescentado nem removido, então uma chave de 32 bytes continua sendo uma chave de 32 bytes.

Exemplos

Base64Base58O que é
SGVsbG8=9AjdvzrO texto Hello
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=1111111111111111111111111111111132 bytes zero: o System Program da Solana
Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk=TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DAID do programa SPL Token da Solana
Bt324ddloZPZy-FGzut5rBy0he1fWzeROoz1hX7_AKkTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DAA mesma chave em Base64 URL-safe sem preenchimento

As duas últimas linhas são os mesmos 32 bytes escritos de duas formas em Base64, então ambas dão o mesmo Base58.

Montando um CIDv0 do IPFS a partir de um digest SHA-256

Um CIDv0 é o Base58 de um multihash: os bytes 12 (SHA-256) e 20 (32 bytes de comprimento), seguidos do digest. Muitas ferramentas imprimem um digest SHA-256 em Base64, e converter só ele não dá uma string Qm…:

BytesBase64Base58
Só o digestJiqGtnblhp7dXRrfj/0B1inDFUv96uz8jPoNkOCILYo=3Zz6yE7jDUVDb6doCEWrK58or4X2TmTLBiJeyWY4NHvq
12 20 + digestEiAmKoa2duWGnt1dGt+P/QHWKcMVS/3q7PyM+g2Q4Igtig==QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq

O EiA no início da segunda string Base64 é o cabeçalho 12 20 codificado, então um multihash em Base64 é fácil de reconhecer. Para acrescentar o cabeçalho você mesmo, converta o digest com Base64 para hex, coloque 1220 na frente e codifique o hex na página de Base58 com De definido como Hex.

Isso só ajuda quando você já tem o digest que o IPFS calculou. O IPFS faz o hash do bloco UnixFS de um arquivo, não do arquivo bruto, então rodar sha256sum num arquivo não reproduz o CID dele.

Comprimento: Base64 vs Base58

BytesBase64Base58 (dados aleatórios)
162421 ou 22
202826 a 28
324443 ou 44
648887 ou 88

O comprimento do Base64 depende só da quantidade de bytes. O do Base58 depende também do valor, e é por isso que os endereços Solana variam entre 32 e 44 caracteres. Não valide Base58 pelo comprimento exato.

A mesma conversão em JavaScript

O Node.js decodifica Base64 nativamente; a metade do Base58 precisa de um BigInt:

const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

function base64ToBase58(b64) {
  const bytes = Buffer.from(b64, "base64");
  let n = BigInt("0x" + (bytes.toString("hex") || "0"));
  let out = "";
  while (n > 0n) {
    out = ALPHABET[Number(n % 58n)] + out;
    n /= 58n;
  }
  for (const b of bytes) {
    if (b !== 0) break;
    out = "1" + out;
  }
  return out;
}

base64ToBase58("Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk=");
// 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'

O Buffer.from(…, "base64") também aceita entrada URL-safe. A função depende do Buffer do Node; Base64 em Node.js trata disso em mais detalhes.

Perguntas frequentes

Dá para converter Base64 em Base58 sem decodificar para bytes?

Não caractere por caractere. O Base64 mapeia grupos fixos de 6 bits, enquanto o Base58 trata todos os bytes como um único número, então todo conversor, inclusive esta página, decodifica o Base64 para bytes antes e recodifica esses bytes.

Por que o resultado em Base58 às vezes é mais curto que o Base64?

O Base58 não tem preenchimento, e cada byte zero à esquerda custa um caractere. 32 bytes sempre dão 44 caracteres Base64 (com =), mas 43 ou 44 em Base58, e só 32 quando todos os bytes são zero.

Qual alfabeto Base58 a Solana usa?

O alfabeto do Bitcoin, que é o padrão aqui. Flickr e Ripple estão em Alfabeto, se você precisar.

Por que minha saída em Base58 não começa com Qm?

O Qm vem do cabeçalho multihash de 2 bytes 12 20. Se o seu Base64 contém só o digest SHA-256 de 32 bytes, acrescente esses dois bytes antes, como descrito nesta página.