1001Ferramentas
🔢Validadores

Validador de Base32 Crockford

Verifica se uma string usa apenas o alfabeto Base32 Crockford (omite I, L, O, U para evitar ambiguidade). Comum em IDs human-readable.

Base32 de Crockford: a codificação amigável por trás do ULID

O Base32 de Crockford, criado por Douglas Crockford, é uma variante de Base32 otimizada para humanos lerem e digitarem identificadores. Usa 0–9 e as letras A–Z, mas exclui deliberadamente I, L, O e U — os três primeiros para evitar confusão com 1 e 0, e o U para evitar palavrões acidentais. Esta ferramenta valida o conjunto de caracteres (insensível a caixa, hífens ignorados).

O exemplo acima, 01ARZ3NDEKTSV4RRFFQ69G5FAV, é um ULID — um identificador de 26 caracteres, ordenável lexicograficamente, cuja codificação é o Base32 de Crockford. Isso faz desse alfabeto a espinha dorsal dos IDs ordenáveis modernos.

O que o torna tolerante

  • Insensível a caixa: decoders aceitam maiúsculas ou minúsculas e normalizam para maiúsculas.
  • Substituições de confundíveis na decodificação: O0, e I / L1, então um erro de digitação humano ainda decodifica certo.
  • Hífens são ignorados: você pode inserir - por legibilidade e eles são removidos antes de decodificar.
  • Símbolo de verificação opcional: o Crockford define um caractere de verificação mod-37 (*, ~, $, =, U) que algumas implementações anexam.

Onde aparece

  • ULID: timestamp de 48 bits + 80 bits de aleatoriedade, codificado em 26 caracteres Crockford — ordenável e seguro para URL.
  • IDs públicos e cupons: códigos curtos feitos para serem lidos em voz alta, ditados por telefone ou impressos em recibos.
  • Shards de chave e licenças: onde erros de transcrição precisam ser tolerados.
  • Mock data / testes: checar que um token é Crockford bem-formado antes de parsear.

Pegadinhas

  • Não é RFC 4648: o Crockford é uma especificação à parte; não o decodifique com uma tabela Base32 padrão ou Base32hex.
  • As exclusões são o ponto: ver I, L, O ou U na saída canônica significa que não é Crockford canônico.
  • Símbolo de verificação ≠ dado: se houver um caractere de verificação no final, não o inclua na decodificação do valor.
  • Monotonicidade do ULID: dois ULIDs no mesmo milissegundo dependem da parte aleatória; a ordenabilidade é por milissegundo, não estritamente única.

FAQ

Por que excluir I, L, O, U? I/L parecem 1, O parece 0 e o U é descartado para evitar formar palavras ofensivas — tudo para tornar códigos digitados à mão confiáveis.

Um ULID é só Base32 de Crockford? Um ULID é um valor de 128 bits cuja forma em texto são 26 caracteres Base32 de Crockford; a codificação é Crockford, a estrutura (tempo + aleatório) é própria do ULID.

Preserva a ordem como o Base32hex? Sim, para o alfabeto canônico — é por isso que ULIDs ordenam cronologicamente como strings simples.

Ferramentas Relacionadas