Gerador de UUID

Gere UUID v4 e v7 ordenados por tempo em lote.

Sobre esta ferramenta

Gere identificadores UUID v4 aleatórios ou UUID v7 ordenados por tempo, de um a cem por vez, usando o gerador aleatório criptograficamente seguro do navegador.

Como usar

  1. Escolha v4 para IDs totalmente aleatórios ou v7 para IDs que se ordenam pela data de criação.
  2. Defina quantos você precisa, até 100.
  3. Escolha maiúsculas ou sem hifens se o seu sistema exigir.
  4. Copie um ou todos.

Perguntas

Devo usar UUID v4 ou v7?
O v7 começa com um timestamp, então IDs novos ficam ordenados depois dos mais antigos. Isso mantém os índices do banco de dados compactos e rápidos, o que faz do v7 um bom padrão para chaves primárias. Use v4 quando a data de criação não deve ficar visível.
Dois UUIDs podem colidir?
Na prática, não. Um UUID v4 tem 122 bits aleatórios; você precisaria gerar bilhões por segundo durante muitos anos antes que uma colisão se tornasse provável.
Esses UUIDs são seguros para usar como tokens?
Eles são gerados com o gerador aleatório criptograficamente seguro do navegador, mas um UUID é um identificador, não um segredo. Para tokens de sessão ou chaves de API, use um valor aleatório mais longo.
Como gerar um UUID em JavaScript, Python ou no shell?
Nos navegadores e no Node.js, crypto.randomUUID() retorna um v4. No Python, use uuid.uuid4(), ou uuid.uuid7() a partir do Python 3.14. No macOS e no Linux, uuidgen imprime um UUID aleatório; o macOS o imprime em maiúsculas. Para gerar rápido um lote de IDs v7, ou até 100 de uma vez, use esta página.
As chaves UUID v7 são ordenadas corretamente no SQL Server?
Não por padrão. O tipo uniqueidentifier do SQL Server compara primeiro os últimos seis bytes, então UUIDs ordenados por tempo não vão para o fim de um índice clusterizado. NEWSEQUENTIALID() é a opção sequencial do próprio SQL Server. O PostgreSQL e o MySQL com BINARY(16) comparam os bytes desde o início, então o v7 é ordenado corretamente neles.
O que é o nil UUID?
É o valor todo zerado 00000000-0000-0000-0000-000000000000, usado como placeholder para “sem ID”. A RFC 9562 também define um Max UUID com todos os dígitos iguais a f. Nenhum dos dois é aleatório, então nunca os use como identificadores reais, e rejeite-os onde se espera um ID real.

O que é um UUID e como ele é estruturado?

Um UUID é um identificador de 128 bits escrito como 32 dígitos hexadecimais em cinco grupos: 8-4-4-4-12. O primeiro dígito do terceiro grupo é a versão, então um UUID v4 sempre tem um 4 ali e um v7 tem um 7. O primeiro dígito do quarto grupo é 8, 9, a ou b, o que marca a variante padrão. GUID é o nome que a Microsoft dá ao mesmo formato.

Em um UUID v7, os primeiros 48 bits são o Unix time em milissegundos, então os primeiros 12 dígitos hex dizem quando ele foi criado; converta-os para decimal com o Conversor de bases numéricas e cole o resultado no Conversor de timestamp Unix. Os 74 bits restantes são aleatórios. IDs gerados no mesmo milissegundo não ficam ordenados entre si aqui, mas IDs de milissegundos diferentes sempre se ordenam pelo tempo.

Como armazenar UUIDs em um banco de dados

Use um tipo nativo quando houver. O PostgreSQL tem uuid, que ocupa 16 bytes e aceita maiúsculas e minúsculas, com ou sem hifens. gen_random_uuid() cria um v4 dentro do banco, e o PostgreSQL 18 adiciona uuidv7(). No MySQL, armazene em BINARY(16) com UUID_TO_BIN() e BIN_TO_UUID() em vez de CHAR(36), que ocupa mais que o dobro do espaço e deixa todos os índices maiores.

A forma textual padrão é em minúsculas com hifens, e a RFC 9562 diz que os leitores também devem aceitar maiúsculas. Alguns sistemas esperam maiúsculas, ou 32 dígitos sem hifens, então as duas opções estão disponíveis aqui; o valor continua o mesmo de qualquer forma. Ao comparar UUIDs como strings no código ou em logs, normalize antes as maiúsculas e minúsculas, senão um GUID de uma ferramenta Windows não vai bater com o mesmo ID em minúsculas.

UUID ou ID auto-increment

Inteiros auto-increment são pequenos, rápidos e fáceis de ler, mas é o banco de dados que os atribui, então você só conhece o ID depois do insert. Eles também revelam quantas linhas você tem e deixam qualquer pessoa adivinhar registros vizinhos em uma URL. UUIDs podem ser gerados em qualquer lugar, no navegador, em vários servidores ou offline, e mesclados depois sem conflitos.

A contrapartida é o tamanho: 16 bytes em vez de 4 ou 8, em cada índice e chave estrangeira. O UUID v7 elimina o principal problema de desempenho das chaves aleatórias, porque os novos valores vão para o fim do índice. O ULID é uma ideia parecida, um timestamp seguido de bits aleatórios em uma forma textual de 26 caracteres, mas o UUID v7 tem um formato padronizado e tipos de coluna nativos em muitos bancos de dados.

Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta