Este gerador de strings aleatórias cria texto aleatório criptograficamente seguro, do comprimento que você quiser e com o alfabeto que você escolher. Tudo acontece no seu navegador, então nada é enviado a lugar nenhum.
O que é uma string aleatória?
Uma string aleatória é uma sequência de caracteres sorteados de forma independente de um alfabeto, sem nenhum padrão que ligue uma posição à seguinte. Ao contrário de uma senha ou de um UUID, ela não tem estrutura obrigatória: o comprimento e o conjunto de caracteres quem decide é você.
String aleatória, senha ou UUID
Os três são valores imprevisíveis, mas não oferecem as mesmas garantias.
Um gerador de senhas garante que haja caracteres de cada tipo que você marcou. Um UUID tem uma estrutura fixa de 128 bits que outros sistemas sabem ler. Um gerador de string aleatória não promete nenhuma das duas coisas, e é exatamente por isso que ele serve quando quem controla o formato é você.
E se o que você procura é uma letra solta para um jogo ou uma aula, o gerador de letras aleatórias sorteia um caractere de cada vez e o mostra bem grande.
Por que o conjunto de caracteres importa
Cada caractere contribui com log₂(tamanho do conjunto) bits. Um dígito contribui com 3,3 bits; um caractere alfanumérico, com 5,95.
Ou seja, um alfabeto menor não é automaticamente mais fraco. Ajuste o comprimento, e um gerador de strings aleatórias limitado ao hexadecimal chega à mesma segurança de um que usa todos os caracteres.
Uma matriz com os bits de entropia de strings aleatórias de 8, 16, 32 e 64 caracteres em cinco conjuntos: só dígitos, hexadecimal, letras, alfanumérico e todos os caracteres. Mostra que um conjunto menor se compensa com comprimento: 32 caracteres hexadecimais chegam a 128 bits, mais ou menos o que dão 22 alfanuméricos, enquanto 8 caracteres não bastam em nenhum conjunto. As células abaixo de 64 bits ficam em vermelho, as de 64 a menos de 128 em âmbar e as de 128 ou mais em verde-azulado.
Como este gerador de strings aleatórias funciona
De onde vem o acaso
Os caracteres vêm de crypto.getRandomValues(), a fonte aleatória criptográfica do navegador, alimentada pela reserva de entropia do sistema operacional.
Math.random() não é usado em nenhuma parte deste site. Ele parte de uma semente e é determinístico: serve para embaralhar uma playlist, mas não para nada que chegue perto de segurança.
O viés do módulo
Conseguir bytes aleatórios é a parte fácil. Transformá-los em caracteres do seu alfabeto sem distorcer o resultado é onde muitas implementações erram sem avisar, e é a única coisa que um gerador de strings aleatórias precisa acertar de qualquer jeito.
O caminho óbvio é randomByte % 62. Um byte tem 256 valores, e 256 dividido por 62 dá 4, com resto 8.
Esses 8 valores que sobram caem nos oito primeiros caracteres, então de a a h eles saem 25% mais vezes que o resto. O resultado continua parecendo aleatório; só não é uniforme.
Dois gráficos de barras que comparam quantas vezes sai cada caractere de um conjunto de 62. Com um byte aleatório módulo 62, os oito primeiros caracteres, de a a h, saem 25 por cento mais vezes que o resto, porque 256 dividido por 62 deixa resto 8. Com amostragem por rejeição, todos os caracteres saem com a mesma frequência. Um conjunto hexadecimal de 16 caracteres não tem viés, porque 16 divide 256 exatamente.
Como a amostragem por rejeição resolve
Em vez de devolver os valores que sobram aos primeiros caracteres, eles são descartados e um byte novo é sorteado.
Descartar valores parece desperdício, mas a máscara tem o tamanho certo para que nunca se rejeite mais da metade. O custo não se nota, e o gerador de strings aleatórias termina com uma distribuição exatamente uniforme.
Por que isso importa em valores sensíveis
Em dados de teste, um viés de 25% não faz mal. Num token ou numa chave, ele dá vantagem a um atacante: as tentativas podem ser ordenadas da mais provável para a menos provável, em vez de feitas ao acaso.
Como todas as ferramentas deste site usam o mesmo motor, a correção vale tanto para dados de teste descartáveis quanto para algo que protege um acesso de verdade.
Escolher um conjunto de caracteres
| Opção | Caracteres | Tamanho | Use para |
|---|---|---|---|
| Alfanumérico | A-Z a-z 0-9 | 62 | Identificadores de uso geral |
| Letras | A-Z a-z | 52 | Sistemas que não aceitam números |
| Números | 0-9 | 10 | Códigos e referências numéricas |
| Hex | 0-9 a-f | 16 | Hashes, cores e valores alinhados a bytes |
| Seguro para URL | A-Z a-z 0-9 - _ | 64 | URLs e nomes de arquivo, sem escapar nada |
Alfanumérico: a opção segura
São 62 caracteres, sem pontuação que precise ser escapada ou que um sistema mais adiante estrague ou recuse. É o ponto de partida do gerador de strings aleatórias e a resposta certa na dúvida.
Hexadecimal
O hexadecimal se encaixa direitinho nos bytes: dois caracteres por byte, então 32 caracteres são exatamente 16 bytes. Por isso ele é a escolha natural quando um valor precisa bater com um comprimento específico em bits.
Seguro para URL
Acrescentar - e _ ao conjunto alfanumérico dá 64 caracteres que passam por uma URL, um nome de arquivo ou um argumento de terminal sem precisar escapar nada.
Conjuntos próprios e exclusões
Se você escrever os seus próprios caracteres, as opções deixam de valer. Os repetidos são eliminados antes, então aab se comporta igual a ab e nenhum caractere pesa em dobro.
O campo de exclusão funciona ao contrário: tira caracteres do conjunto ativo. Passe ao gerador de strings aleatórias il1Lo0O quando uma pessoa for ler o valor em voz alta ou copiá-lo à mão.
As opções de letras usam as 26 letras de a a z, sem o ç nem letras acentuadas. Não é descuido: essas strings acabam em URLs, nomes de arquivo e chaves de banco de dados, onde o ç precisa ser codificado e alguns sistemas nem o aceitam. Se precisar dele, escreva-o no seu conjunto próprio.
Como usar este gerador de strings aleatórias
Defina o comprimento
O controle deslizante vai de 1 a 1024 caracteres e começa em 32. A entropia é atualizada enquanto você o move, mostrando tanto os bits quanto o tamanho do conjunto ativo.
Escolha os caracteres
Use os conjuntos predefinidos para os casos comuns, ou as quatro opções para ajustar. O que você escrever no campo de conjunto próprio tem prioridade, e as opções ficam desativadas para deixar isso claro.
Só caracteres únicos
Com essa opção ligada, nenhum caractere se repete. Como isso só é possível enquanto o comprimento não passar do tamanho do alfabeto, o gerador de string aleatória limita o comprimento sozinho e mostra o máximo.
Gerar em lote
Aumente a quantidade até 100. A lista pode ser copiada com um clique ou baixada como arquivo de texto, o jeito mais rápido de preencher uma tabela de testes com valores de aparência realista.
Para que servem as strings aleatórias
Dados de teste
Preencher um banco de dados de testes com valores que claramente não são reais, mas que variam como os de produção. Com este gerador de strings aleatórias, é um passo só: gere em lote e baixe a lista.
Identificadores e códigos curtos
Referências de pedido, códigos de convite e chaves internas, quando você controla as duas pontas e quer um comprimento específico. Para códigos agrupados e formatados, o gerador de códigos aleatórios dá a forma por você.
Tokens e segredos
Um valor longo e seguro para URL, tirado de um gerador de strings aleatórias, serve como token de sessão ou como segredo para assinar webhooks. Para o que tem um formato convencional, prefira o gerador de chaves secretas (em inglês) ou o gerador de chaves de API (em inglês).
Quando usar uma ferramenta específica
Use o gerador de senhas quando uma pessoa for guardar o valor num gerenciador de senhas, e o gerador de UUID (em inglês) quando outro sistema precisar reconhecer o formato.
Recorra a este gerador de strings aleatórias quando nenhuma dessas convenções se aplicar e a forma depender só de você.
Perguntas frequentes
Este gerador de strings aleatórias é gratuito?
Sim, sem conta e sem limite de strings. Não existe versão paga nem nada em que se cadastrar.
As strings são geradas num servidor?
Não. Elas são criadas no seu navegador com a API Web Crypto e nunca são enviadas. Você pode conferir abrindo o painel de rede do navegador enquanto gera, ou se desconectando da internet e tentando de novo.
Posso usá-las como senhas ou chaves de API?
O acaso é criptograficamente seguro, então, tecnicamente, sim. Mas uma ferramenta específica dá valores de partida melhores: o gerador de senhas garante a mistura de tipos de caracteres, e o gerador de chaves de API acrescenta os prefixos e codificações de que essas chaves costumam precisar.
Qual deve ser o comprimento de uma string aleatória?
Depende do conjunto de caracteres. 32 caracteres alfanuméricos carregam cerca de 191 bits, e 32 hexadecimais, exatamente 128. Para qualquer valor sensível, 128 bits é a referência habitual.
O que faz a opção “Sem caracteres repetidos”?
Ela garante que cada caractere apareça no máximo uma vez. O comprimento fica então limitado ao tamanho do seu conjunto, porque não dá para tirar 20 caracteres únicos de um alfabeto de 16. Este gerador de strings aleatórias ajusta o comprimento máximo para você quando a opção é ligada.
Posso usar o meu próprio conjunto de caracteres?
Sim. Escreva os caracteres no campo de conjunto próprio e só eles serão usados, sem levar em conta as opções. Os repetidos são eliminados para que todos mantenham a mesma chance. Dá para incluir o ç ou letras acentuadas, mas numa URL eles terão de ser codificados.
O resultado é realmente uniforme?
Sim. Os caracteres são escolhidos por amostragem por rejeição, e não por uma operação de módulo. Tomar um byte aleatório módulo 62 faria os oito primeiros caracteres saírem 25% mais vezes que o resto, porque 256 não se divide exatamente por 62.
Qual a diferença para um UUID?
Um UUID tem uma estrutura fixa de 128 bits e um formato padrão, então outros sistemas o reconhecem e sabem lê-lo. Uma string aleatória tem o comprimento e o alfabeto que você escolher: é flexível, mas não diz sozinha o que é.
Mais geradores gratuitos
Todas as ferramentas deste site funcionam no seu navegador, sem conta e sem limites. As de chaves e segredos e a de UUID, por enquanto, só estão em inglês.
Ferramentas de senha
- Gerador de frases secretasPalavras em português ao acaso, fáceis de lembrar.
- Testador de força de senhaTeste uma senha sem enviá-la a lugar nenhum.
- Gerador de senhas fáceis de lembrarPalavras curtas em português que cabem num formulário.
- Gerador de senhas pronunciáveisSenhas que dá para dizer em voz alta.
Geradores aleatórios
Chaves e segredos
- API Key Generator (em inglês)Prefixed keys in common formats.
- Secret Key Generator (em inglês)128 to 512-bit secrets in hex or Base64.
- JWT Secret Generator (em inglês)HS256, HS384 and HS512 signing secrets.
- Salt Generator (em inglês)Random salts for password hashing.
- Hash Generator (em inglês)SHA-256, SHA-384 and SHA-512 in-browser.
Metodologia
Atualizado em
Como a entropia é calculada
entropia = comprimento × log₂(tamanho do conjunto)
O tamanho do conjunto é o que está de fato em uso, depois das exclusões e da eliminação de repetidos, e não o máximo teórico. Sem caracteres repetidos, a fórmula muda, porque cada caractere sai de um conjunto que vai diminuindo.
sem repetidos: log₂(n) + log₂(n−1) + … + log₂(n−comprimento+1)
Como os caracteres são escolhidos
Neste gerador de strings aleatórias, cada caractere vem de crypto.getRandomValues() por amostragem por rejeição. A máscara é ajustada à menor potência de dois que cobre o alfabeto, e qualquer valor que caia fora é descartado e sorteado de novo: a rejeição nunca passa de 50% e a distribuição é exatamente uniforme.
A alternativa ingênua, randomByte % tamanho, favorece o começo do alfabeto em até 25% com um conjunto de 62 caracteres. A figura acima mostra a diferença.
As cores da tabela de entropia
As células abaixo de 64 bits ficam em vermelho, as de 64 a menos de 128 em âmbar e as de 128 ou mais em verde-azulado. 64 bits é onde começa o nível “Razoável” do medidor deste site, e 128 é a referência habitual para valores sensíveis.