Gerador de String Aleatória
Gere strings aleatórias customizáveis — defina alfabeto (A-Z, a-z, 0-9, hex, base32, base58, símbolos), tamanho e quantidade. Útil para tokens, IDs e fixtures. Tudo no navegador.
Quando você quer só uma string aleatória
Uma string aleatória é a primitiva genérica que mora abaixo de identificadores mais estruturados como UUIDs, ULIDs e nanoids. Esses têm forma fixa, alfabeto definido e uma especificação contra a qual validar. Uma string aleatória pura é só N caracteres tirados de um charset à sua escolha, sem schema e sem opinião sobre como é codificada. Por isso ela é a ferramenta certa quando a estrutura é irrelevante ou quando um sistema externo já especifica o formato.
Casos de uso típicos incluem chaves de API geradas manualmente, identificadores de sessão temporários, slugs aleatórios para URLs não-adivinháveis, geração simples de senha sem regras de complexidade, salts criptográficos para hashes, IDs anônimos, códigos de convite e seeds para fixtures de teste. O alfabeto e o comprimento certos dependem do caso, não de uma convenção fixa.
Comprimento e entropia
A força de uma string aleatória se mede em bits de entropia, dado pela fórmula log2(tamanho_do_charset) × comprimento. Algumas referências:
- 10 chars alfanuméricos (62 símbolos) — cerca de 59,5 bits
- 16 chars alfanuméricos — cerca de 95,3 bits
- 16 chars em hex (16 símbolos) — exatos 64 bits
- 22 chars em base64url — cerca de 132 bits, o equivalente a um UUID codificado em base64
- 32 chars em hex — 128 bits, a força de uma saída de MD5
O NIST SP 800-63B recomenda pelo menos 64 bits para tokens de sessão de baixa sensibilidade e 128 bits ou mais para tokens críticos como links de reset de senha, chaves de API com escopo administrativo e nonces de assinatura. Abaixo de 64 bits, força bruta começa a ficar viável para um atacante motivado.
Math.random não é aleatório o suficiente
Nunca use Math.random() ou equivalentes em outras linguagens para tokens que protejam algo. O PRNG padrão da maioria dos runtimes é rápido, mas previsível: com amostras suficientes, um atacante recupera o estado interno e prevê todos os valores futuros. A primitiva correta é um gerador pseudoaleatório criptograficamente seguro (CSPRNG), exposto em toda plataforma moderna:
// Browser
const bytes = new Uint8Array(16);
crypto.getRandomValues(bytes);
// Node.js
const { randomBytes } = require('crypto');
randomBytes(16);
// Python
import secrets
secrets.token_urlsafe(16)
Todos puxam do pool de entropia do sistema operacional (/dev/urandom no Linux/macOS, BCryptGenRandom no Windows). Esta ferramenta usa crypto.getRandomValues internamente, então a saída é segura para uso sensível.
Escolhendo o alfabeto certo
O charset é mais que estética. Cada alfabeto tem trade-offs:
- Alfanumérico (62) — saída mais densa URL-safe sem símbolos. Padrão para a maioria dos casos.
- Hex (16) — case-insensitive e trivialmente URL-safe; a saída é o dobro do tamanho para a mesma entropia.
- Base64 — 64 símbolos incluindo
+,/e o padding=. Compacta, mas quebra dentro de URLs sem encoding. Prefira base64url (-e_no lugar). - Base32 (RFC 4648) — 32 letras e dígitos sem ambiguidade, case-insensitive, projetada para transcrição humana.
- Base58 (Bitcoin) — remove os visualmente ambíguos
0,O,l,Ipara códigos lidos em voz alta. - Alfanumérico + símbolos — mais forte para senhas; pode precisar de quoting em URLs e shells.
Se um código vai ser digitado por uma pessoa, exclua caracteres ambíguos (0/O, 1/l/I) e aumente o comprimento para repor a entropia perdida.
FAQ
Qual o tamanho ideal?
Para tokens de segurança, mire em pelo menos 16 caracteres alfanuméricos (~95 bits) ou 22 caracteres em base64url (~132 bits). Para identificadores não sensíveis, 8–12 normalmente bastam.
Posso usar como senha?
Sim — desde que gerada por CSPRNG (esta ferramenta faz isso) e com comprimento suficiente. 16+ caracteres alfanuméricos é uma senha forte gerada por máquina; para contas que serão digitadas por humanos, prefira uma passphrase mais fácil de lembrar.
Os símbolos quebram minha URL?
Alguns sim. Base64 padrão (+, /, =) precisa de URL-encoding; os alfabetos alfanumérico e hex são sempre URL-safe. Se a string vai viajar em URL, escolha esses ou use base64url.
Ferramentas Relacionadas
Gerador de String Segura Personalizável
Gera strings aleatórias com classes específicas: alfa minúsculas, maiúsculas, dígitos, símbolos. Útil para senhas, tokens e códigos. Usa crypto.getRandomValues.
Gerador de Cor Aleatória
Gere cores aleatórias nos formatos HEX, RGB e HSL com um clique. Ótimo para inspiração de design, paletas, testes de interface e quebrar o bloqueio criativo.
Gerador de Hora Aleatória
Sorteia horários (HH:MM:SS) dentro de uma janela informada. Útil para preencher escalas e testes.