O que é UUID? v4 vs v7 e quando usar cada um

UUID é um ID único que você cria em qualquer lugar, sem consultar um servidor. Veja como funcionam as versões 4 e 7 e qual combina com o seu projeto.

Desenvolvimento 6 min de leitura

Mais cedo ou mais tarde, todo sistema precisa de identificadores únicos para usuários, pedidos, arquivos ou eventos. Um contador funciona até você ter mais de um banco de dados, um cliente offline ou uma API pública que não deve revelar quantos registros existem. É aí que entram os UUIDs.

Neste guia você vai aprender o que é um UUID, como a versão 4 (aleatória) difere da versão 7 (ordenada por tempo), por que a v7 costuma ser a melhor escolha para chaves primárias e como evitar os erros mais comuns.

Gere UUIDs agora Crie um ou vários UUIDs no seu navegador. Nada é enviado a um servidor. Abrir o gerador de UUID

O que é um UUID (ou GUID)?

UUID (Universally Unique Identifier, ou identificador único universal), também chamado de GUID no mundo Microsoft, é um valor de 128 bits usado para identificar algo. Normalmente é escrito como 32 dígitos hexadecimais separados por hifens em cinco grupos, no padrão 8-4-4-4-12, o que dá 36 caracteres no total.

Exemplo: 018f4e2a-7c3b-7d4e-9a1b-2c3d4e5f6a7b. Um dígito indica a versão (o primeiro do terceiro grupo) e alguns bits marcam a variante; o restante carrega os dados em si.

Por que usar UUIDs?

  • Sem contador central: qualquer servidor, dispositivo ou navegador cria um ID sozinho, sem pedir o próximo número ao banco.
  • Seguro em sistemas distribuídos: vários serviços, regiões ou clientes offline criam registros e os unem depois sem conflitos.
  • Gere antes de salvar: o cliente conhece o ID do novo registro antes de o servidor confirmar, o que simplifica apps offline e novas tentativas.
  • Não revela a quantidade de registros: um ID como 1042 mostra a estranhos quantos registros existem e facilita adivinhar vizinhos. Um UUID não.

UUID v4: totalmente aleatório

A versão 4 é a mais comum. Além dos poucos bits que marcam versão e variante, todos os outros 122 bits são aleatórios. Não há ordem, nem data, nem informação sobre a máquina que o gerou.

Isso torna a v4 simples, amplamente suportada e um bom padrão para uso geral, principalmente quando você não quer que o ID revele quando algo foi criado.

UUID v7: ordenado por tempo e aleatório

A versão 7 foi padronizada na RFC 9562 (2024), que atualizou a especificação antiga de UUID. Os primeiros 48 bits guardam um timestamp Unix em milissegundos e a maior parte dos bits restantes é aleatória.

Como o timestamp vem primeiro, os valores v7 se ordenam pela data de criação: um UUID criado depois é maior que um criado antes (na precisão de milissegundos). E você continua gerando sem nenhuma coordenação central.

Resumindo: v4 é tudo aleatório; v7 é "timestamp primeiro, aleatório depois".

Por que a v7 é melhor para chaves primárias

A maioria dos bancos guarda a chave primária em um índice ordenado por valor. Com chaves v4 aleatórias, cada nova linha cai num ponto qualquer do índice, causando divisões de página, mais fragmentação, pior uso de cache e inserções mais lentas em tabelas grandes.

Com a v7, as novas chaves ficam sempre perto do fim do índice, como um número auto incremento. Você mantém as vantagens do UUID e ganha muito mais localidade no índice. Listagens dos mais recentes e consultas por intervalo de tempo também ficam mais fáceis.

O custo: uma v7 revela aproximadamente quando o registro foi criado. Se isso for sensível, use v4 ou não exponha o UUID em URLs públicas.

Outras versões, rapidamente

  • v1: formada por timestamp mais um identificador de nó, historicamente o endereço MAC. Pode vazar informações da máquina e hoje raramente é recomendada.
  • v5: baseada em nome. Aplica SHA-1 a um namespace e um nome, então a mesma entrada sempre gera o mesmo UUID. Útil para IDs determinísticos.
  • A v3 é a mesma ideia da v5, mas com MD5, e a v6 é uma v1 reordenada. Em projetos novos você normalmente escolherá v4 ou v7.

Dois UUIDs podem colidir?

Em teoria sim; na prática, a chance é desprezível. Com 122 bits aleatórios em uma v4, seria preciso gerar uma quantidade enorme de IDs para um duplicado ficar minimamente provável, muito mais do que quase qualquer sistema vai criar.

Isso pressupõe uma boa fonte de aleatoriedade. Use o gerador aleatório seguro da sua plataforma, não um caseiro. Se a unicidade for crítica, mantenha de qualquer forma uma restrição única na coluna.

UUID vs auto incremento

  • O auto incremento é pequeno (4 ou 8 bytes), rápido, legível e perfeito para um único banco. Mas precisa de uma autoridade que distribua os números e expõe volume e ordem.
  • UUIDs ocupam 16 bytes, são mais difíceis de ler e digitar e deixam os índices maiores. Em troca, funcionam entre sistemas e não são adivinháveis.
  • Um meio-termo comum é uma chave auto incremento interna mais um UUID como identificador público. Outro é simplesmente usar v7 como chave primária.

Como gerar UUIDs com a ferramenta gratuita

  1. Abra o gerador de UUID. Ele roda inteiramente no seu navegador, então nada é enviado a um servidor.
  2. Escolha a versão que precisa (v4 ou v7) e quantos UUIDs criar.
  3. Gere e copie um ou a lista inteira para o seu código, seed de banco ou dados de teste.

Erros comuns a evitar

  • Usar UUID como segredo ou token de acesso. UUID é um identificador, não uma credencial. A v7 é parcialmente previsível por causa do timestamp e nem a v4 foi pensada para autenticação. Para isso, use um token aleatório adequado.
  • Confiar no UUID na URL como único controle de acesso. Sempre verifique permissões.
  • Guardar UUIDs como texto de 36 caracteres quando o banco tem tipo nativo (como UUID no PostgreSQL) ou coluna binária de 16 bytes. Isso desperdiça espaço e deixa os índices lentos.
  • Misturar v4 e v7 na mesma coluna esperando ordem por tempo.
  • Criar seu próprio gerador com Math.random() ou outra aleatoriedade fraca.

Conclusão

Um UUID dá IDs únicos sem contador central. Use v7 quando o ID for chave primária de banco e a ordem por tempo ajudar, use v4 quando quiser aleatoriedade pura e sem data de criação, e nunca trate nenhum dos dois como segredo. Guarde em coluna nativa ou binária e gere com a nossa ferramenta gratuita sempre que precisar.

Perguntas frequentes

Qual a diferença entre UUID e GUID?

São a mesma coisa. GUID é o nome usado principalmente em ambientes Microsoft; UUID é o nome padrão. Ambos são identificadores de 128 bits.

Devo usar UUID v4 ou v7?

Use v7 para chaves primárias de banco e sempre que ordenar por criação ajudar. Use v4 para uso geral ou quando não quiser que o ID revele quando foi criado.

UUID é seguro como senha ou token?

Não. UUID serve para identificar, não para proteger. Para tokens de sessão, chaves de API ou redefinição de senha, use um token longo de um gerador aleatório criptograficamente seguro.

UUIDs podem colidir?

Na prática a chance é desprezível quando gerados com boa aleatoriedade. Mantenha uma restrição de unicidade no banco como garantia extra.

O gerador de UUID envia meus IDs para um servidor?

Não. Os UUIDs são criados localmente no seu navegador e não são enviados nem armazenados em lugar nenhum.

Ferramentas grátis citadas neste artigo

Continue lendo

Todos os artigos