Developer Tools

UUIDs Explicados: Quando Usá-los e Como Funcionam

Aprenda o que são UUIDs, a diferença entre versões, risco de colisão e como gerá-los com segurança para bancos de dados e APIs.

7 min de leitura

Server room abstract

Um UUID (Universally Unique Identifier) é um rótulo de 128 bits, geralmente escrito como xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Desenvolvedores usam UUIDs como chaves primárias, IDs de correlação e tokens opacos porque podem ser criados sem um coordenador central e ainda assim terem uma probabilidade extremamente baixa de colisão.

Por que não usar apenas inteiros?

Inteiros auto-incrementais são simples e compactos, mas vazam informações: concorrentes podem adivinhar quantos pedidos você tem, ou raspar recursos iterando pelos IDs. UUIDs são imprevisíveis na prática e seguros para expor em URLs e código do lado do cliente.

UUIDs não são um recurso de segurança por si só. Se você precisa de autorização, ainda assim a aplique no servidor.

Versões comuns de UUID

Versão Como é gerado Uso típico
v1 Endereço MAC + timestamp Legado; evite se privacidade importar
v4 Bits aleatórios Escolha padrão para novos sistemas
v5 Hash SHA-1 de um namespace + nome IDs determinísticos a partir de entradas estáveis

A maioria das aplicações hoje usa UUID v4 para chaves primárias. Algumas equipes preferem ULIDs ou Snowflake IDs para strings ordenáveis por tempo; UUIDs continuam sendo os mais amplamente suportados.

Probabilidade de colisão

Com o v4, a chance de colisão é astronomicamente baixa até você gerar bilhões de IDs por segundo. Para aplicações web normais, tratar colisões como impossíveis é razoável — desde que sua fonte de aleatoriedade seja criptograficamente forte (use o CSPRNG do sistema operacional ou da linguagem, e não Math.random() para IDs sensíveis à segurança).

// Browser: prefer crypto.randomUUID() when available
const id = crypto.randomUUID();
console.log(id); // e.g. 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

Dicas práticas

  • Índices de banco de dados: UUIDs aleatórios fragmentam índices B-tree mais do que IDs sequenciais. O gen_random_uuid() do PostgreSQL, UUID v7 (ordenado por tempo) ou técnicas no estilo COMB podem ajudar se a performance de inserção importar em grande escala.
  • Logs e rastreamento: Use um UUID por requisição como ID de correlação para que você possa buscar logs em diferentes serviços.
  • Testes: Gere UUIDs novos nos fixtures para que os testes não dependam de valores fixos, a menos que você precise de reprodutibilidade (nesse caso, v5 ou um gerador com seed pode ser mais adequado).

Experimente no navegador

Use nosso Gerador de UUID gratuito para criar identificadores no estilo v4 instantaneamente — sem cadastro, e tudo roda localmente na sua aba.

Para fluxos de trabalho relacionados, você também pode gostar do Gerador de Hash para checksums e do JWT Decoder para depurar tokens que frequentemente aparecem ao lado de UUIDs em APIs.