Como funciona o gerador de UUID
Um UUID (Universally Unique Identifier, ou Identificador Único Universal) é um número de 128 bits normalmente exibido como 32 dígitos hexadecimais divididos em 5 grupos, separados por hífen — por exemplo 550e8400-e29b-41d4-a716-446655440000. Ele foi criado para identificar informações de forma única sem exigir um servidor central controlando uma sequência, o que o torna ideal para sistemas distribuídos, bancos de dados, APIs e arquivos.
Este gerador cria UUIDs em duas versões, definidas pela RFC 9562 (que atualizou a RFC 4122 original). A versão 4 (v4) é a mais comum: praticamente todos os seus 122 bits variáveis são sorteados aleatoriamente, o que garante uma probabilidade de colisão desprezível, mas não guarda nenhuma relação de ordem entre UUIDs gerados em momentos diferentes.
Já a versão 7 (v7) é mais recente e foi desenhada especificamente para uso em bancos de dados. Seus primeiros 48 bits armazenam o timestamp Unix em milissegundos do momento da geração, e o restante é preenchido com bits aleatórios. Isso significa que UUIDs v7 gerados em sequência ficam naturalmente ordenados como strings — igual a um ID autoincrementável — mas continuam sendo gerados de forma independente, sem precisar consultar o banco antes de inserir o registro. Na prática, isso evita a fragmentação de índices que UUIDs v4 causam quando usados como chave primária, melhorando a performance de escrita em tabelas grandes.
Em ambos os casos, 4 bits fixos identificam a versão do UUID (o dígito logo após o segundo hífen) e 2 bits fixos identificam a variante (o primeiro dígito após o terceiro hífen), exatamente como define a especificação — por isso um UUID v4 sempre tem um "4" nessa posição, e um UUID v7 sempre tem um "7".
Geração 100% no navegador
Todo o processo acontece localmente, no seu navegador: os UUIDs v4 usam a função nativacrypto.randomUUID(), e os UUIDs v7 são montados combinando o relógio do seu dispositivo com o gerador de números aleatórios criptográfico do navegador (crypto.getRandomValues). Nenhum dado é enviado a um servidor, e você pode gerar quantos identificadores precisar, de um em um ou em lotes, para popular bancos de teste, preencher mocks de API ou nomear arquivos sem risco de colisão.