UUIDs explicados: v4, v7 e como escolher a versão certa
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:
3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b90Um UUID versão 4.01a0d86f-ca00-7b3e-9f21-6c4d8a0e5b17Um UUID versão 7.
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.
| UUID | Versão | O que é |
|---|---|---|
3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b90 | 4 | Aleatório |
01a0d86f-ca00-7b3e-9f21-6c4d8a0e5b17 | 7 | Ordenado 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ão | Como é gerado | Uso hoje |
|---|---|---|
| 1 | Timestamp e o endereço de rede (MAC) do computador | Legado; revela qual máquina o gerou |
| 3 | Hash MD5 de um namespace e de um nome | Só para reproduzir IDs existentes; prefira a versão 5 |
| 4 | 122 bits aleatórios | A opção padrão em quase todo lugar |
| 5 | Hash SHA-1 de um namespace e de um nome | O mesmo nome sempre gera o mesmo UUID |
| 6 | Versão 1 reorganizada para ficar ordenada pelo tempo | Só onde a versão 1 já está em uso |
| 7 | Timestamp Unix em milissegundos mais bits aleatórios | Bancos de dados novos e tudo o que se beneficia da ordem cronológica |
| 8 | Layout definido pela aplicação | Formatos 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.
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.
- Chaves versão 4 caem em pontos aleatórios do índice. Em tabelas pequenas, isso não importa; nas grandes, cada inserção mexe em uma parte diferente do índice, o que significa mais divisões de página, mais falhas de cache e índices maiores.
- Chaves versão 7 chegam em ordem cronológica, então as linhas novas são acrescentadas perto do fim do índice, de modo parecido com um número autoincrementado — e continuam podendo ser criadas em qualquer lugar, sem pedir o próximo valor ao banco de dados.
- Inteiros autoincrementados são menores e os mais rápidos, mas precisam de um único contador central e revelam quantos registros existem e em que ordem eles foram criados.
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 é
- Não é um segredo. Um UUID versão 7 mostra quando foi criado, com precisão de milissegundo, para qualquer pessoa que o leia. Um UUID versão 4 é difícil de adivinhar, mas IDs acabam registrados em logs, compartilhados em URLs e exibidos em interfaces. Links de redefinição de senha ou de arquivos privados deveriam usar um token aleatório próprio, e não o ID do registro.
- Não é uma fonte de informação. O padrão recomenda tratar UUIDs como valores opacos: guarde-os e compare-os, mas não crie lógica que dependa da leitura das partes deles.
- Nem sempre é versão 4. Um código que espera aleatoriedade não deveria presumir isso; verifique o dígito da versão quando fizer diferença.
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
- Endereços IP explicados: IPv4, IPv6 e as faixas reservadas
- Registros DNS explicados: A, AAAA, CNAME, MX, TXT e NS
- Sub-redes e CIDR explicados: prefixos, máscaras e hosts utilizáveis
- Timestamps Unix e fusos horários explicados
- Formatos de imagem explicados: JPEG, PNG, WebP, AVIF e HEIC
- Força de senhas explicada: comprimento, entropia e frases-senha
- QR codes explicados: capacidade, correção de erros e tamanho de impressão
- Porcentagens e IVA explicados: somar, tirar e acumular