BrowserTools
Publicidade
Início / Geradores / Gerador de UUID (v1, v4, v7)

Gerador de UUID (v1, v4, v7)

Gera UUID conforme a RFC 4122 na versão 1, 4 ou 7, um a um ou em lote, copia ou transfere.

A carregar Gerador de UUID (v1, v4, v7)… Se nada acontecer, ativa o JavaScript.

Um UUID (Universally Unique Identifier, ou identificador universalmente único), conhecido também por GUID nos ecossistemas da Microsoft, é um valor padronizado de 128 bits usado para rotular entidades, linhas de bases de dados, ficheiros, nós de rede ou transações, sem que nenhuma autoridade central tenha de emitir os identificadores. A norma está definida no RFC 4122 e organiza-se em versões, cada uma com uma estratégia de geração diferente. A versão 1 codifica uma marca temporal e o endereço MAC da máquina anfitriã; a versão 4 usa 122 bits de aleatoriedade criptográfica; e a mais recente versão 7 combina uma marca temporal Unix com precisão de milissegundos com bits aleatórios, o que a torna ao mesmo tempo única e ordenável lexicograficamente.

Exemplos

Entrada Version 4 (random)
Saída f47ac10b-58cc-4372-a567-0e02b2c3d479

122 bits aleatórios. O décimo terceiro dígito hexadecimal é sempre 4 (a versão).

Entrada Format
Saída xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx

y é um de 8, 9, a ou b; os dois bits mais significativos codificam a variante.

Perguntas frequentes

Os UUID gerados são enviados para um servidor?
Não. Toda a geração acontece dentro do separador do teu navegador usando a Web Crypto API. Os UUID existem apenas em memória e nunca são transmitidos pela rede. Podes verificá-lo no separador Rede das ferramentas de programador do teu navegador.
Qual é a diferença técnica entre UUID v1, v4 e v7?
A versão 1 codifica uma marca temporal de 60 bits (intervalos de 100 nanossegundos desde outubro de 1582) mais o endereço MAC da máquina anfitriã. A versão 4 são 122 bits de aleatoriedade criptográfica, com os 6 bits restantes fixados para indicar a versão e a variante. A versão 7 usa uma marca temporal Unix de 48 bits em milissegundos seguida de 74 bits aleatórios, o que a torna ao mesmo tempo única e ordenável por hora de criação.
Qual é a probabilidade de uma colisão de UUID v4?
Extremamente baixa. Com 122 bits aleatórios, a probabilidade de gerar sequer um duplicado atinge os 50 % apenas depois de criados aproximadamente 2,71 × 10^18 UUID. Gerar mil milhões de UUID por segundo de forma contínua durante 100 anos deixaria ainda assim a probabilidade de colisão perto de zero, à volta de 0,000000006 %.
Porque devo usar v7 em vez de v4 para chaves primárias de bases de dados?
Os valores de UUID v4 são totalmente aleatórios, o que provoca pontos de inserção aleatórios nos índices B-tree. À escala, isto leva a divisões de página frequentes e falhas de cache, abrandando significativamente o débito de escrita. O prefixo de marca temporal do UUID v7 faz com que os novos registos sejam inseridos perto do fim do índice, tal como os inteiros com incremento automático, continuando a ser únicos a nível global sem necessidade de coordenação.
Posso usar este UUID como segredo criptográfico ou token?
Um UUID v4 proveniente de `crypto.getRandomValues` tem 122 bits de entropia, o que é tecnicamente suficiente para muitos usos de tokens. Contudo, os UUID têm uma formatação convencional e são publicamente reconhecidos como identificadores, não como segredos. Para tokens de portador, chaves de sessão ou chaves de API, considera gerar uma cadeia de bytes aleatórios em bruto e codificá-la em base64.
O que significa GUID e é o mesmo que UUID?
GUID significa Globally Unique Identifier (identificador único global) e é o nome que a Microsoft dá ao mesmo conceito, usado originalmente no registo de componentes COM/DCOM nos anos 90. Tecnicamente um GUID segue a mesma estrutura do RFC 4122, por isso um UUID e um GUID são intercambiáveis. A única diferença prática são as convenções de formatação: os GUID por vezes são apresentados entre chavetas, como `{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}`.
Posso gerar UUID sem ligação à internet?
Sim. Esta ferramenta é uma página web estática sem dependências de servidor para a lógica de geração. Depois de a página carregar, podes desligar-te da internet e continuar a gerar UUID indefinidamente, porque tudo corre no motor de JavaScript do navegador.
Qual é um erro frequente ao usar UUID v1?
Incorporar endereços MAC nos UUID v1 significa que cada identificador que o teu sistema cria contém uma impressão digital da máquina que o gerou. Isto tem implicações de privacidade: foi um dos fatores que ligou o autor do vírus Melissa ao seu computador em 1999. Para qualquer identificador visível para o utilizador ou registado publicamente, evita v1.
Que formato segue um UUID?
Um UUID são sempre 32 dígitos hexadecimais divididos em cinco grupos por hífenes: 8-4-4-4-12 caracteres, por exemplo `550e8400-e29b-41d4-a716-446655440000`. O total é de 36 caracteres incluindo os hífenes, ou 32 sem eles. O décimo terceiro dígito hexadecimal indica a versão (1, 4 ou 7) e o décimo sétimo indica a variante (sempre 8, 9, a ou b nos UUID padrão).
Posso gerar UUID em lote e transferi-los como ficheiro?
Sim. Define a quantidade para o número pretendido, até vários milhares, e usa o botão de transferência para guardar um ficheiro de texto simples com um UUID por linha. Isto é útil para pré-gerar identificadores para scripts de inicialização de bases de dados, fixtures de testes ou ficheiros de migração.

Sobre Gerador de UUID (v1, v4, v7)

Os sistemas distribuídos são o principal caso de uso dos UUID. Quando tens vários servidores, microsserviços ou clientes móveis capazes de funcionar sem ligação a criar registos em simultâneo, coordenar um único contador inteiro com incremento automático torna-se um estrangulamento ou uma fonte de conflitos. Os UUID contornam isto por completo: qualquer nó pode gerar de forma independente um identificador único a nível global, e os registos podem ser fundidos mais tarde sem colisões. Aparecem por todo o lado, desde chaves primárias de bases de dados e tokens de idempotência em API de pagamento, até identificadores de sessão, nomes de ficheiro endereçáveis por conteúdo e identificadores de rasto em pipelines de observabilidade.

Esta ferramenta gera UUID inteiramente no teu navegador usando a Web Crypto API. Para v4, chama `crypto.randomUUID()` quando disponível (Chrome 92+, Firefox 95+), recorrendo a `crypto.getRandomValues` com formatação manual nos restantes casos. Para v7, lê `Date.now()` para o prefixo de marca temporal de 48 bits e preenche os bits restantes com aleatoriedade criptográfica. Nenhum identificador é transmitido a qualquer servidor, e nada é registado. Podes gerar um único UUID ou um lote em massa para importar para um fixture de testes ou um script de migração.

Um equívoco frequente é pensar que os UUID são hashes opacos. Não são: os UUID v1 incorporam o teu endereço MAC e uma marca temporal, o que pode revelar a identidade do dispositivo. Em contextos sensíveis à privacidade, prefere sempre v4 ou v7. Outra armadilha é usar UUID como chaves de base de dados sequenciais com índices B-tree: os UUID v4 são aleatórios, o que provoca fragmentação do índice. Foi por isto que a v7 foi introduzida: o seu prefixo de marca temporal mantém as inserções mais ou menos por ordem, melhorando drasticamente o desempenho de escrita do índice em tabelas grandes.

O problema da identidade distribuída: como os UUID nasceram do caos das redes

O antecessor conceptual do UUID é o identificador único global concebido para o Network Computing System da Apollo Computer no final dos anos 80, que precisava de uma forma de identificar interfaces RPC sem um registo central. A Open Software Foundation adaptou-o para a especificação de UUID do DCE (Distributed Computing Environment) no início dos anos 90, incorporando endereços MAC e marcas temporais para que qualquer máquina em qualquer rede pudesse cunhar um identificador com garantia de ser único no espaço e no tempo.

A Microsoft adotou o esquema para COM e DCOM em meados dos anos 90 com o nome de GUID, e tornou-se omnipresente nas plataformas Windows. A norma moderna RFC 4122, publicada em 2005, formalizou o formato e definiu as versões 1 a 5. A versão 4, a variante puramente aleatória que domina hoje, surgiu em parte por preocupações de privacidade, depois de os investigadores demonstrarem que os UUID v1 podiam ser usados para identificar e seguir a máquina que os gerava.

A versão 7 foi proposta num rascunho do IETF em 2021 e finalizada no RFC 9562 em 2024, respondendo diretamente aos problemas de desempenho de bases de dados causados pelos UUID aleatórios como chaves primárias. A especificação foi impulsionada por engenheiros de grandes fornecedores de nuvem que tinham medido os custos reais da fragmentação de índices dos UUID v4 com milhares de milhões de linhas. O RFC 9562 também tornou obsoletas as versões v1 e v2 para novas aplicações, consolidando a v4 para os contextos sensíveis à privacidade e a v7 para o armazenamento ordenado por tempo.

Publicidade
Publicidade
Publicidade