Enviar um arquivo
  1. base64hub
  2. Outras bases
  3. Decodificador Base32

Decodificador Base32: Base32 para texto ou hex

Cole uma string Base32 e leia o texto decodificado. Minúsculas, espaços e preenchimento = ausente não são problema, então um segredo de 2FA copiado de uma tela de configuração decodifica do jeito que está.

Grátis sem cadastro, sem limites Local nada é enviado Tolerante qualquer caixa, espaços, 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 decodificar Base32

  1. Cole a string em Entrada · Base32 (RFC 4648). Maiúsculas ou minúsculas, espaços entre grupos e quebras de linha são aceitos, e o preenchimento = é opcional.
  2. Leia o texto decodificado em Saída · Texto. O charset padrão é UTF-8; mude o Charset abaixo da saída se o texto veio de outro sistema.
  3. Se a saída for um amontoado de símbolos, os dados são binários. Ajuste Para em Hex ou Base64 para ver os bytes, ou clique em Salvar bytes para baixá-los como arquivo.
  4. Se a entrada usa outro alfabeto, mude De para Base32hex, Crockford Base32 ou z-base-32.
  5. Para codificar, clique em Texto → Base32 (RFC 4648) no seletor de direção, ou use o codificador Base32.

O que o decodificador aceita e rejeita

O decodificador é tolerante com a formatação e rígido com o conteúdo:

EntradaResultado
JBSWY3DPHello
jbswy3dpHello; a caixa não importa
JBSW Y3DP EHPK 3PXP10 bytes, 48656c6c6f21deadbeef em hex
MZXW6YQfoob; preenchimento ausente não é problema
JBSWY3D0Erro: caractere inesperado "0" na posição 8

O erro aponta o primeiro caractere que não pertence ao alfabeto. Um 0, 1, 8 ou 9 quase sempre significa que a string usa outro alfabeto Base32, e um + ou / significa que ela é, na verdade, Base64; experimente o decodificador Base64.

Decodificando um segredo de 2FA ou TOTP

A chave que um app autenticador mostra durante a configuração, muitas vezes agrupada como jbsw y3dp ehpk 3pxp, é Base32 da RFC 4648. Decodificá-la dá a chave HMAC bruta, que são bytes aleatórios, então veja-a como Hex em vez de Texto. O comprimento indica o tamanho da chave: 16 caracteres são 10 bytes, 32 caracteres são 20 bytes (160 bits, o tamanho que a RFC 4226 recomenda), 52 caracteres são 32 bytes.

Para conferir se você tem o segredo certo, gere um código com ele. Esta função Python decodifica o segredo do mesmo jeito tolerante e depois segue a RFC 6238:

import base64, hashlib, hmac, struct

def totp(secret, t, digits=6, step=30):
    s = secret.replace(" ", "").upper()
    key = base64.b32decode(s + "=" * (-len(s) % 8))
    mac = hmac.new(key, struct.pack(">Q", t // step), hashlib.sha1).digest()
    off = mac[-1] & 0x0F
    code = struct.unpack(">I", mac[off:off + 4])[0] & 0x7FFFFFFF
    return str(code % 10**digits).zfill(digits)

totp("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ", 59, 8)   # '94287082'

O segredo e o 94287082 esperado são o vetor de teste SHA-1 da RFC 6238. Para o código atual, passe int(time.time()) como t. Mais padrões de decodificação estão na página de Python.

IPFS CIDv1 e outros Base32 com prefixo

Alguns formatos colocam um marcador na frente do Base32. As strings IPFS CIDv1 começam com b, o código multibase para Base32 da RFC 4648 em minúsculas e sem preenchimento: em bafybei… o b é o prefixo e afybei… são os dados. Remova o b, decodifique e ajuste Para em Hex. Os primeiros bytes são a versão do CID (01), o tipo de conteúdo (70 para dag-pb) e o cabeçalho do multihash (1220 para um SHA-256 de 32 bytes).

Os endereços onion v3 do Tor funcionam do mesmo jeito, sem prefixo: os 56 caracteres antes de .onion são Base32 de 35 bytes, uma chave pública de 32 bytes, um checksum de 2 bytes e um byte de versão (03).

Problemas comuns

  • O Python lança binascii.Error: Non-base32 digit found. A entrada está em minúsculas. Passe casefold=True para o b32decode, ou chame .upper() antes.
  • O Python lança binascii.Error: Incorrect padding. Os sinais = foram removidos. Complete o comprimento até um múltiplo de 8, como na função acima.
  • O base32 -d diz invalid input. O GNU coreutils não aceita minúsculas nem espaços. Limpe a string antes ou decodifique aqui.
  • O texto decodifica, mas para a coisa errada. Strings base32hex e Crockford decodificam sem erro com o alfabeto errado. Se a fonte diz “Base32” mas a string não tem 0, 1, 8 nem 9, a RFC 4648 continua sendo a melhor aposta; caso contrário, experimente as outras duas.

Perguntas frequentes

Como decodificar um segredo TOTP?

Cole o segredo (o valor secret= de um link otpauth://, ou a chave em texto que o app mostra no lugar do QR code) e ajuste Para em Hex. O resultado é a chave HMAC bruta. São bytes aleatórios, então a saída Texto vai parecer lixo, e isso é esperado.

Por que o Python diz Incorrect padding ao decodificar Base32?

O base64.b32decode quer que o comprimento seja múltiplo de 8. Acrescente antes os = que faltam: s + "=" * (-len(s) % 8). Este decodificador não precisa de preenchimento.

Dá para decodificar um ULID aqui?

Não diretamente. Um ULID usa o alfabeto Crockford, mas codifica um único número de 128 bits em 26 caracteres, começando com 2 bits sobrando. A opção Crockford daqui empacota bytes a partir do primeiro caractere, então devolve bytes deslocados para um ULID.

Quais caracteres são inválidos em Base32?

No Base32 da RFC 4648, qualquer coisa além de A–Z, 2–7 e = no final. Os dígitos 0, 1, 8 e 9 são o sinal habitual de que a string é base32hex ou Crockford; mude De para testá-los.