KeroTools

Gerar Identificadores UUID v4 Aleatórios

Gere quantos UUID v4 aleatórios precisar para bancos de dados e código, na hora.

Os valores nunca saem do seu aparelho

Nada é registrado em lugar nenhum

Aleatoriedade em nível de sistema

Funciona em todo navegador moderno

Como funciona

  1. 1

    Escolha uma versão

    v4, a menos que o identificador vá para um índice de banco de dados; nesse caso considere v7.

  2. 2

    Escolha quantos

    Um para um teste rápido, ou um lote para dados de seed e fixtures.

  3. 3

    Copie o resultado

    Leve para um esquema, uma requisição, um arquivo de configuração ou um teste.

Por que usar esta ferramenta

Versão 4 e versão 7

Aleatório para uso geral, ou ordenado por marcação de tempo quando o valor vira chave primária.

Aleatoriedade criptográfica

Gerado a partir da fonte segura do navegador, não de uma função pseudoaleatória previsível.

Geração em lote

Um identificador ou mil, produzidos num passo e prontos para colar num arquivo de seed.

Com ou sem hifens

A forma canônica de 36 caracteres ou a crua de 32, conforme o que o destino espera.

Nada é transmitido

Os valores são produzidos no seu navegador, então nenhum terceiro sabe quais identificadores você usou.

Grátis e sem conta

Sem cadastro, sem marca d’água e sem limite de quantos você gera.

A versão importa mais do que quase todo mundo percebe

As pessoas dizem UUID e querem dizer versão 4, que são 122 bits aleatórios e nada mais. Esse é o padrão certo, mas não é a única versão e as diferenças têm consequências. A versão 1 monta o identificador a partir de uma marcação de tempo e do endereço de hardware de rede da máquina, o que significa que um UUID v1 revela em silêncio quando foi criado e, historicamente, qual máquina o criou — tudo bem dentro de um sistema, desconfortável em qualquer coisa que um cliente veja. A versão 7, padronizada recentemente, mantém a aleatoriedade mas põe uma marcação de tempo em milissegundos nos bits iniciais, então os valores ordenam cronologicamente. Se você já gerou um UUID sem pensar de que tipo era, era quase certamente v4, e para a maioria dos usos essa é a resposta certa. A exceção é a seguir.

Identificadores aleatórios castigam um índice de banco de dados

Este é o fato prático de maior consequência sobre UUIDs e surpreende quem vem de inteiros. Um índice é uma estrutura ordenada, e estruturas ordenadas gostam de valores que chegam em ordem. Uma sequência de inteiros é anexada ao fim do índice, tocando uma única página repetidamente e mantendo-a em memória. Um fluxo de UUID v4 é aleatório por projeto, então cada inserção cai num lugar diferente, forçando o índice a escrever em páginas espalhadas, dividi-las e manter muito mais da estrutura em cache para acompanhar. Numa tabela grande a diferença é mensurável, e o sintoma é a história conhecida de um sistema que ficou lento depois de adotar chaves UUID. A versão 7 existe justamente para isso: a marcação de tempo inicial faz os valores novos ordenarem perto uns dos outros, então as inserções voltam a ser locais enquanto os identificadores continuam inadivinháveis.

Um UUID não é segredo, a não ser que você o torne um de propósito

Aqui duas afirmações se confundem e as duas importam. A primeira é que um UUID v4 é genuinamente inadivinhável — 122 bits aleatórios estão muito além da força bruta — mas só se a aleatoriedade for criptográfica. Muito código gera UUID a partir de uma função aleatória de uso geral, que é rápida e previsível, e identificadores vindos de fonte previsível podem ser enumerados por quem descobrir a semente. Confira o que o seu gerador usa. A segunda é que mesmo um v4 perfeito é um identificador e não uma autorização. Usar um UUID inadivinhável como link de compartilhamento funciona, e significa que a URL é a senha: ela vai ficar no histórico do navegador, em cabeçalhos de referência, num log de chat e em qualquer e-mail por onde tenha sido encaminhada. É um desenho aceitável para um link de documento e inaceitável para algo que precise ser revogado.

O que a garantia de colisão de fato diz

A razão de os UUIDs funcionarem sem coordenação é um argumento de probabilidade, e vale conhecer os números para parar de se preocupar. Com 122 bits aleatórios, seria preciso gerar cerca de 2,7 quintilhões de UUIDs versão 4 antes de haver 50 por cento de chance de dois deles baterem. A um milhão por segundo isso são dezenas de milhares de anos, e é por isso que sistemas em lados opostos do mundo podem cunhar identificadores sem registro central e sem jamais se coordenar. Do que a garantia depende inteiramente é da qualidade da aleatoriedade. Um gerador fraco ou mal semeado derruba esse número sem aviso nenhum, e UUIDs duplicados em produção quase sempre remontam a uma fonte defeituosa e não a azar — vários incidentes conhecidos envolveram dispositivos que semeavam sua fonte aleatória de forma idêntica na inicialização.

Guardá-los custa mais do que se imagina

Um UUID tem 128 bits — 16 bytes — mas a forma que você costuma ver são 36 caracteres de texto, porque a representação canônica escreve cada byte como dois dígitos hexadecimais e acrescenta quatro hifens. Guarde isso como string e você está usando 36 bytes por linha em vez de 16, mais o que o seu banco acrescenta para uma coluna de comprimento variável, e todo índice sobre aquela coluna carrega a mesma inflação. Numa tabela de alguns milhares de linhas ninguém nota. Numa de cem milhões, num índice que precisa caber em memória, é a diferença entre caber e não caber. A maioria dos bancos tem um tipo nativo de 16 bytes exatamente por isso, e usá-lo costuma ser o certo. Os detalhes de formato são menores em comparação: hifens são convenção e não obrigação, a comparação ignora caixa e minúscula é a saída canônica.

Por que gerar localmente importa mesmo com valores aleatórios

É justo perguntar o que privacidade tem a ver com um número aleatório, e a resposta é que o número deixa de ser anônimo assim que é amarrado a alguma coisa. Um gerador hospedado vê cada identificador que emite e pode registrá-lo junto com o endereço solicitante e a hora. Se esses UUIDs depois viram referências de pedido, links de compartilhamento, chaves de API ou identificadores de banco no seu sistema, outra pessoa tem uma lista de valores válidos e uma boa ideia do que eles pertencem. É um risco pequeno e completamente desnecessário, porque gerar localmente o elimina por inteiro: o seu navegador traz uma fonte aleatória criptográfica embutida, os valores não saem da página e você pode confirmar que nenhuma requisição foi feita na aba Rede das ferramentas de desenvolvedor.

Erros comuns que vale evitar

  • Usar UUIDs v4 como chave primária numa tabela grande. Valores aleatórios espalham as escritas do índice e o fragmentam — use v7, cuja marcação de tempo inicial mantém as inserções locais e continua inadivinhável.
  • Gerar UUIDs a partir de uma função aleatória de uso geral. Só uma fonte criptográfica os torna inadivinháveis; uma semente previsível permite enumerar os identificadores.
  • Tratar um UUID inadivinhável como autorização. Um link de compartilhamento feito com ele significa que a URL é a senha, e URLs acabam no histórico, em cabeçalhos de referência e em e-mails encaminhados.
  • Guardar um UUID como string de 36 caracteres em escala. O valor tem 16 bytes; a forma de texto mais que dobra isso em cada linha e cada índice — a maioria dos bancos tem um tipo nativo.
  • Usar v1 em qualquer coisa que o cliente veja. Ele codifica a hora de criação e, historicamente, o endereço de hardware de rede da máquina — mais do que um identificador precisa revelar.

Comparação

ItemEsta ferramentaGeradores onlineUma chamada de biblioteca
Valores transmitidos ou registradosNuncaPossívelNão
v7 disponívelSimRaramenteDepende da biblioteca
Aleatoriedade criptográficaSimGeralmente não declaradaGeralmente sim
Geração em loteSimÀs vezesSim
Funciona sem abrir um projetoSimSimNão
PreçoGrátisGrátis / planos pagosGrátis

Recursos

UUID v4

A versão de 122 bits aleatórios que a maioria dos sistemas quer dizer quando fala UUID.

UUID v7

Com marcação de tempo na frente e portanto ordenável, que é o que um índice quer.

Maiúsculas ou minúsculas

A forma canônica é minúscula; alguns sistemas exigem maiúscula, e as duas estão aqui.

Gerar em lote

Centenas de uma vez, um por linha, prontos para um script de seed ou uma coluna de planilha.

Usa o CSPRNG da plataforma

Os valores vêm do gerador criptográfico do navegador em vez de um de uso geral.

Instantâneo, sem requisição

Nada é buscado, então a geração é imediata e funciona com a aba já carregada.

Nada para instalar

Sem biblioteca, sem runtime, sem dependências — funciona na página web.

Compatível com árabe e RTL

Interface completa em oito idiomas, incluindo árabe da direita para a esquerda.

Seguro por padrão

Servido por HTTPS, sem rastreio e sem requisições a terceiros.

Quem usa

Desenvolvedores

Conseguir um identificador válido para uma fixture ou linha manual de banco sem abrir um console.

Engenheiros de banco de dados

Produzir valores v7 quando uma tabela precisa de chaves inadivinháveis que ainda indexem bem.

Engenheiros de QA

Gerar um lote de identificadores únicos para dados de teste num passo só.

Integradores de API

Criar uma chave de idempotência ou um identificador de correlação para uma requisição.

Perguntas Frequentes

Não. Tudo roda localmente no seu navegador — seu texto nunca é enviado, armazenado ou compartilhado.

Sim — totalmente grátis, sem conta e sem limites.