Gerador de UUID v7 (ordem temporal)

Crie identificadores UUIDv7 ordenáveis por tempo (RFC 9562) ou v4 aleatórios clássicos direto com Web Crypto. Tudo roda no seu navegador.

Os identificadores são gerados localmente com a Web Crypto. Nada sai do seu dispositivo.

Saída

A marca de tempo sob cada v7 é decodificada dos seis primeiros bytes; Copiar leva só o UUID.

Como funciona

O UUIDv7 é definido pela RFC 9562 e esta página o monta à mão com crypto.getRandomValues — sem bibliotecas. O que o separa do v4 é para onde vão os bytes: a marca de tempo do relógio é colocada no início do identificador, então a ordem alfabética da string vira ordem de criação. O seletor de versão também gera v4 aleatórios clássicos para comparação, e a marca de tempo exibida ao lado de cada v7 é decodificada dos seus seis primeiros bytes.

O layout de bytes do v7
Os bytes 0–5 guardam o horário Unix em milissegundos como um inteiro big-endian de 48 bits — ordena certo até o ano 10889. O byte 6 começa com o campo de versão de 4 bits (0x7) seguido de 12 bits aleatórios (rand_a). Os bytes 7–15 trazem o resto: o byte 8 abre com os dois bits de variante (10) e os 62 bits finais (rand_b) são aleatórios. Aleatoriedade total dentro de um milissegundo: 74 bits. Escrito nos habituais grupos hexadecimais 8-4-4-4-12, um v7 se parece com qualquer outro UUID.
Ordem lexicográfica é ordem temporal
A comparação de strings lê da esquerda para a direita e os 48 bits mais à esquerda são o relógio, então ordenar v7 alfabeticamente é ordená-los cronologicamente. Numa chave primária B-tree as inserções caem sempre na folha mais à direita: as páginas se preenchem em sequência em vez de cada escrita tocar numa página aleatória, mantendo índices compactos e caches quentes. Uma chave v4 embaralha esse padrão de acesso; uma v7 passa por ele em fluxo.
Onde o v4 ainda vence
O v4 carrega 122 bits aleatórios e não revela quando nem onde o ID foi criado. Para identificadores públicos, URLs imprevisíveis e tokens de segurança, o prefixo de tempo do v7 (uma divulgação de informação, e uma cauda aleatória menor) recomenda o formato clássico. Use cada um para o que foi projetado: v7 para chaves ordenadas, v4 para referências opacas.

Perguntas frequentes

Quando usar v7 em vez de v4?

Use v7 quando os IDs morarem em um índice ordenado — chave primária do Postgres, tabela B-tree ou LSM-tree como o InnoDB do MySQL, RocksDB ou sort keys do DynamoDB. Como os v7 são ordenados lexicograficamente na mesma ordem em que foram criados, as linhas novas entram no fim do índice em vez de espalhar as escritas. Use v4 quando o valor precisar ser imprevisível e o tempo não poder vazar: identificadores públicos em URLs e tokens de segurança ainda preferem os bits aleatórios extras do v4.

Por que UUIDs v7 se ordenam por tempo?

Os primeiros 48 bits de cada v7 são o horário de criação — milissegundos desde a época Unix — escritos com o byte mais significativo primeiro. A comparação de strings lê da esquerda para a direita, então o timestamp domina: linhas '0198…' sempre vêm antes de '0199…', e a ordem lexicográfica coincide com a cronológica. Os bits aleatórios só decidem a ordem entre UUIDs criados no mesmo milissegundo.

Um UUID v7 continua seguro contra colisões?

Sim, dentro do mesmo milissegundo: depois dos 48 bits de tempo e dos 6 de versão e variante sobram 74 bits aleatórios — cerca de 1,9 × 10^22 possibilidades por milissegundo de criação —, muito além do que uma máquina emite nesse intervalo. Se você precisar de garantia estrita de monotonicidade no mesmo milissegundo, use uma biblioteca de servidor com o esquema opcional de contador monotônico da RFC 9562; esta ferramenta de navegador conta com os bits aleatórios.

Os IDs gerados têm marcas de tempo diferentes?

Cada UUID é carimbado com o relógio do momento da criação, então lotes gerados em um clique costumam compartilhar o mesmo milissegundo — o loop do navegador é mais rápido que o relógio. Isso é normal e inofensivo: as marcas exibidas ao lado dos IDs são reais e a cauda aleatória mantém cada identificador distinto.

Algo é enviado para um servidor?

Não. Os identificadores são montados no seu navegador com a API Web Crypto e o relógio do sistema. Nada é transmitido, armazenado ou registrado, e o lote desaparece quando você fecha a aba.