UUIDs explicados: v4, v7 e como escolher a versão certa

Atualizado:

Um UUID é um identificador de 128 bits que qualquer computador pode criar por conta própria, sem um contador central, e ainda assim ter a certeza prática de que ninguém mais criou um igual. É por isso que eles acabam virando chaves de banco de dados, nomes de arquivo, IDs de requisição e números de pedido. A maioria dos UUIDs que você vê é da versão 4, que é pura aleatoriedade; a versão 7, padronizada em 2024, acrescenta o momento da criação e está se tornando rapidamente a melhor escolha para bancos de dados. Este guia mostra como ler um UUID, como as versões diferem, qual é a chance real de uma colisão e qual versão escolher.

Como é um UUID

Um UUID tem 128 bits, escritos como 32 dígitos hexadecimais em cinco grupos separados por hífens — 8, 4, 4, 4 e 12 dígitos, 36 caracteres no total:

O padrão atual é a RFC 9562, publicada em maio de 2024, que substituiu a RFC 4122, de 2005. As letras podem ser escritas em maiúsculas, em minúsculas ou misturando as duas; as três formas representam o mesmo valor.

Bancos de dados com um tipo UUID nativo, como o PostgreSQL, guardam o valor em 16 bytes, e não como 36 caracteres de texto.

Lendo a versão

Dois dígitos identificam que tipo de UUID você tem. O primeiro dígito do terceiro grupo é a versão. O primeiro dígito do quarto grupo é a variante: em todo UUID gerado conforme o padrão, ele é 8, 9, a ou b.

UUIDVersãoO que é
3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b904Aleatório
01a0d86f-ca00-7b3e-9f21-6c4d8a0e5b177Ordenado pelo tempo, criado em 25 de setembro de 2026, às 12:00:00 UTC
00000000-0000-0000-0000-000000000000—O Nil UUID: só zeros, usado para indicar “nenhum valor”
ffffffff-ffff-ffff-ffff-ffffffffffff—O Max UUID: todos os bits em 1, usado como limite superior

As versões

VersãoComo é geradoUso hoje
1Timestamp e o endereço de rede (MAC) do computadorLegado; revela qual máquina o gerou
3Hash MD5 de um namespace e de um nomeSó para reproduzir IDs existentes; prefira a versão 5
4122 bits aleatóriosA opção padrão em quase todo lugar
5Hash SHA-1 de um namespace e de um nomeO mesmo nome sempre gera o mesmo UUID
6Versão 1 reorganizada para ficar ordenada pelo tempoSó onde a versão 1 já está em uso
7Timestamp Unix em milissegundos mais bits aleatóriosBancos de dados novos e tudo o que se beneficia da ordem cronológica
8Layout definido pela aplicaçãoFormatos experimentais ou específicos de um fornecedor

A versão 2 existe para um antigo sistema de segurança e fica fora do escopo do padrão. A RFC 9562 diz que as implementações deveriam usar a versão 7 em vez das versões 1 e 6 sempre que possível.

Versão 4: aleatória

Um UUID versão 4 fixa 6 dos seus 128 bits para marcar a versão e a variante e preenche os outros 122 com dados aleatórios. O padrão pede um gerador de números aleatórios criptograficamente seguro, que é o que os navegadores oferecem por meio de crypto.randomUUID() — a função que o gerador do nTools usa.

Com 122 bits aleatórios, colisão não é uma preocupação prática. Só depois de cerca de 2,7 × 10¹⁸ UUIDs passa a haver 50% de chance de dois quaisquer coincidirem — a um bilhão por segundo, isso leva cerca de 86 anos. Depois de um trilhão de UUIDs, a chance de dois quaisquer serem iguais é de cerca de 1 em 10 trilhões. O risco real é um gerador de números aleatórios com defeito, não a matemática.

Gerador de UUID

Versão 7: ordenada pelo tempo

Um UUID versão 7 coloca o tempo Unix em milissegundos nos seus primeiros 48 bits, depois a versão e a variante e, em seguida, 74 bits de aleatoriedade ou de um contador. Como o tempo vem primeiro, os UUIDs criados depois ficam ordenados após os anteriores, tanto como texto quanto como bytes.

No exemplo acima, os 12 primeiros dígitos hexadecimais, 01a0d86fca00, correspondem a 1.790.337.600.000 milissegundos depois de 1º de janeiro de 1970: 25 de setembro de 2026, às 12:00:00 UTC. O timestamp de 48 bits dura até o ano 10889. Dentro de um mesmo milissegundo, os geradores usam bits aleatórios ou acrescentam um contador para que os UUIDs de um mesmo processo continuem saindo em ordem.

O suporte está chegando às ferramentas que as pessoas usam: o PostgreSQL 18, lançado em setembro de 2025, ganhou uma função nativa uuidv7(), ao lado de uuidv4().

Qual usar como chave de banco de dados

A maioria dos bancos de dados guarda as chaves primárias em um índice B-tree, que continua eficiente quando as chaves novas chegam em ordem.

Para uma tabela nova que precisa de UUIDs, a versão 7 costuma ser a melhor escolha. A versão 4 continua sendo a certa quando o momento da criação não pode ficar visível a partir do ID.

O que um UUID não é

Perguntas frequentes

Dois UUIDs aleatórios podem ser iguais?

Na teoria, sim; na prática, não. Seriam necessários cerca de 2,7 × 10¹⁸ UUIDs versão 4 para haver 50% de chance de uma única coincidência, desde que eles venham de um gerador de números aleatórios adequado.

GUID é a mesma coisa que UUID?

Sim. GUID é o nome que a Microsoft dá ao mesmo identificador de 128 bits. As ferramentas do Windows costumam exibi-lo em maiúsculas ou entre chaves, como {3F2A9C1E-5B7D-4E8A-9C21-7D4E5F6A8B90}, mas o valor é o mesmo.

UUIDs diferenciam maiúsculas de minúsculas?

Não. 3F2A9C1E-… e 3f2a9c1e-… são o mesmo UUID. Compare-os sem diferenciar maiúsculas de minúsculas ou guarde-os em uma coluna nativa do tipo UUID, o que elimina a questão.

Qual versão o gerador do nTools cria?

A versão 4, usando o crypto.randomUUID() do navegador. Ele cria até 100 de uma vez, inteiramente no seu dispositivo.

Guias relacionados