Validador de Base91
Verifica se uma string usa apenas caracteres Base91 (letras, dígitos e símbolos específicos como !#$%&()*+...). Não decodifica, apenas valida formato.
Base91: a codificação binário-texto compacta que empacota mais bytes por caractere que o Base64
Base91 é um esquema de codificação binário-para-texto criado por Joachim Henke por volta do ano 2000 como alternativa mais eficiente em espaço ao Base64. Usa um alfabeto de 91 caracteres construído a partir de caracteres ASCII imprimíveis, excluindo deliberadamente os três caracteres sensíveis a strings ", ' e \, de modo que a saída codificada pode ser inserida com segurança dentro de literais de string com aspas duplas, simples e com escape de barra invertida sem precisar de escaping.
A grande vantagem é densidade: enquanto o Base64 tem 33% de overhead, o Base91 fica em torno de 14% de overhead — cada 13 bytes de entrada produzem em média 16 caracteres de saída, razão 1,23x. Isso torna o Base91 atraente para embutir blobs binários em canais de texto com restrição de tamanho, arquivos de log, formatos de configuração e data URIs longas onde cada kilobyte conta.
Alfabeto, conjunto de caracteres e regex de validação
Os 91 caracteres cobrem A-Z, a-z, 0-9 e um conjunto curado de pontuação: !#$%&()*+,./:;<=>?@[]^_`{|}~". Uma regex prática de validação é ^[A-Za-z0-9!#$%&()*+,./:;<=>?@[\]^_`{|}~"]+$. Note que a codificação é case-sensitive e somente ASCII — strings Base91 nunca contêm whitespace, quebras de linha ou caracteres não-ASCII.
Como o alfabeto é denso e irregular, decodificar é mais caro do que Base64: implementações costumam usar aritmética com BigInt para converter blocos de caracteres de volta em bytes. Espere um decode Base91 mensuravelmente mais lento que Base64 para o mesmo payload.
Base91 vs Base64, Z85 e Base85 (Ascii85)
- vs Base64: Base91 é cerca de 14% maior que a entrada binária vs 33% do Base64 — mais compacto, mas muito menos universal.
- vs Z85 (ZeroMQ, RFC 32/Z85): alfabeto de 85 caracteres pensado para ser seguro em JSON e em código-fonte. Mais simples, saída ligeiramente maior, muito mais padronizado.
- vs Base85 / Ascii85: usado pelo PostScript e PDF da Adobe; a RFC 1924 também definiu uma variante Ascii85 para representação textual de IPv6. Cerca de 25% de overhead.
- Veredicto: Base91 ganha em densidade mas perde em ubiquidade. Use só quando os 14% de economia realmente importarem e você controlar codificador e decodificador.
Armadilhas comuns e onde o Base91 falha
- Não é URL-safe: o alfabeto contém
+,/,?,=,&e#— todos reservados em URIs. Ainda é preciso percent-encoding em contextos de URL, o que corrói a vantagem de tamanho. - Não é universal: ao contrário do Base64, navegadores e bibliotecas padrão não trazem Base91 nativo. É preciso uma lib dedicada nas duas pontas.
- Variante basE91: a grafia original de Henke é basE91; alguns forks (ex:
iqlusion) usam alfabetos ligeiramente diferentes — confirme que os dois lados usam a mesma tabela. - Performance de decode: decodificadores baseados em BigInt são notavelmente mais lentos que a abordagem de lookup-table do Base64 para payloads grandes.
- Ferramental limitado: entre desenvolvedores brasileiros e na maioria das comunidades, o Base91 tem adoção praticamente nula — codificação de nicho com ferramentas de nicho.
Bibliotecas e ecossistema
Para Node.js o pacote npm base91 é a implementação mais usada. Em Python o caminho é py-base91 ou o código C de referência linkado do site de Henke. Há ports comunitários para Go, Rust e Java, mas nenhum faz parte de biblioteca padrão — sempre pin uma versão específica e documente o alfabeto exato para evitar bugs de interoperabilidade.
FAQ
Como o Base91 se compara ao Base64?
Base91 é mais compacto — cerca de 14% de overhead vs 33% do Base64 — mas é muito menos universal. Base64 está embutido em praticamente toda linguagem e runtime; Base91 sempre exige uma lib extra.
Base91 é URL-safe?
Não. O alfabeto inclui +, /, =, ? e &, que são reservados em URIs. É preciso percent-encoding ao embutir a string em URLs, e esse overhead normalmente apaga a vantagem de tamanho.
Há suporte amplo de bibliotecas para Base91?
Não — é uma codificação de nicho. Existem libs funcionais para Node.js (base91), Python, C e algumas outras linguagens, mas não faz parte de nenhuma biblioteca padrão e o ferramental é limitado.
Quando o Base91 realmente vale a pena?
Quando você controla codificador e decodificador, os 14% de economia em relação ao Base64 importam (data URIs longas, arquivos de log, transmissão compacta) e o canal é texto-ASCII-safe mas não é URL. Caso contrário, fique com Base64.
Por que excluir apenas ", ' e \?
Esses três são os delimitadores e caracteres de escape mais comuns em literais de string de código-fonte. Ao excluí-los, strings Base91 podem ser embutidas diretamente em literais com aspas em quase qualquer linguagem de programação sem precisar de escaping adicional.
Ferramentas Relacionadas
Validador de CPF
Valide CPFs instantaneamente pelo algoritmo oficial da Receita Federal, sem enviar dados para nenhum servidor. Gratuito e sem cadastro.
Validador de CPF em Lote
Valida uma lista de CPFs (um por linha) e mostra quais são válidos e quais são inválidos. Sem envio para servidores.
Validador de CNPJ em Lote
Valida uma lista de CNPJs (um por linha) e mostra resumo: válidos, inválidos e total. Sem envio para servidores.