Ferramentas
Guias

Gerador de UUID

Dev

Gera UUIDs aleatórios criptográficos (RFC 4122 v4) com crypto.randomUUID.

100% no cliente Sem backend
Nesta página

O que é um UUID?#

Um UUID (Universally Unique Identifier, também chamado GUID em sistemas Microsoft) é um identificador de 128 bits renderizado como 32 dígitos hex agrupados em 8-4-4-4-12, por exemplo c9bf1d4d-7d4f-4b3a-8b2c-1e5f6a7b8c9d. A ideia é simples mas poderosa: gerar identificadores a pedido, sem autoridade central e sem coordenação entre máquinas, e ainda assim ter a probabilidade de dois colidirem ser efetivamente zero. Essa propriedade é o que faz dos UUIDs a estratégia padrão de chave primária para bases de dados distribuídas, o campo id em quase todos os recursos de uma API JSON, os correlation IDs que amarram linhas de registro entre microsserviços, e os nomes de arquivo de blobs enviados.

Esta página gera UUIDs RFC 4122 versão 4 — a variante construída a partir de bits aleatórios. A versão 4 é o que se quer em quase todos os casos modernos: não transporta o endereço MAC da máquina (ao contrário da v1), não incorpora hierarquia de namespace (ao contrário da v3/v5) e baseia-se puramente em aleatoriedade criptográfica para a unicidade. Pode gerar um único UUID ou um lote de até 10 000 de uma vez, em minúsculas ou maiúsculas, inteiramente no seu navegador.

Dois dos 32 dígitos hex não são realmente aleatórios — declaram o próprio tipo do UUID. O nibble de versão na posição 14 (o primeiro caráter do terceiro grupo) é sempre 4, e o nibble de variante na posição 19 (o primeiro caráter do quarto grupo) é sempre 8, 9, a ou b. É por isso que todos os valores que vê nesta página se leem xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx. Essas duas posições fixas funcionam como uma impressão digital auto-descritiva: qualquer string que corresponda a esta forma é um UUID v4, e um regex rápido pode validar milhões deles.

Como usar#

  1. Defina o campo numérico Quantidade no topo para quantos UUIDs quer — de 1 a 10 000. O campo é limitado a essa gama.
  2. Marque Maiúsculas se precisa de saída toda em maiúsculas (alguns sistemas legados e convenções de GUID da Microsoft preferem C9BF1D4D-…). Deixe desmarcado para o padrão minúsculo que a maioria das stacks modernas usa.
  3. Clique em Gerar. Os valores aparecem na área de saída monoespaçada, um por linha.
  4. Clique em Copiar para copiar todo o lote para a área de transferência, pronto a colar num INSERT SQL, num CSV, num arquivo de testes ou num script de seed.
  5. Clique em Gerar novamente sempre que precisar de um lote fresco — cada clique retira novos bits aleatórios e produz valores que nunca existiram antes.

Principais recursos#

  • Aleatoriedade criptográfica real. Usa crypto.randomUUID() do navegador em contextos seguros, com fallback a crypto.getRandomValues que aplica amostragem por rejeição nos bits de versão e variante — não Math.random(), que não é adequado para identificadores.
  • Geração em lote. Até 10 000 UUIDs num clique, um por linha, para que se possa semear uma base de dados ou arquivo de fixtures sem fazer script disso.
  • Minúsculas ou maiúsculas. Um interruptor cobre ambas as convenções.
  • Compatível com RFC 4122 v4. O nibble de versão é sempre 4 e o nibble de variante é sempre 8/9/a/b, pelo que todos os valores validam contra o regex v4 padrão.
  • 100% do lado do cliente. Sem backend, sem telemetria. Os UUIDs que gera aqui não são registrados em lado nenhum — são seus no momento em que aparecem.

Exemplo detalhado#

Clique em Gerar com Quantidade deixada no padrão de 5 e Maiúsculas desmarcado, e obtém cinco linhas como estas (os seus valores reais vão diferir — são aleatórios):

7f3a9c2e-1b4d-4e8f-a6c3-9d2b8e1f0a47
2c8d4f1a-9e3b-47a2-8c6d-1f5e9a0b3c28
a1b2c3d4-e5f6-4789-abcd-ef0123456789
9e8d7c6b-5a4f-3210-ba98-76543210fedc
4f3e2d1c-0b9a-8765-4321-fedcba987654

Olhe de perto para o terceiro grupo de qualquer linha: começa sempre com 4. Olhe para o quarto grupo: começa sempre com 8, 9, a ou b. Esses dois carateres não são aleatórios — são os marcadores de versão e variante, e são a razão pela qual um validador duma linha consegue confirmar que uma string é um genuíno UUID v4.

Se marcar Maiúsculas e gerar de novo, a mesma forma sai em maiúsculas, por exemplo 7F3A9C2E-1B4D-4E8F-A6C3-9D2B8E1F0A47 — bits idênticos, apenas renderizados para sistemas que esperam GUIDs maiúsculos.

Perguntas frequentes#

Quão único é realmente um UUID v4? Vou alguma vez ter um duplicado?#

Os números tornam-se absurdos rapidamente. Um único UUID v4 tem 122 bits de aleatoriedade real (128 menos os 4 bits de versão e os 2 bits de variante). Para ter sequer 50% de hipótese de uma colisão precisaria de gerar cerca de 2,71 × 10^36 UUIDs — isso é mil milhões de mil milhões de mil milhões por segundo durante mais tempo do que a idade do universo. Para qualquer base de dados ou sistema realista, pode tratar as colisões como impossíveis, e não precisa de verificar se existem.

É seguro usar estes UUIDs como chaves primárias de base de dados?#

Sim — a versão 4 é a escolha mais comum para isso exatamente porque não precisa de coordenação. A única ressalva é a fragmentação do índice: chaves puramente aleatórias espalham-se por uma B-tree, pelo que numa tabela PostgreSQL ou MySQL de escrita muito intensa pode preferir uma variante UUIDv7 (ordenada no tempo). Para IDs de recursos ao nível da aplicação, correlation IDs e a maioria das tabelas, v4 simples está bem.

Porque é que não uso simplesmente Math.random() para construir um UUID?#

Porque Math.random() não é criptograficamente sólido — o seu output pode ser previsível o suficiente para que um atacante que observe alguns IDs consiga adivinhar outros. Esta ferramenta usa deliberadamente crypto.randomUUID() (e um fallback crypto.getRandomValues com tratamento adequado de versão/variante), que retira do CSPRNG do sistema operativo. Para tudo o que identifique um usuário, sessão ou recurso, essa distinção interessa.

Posso gerar versão 1, versão 5 ou UUIDs nomeados aqui?#

Não — esta página é propositadamente só v4, porque v4 cobre a esmagadora maioria dos casos de uso reais e não precisa de entradas para além de uma fonte aleatória. Se precisa de um UUID v5 baseado em nome (determinístico a partir de um nome e um namespace), isso é uma computação diferente e pertence ao código da sua aplicação ou a uma ferramenta dedicada.