O que é o UUID v4 e como funciona esta página
Um UUID v4 (Universally Unique Identifier, versão 4) é um identificador de 128 bits cujos 122 bits são gerados aleatoriamente — os restantes 6 bits fixam a versão e a variante. O resultado é uma string de 36 caracteres no formato 8-4-4-4-12, com 32 dígitos hexadecimais e 4 hífenes. Esta página gera um ou mais UUID v4 instantaneamente, utilizando a aleatoriedade criptográfica do navegador (crypto.getRandomValues()).
O utilizador controla três parâmetros: o número de identificadores (entre 1 e 100), a opção de mostrar em maiúsculas (predefinição: minúsculas) e a inclusão de hífenes (predefinição: sim). Qualquer alteração nestas opções desencadeia uma nova geração de todo o conjunto. O estado inicial mostra «Ready.», passando a «Generated.» após a geração e a «Copied all!» quando todos os IDs são copiados.
A página também suporta outros formatos — UUID v7, ULID e NanoID — mas a presente secção concentra-se no UUID v4. Ao mudar de formato, as opções de maiúsculas e hífenes podem alterar-se.
Porquê usar UUID v4 em vez de outros identificadores
A principal vantagem do UUID v4 é a imprevisibilidade. Como os 122 bits são puramente aleatórios (sem carimbo temporal), cada valor é praticamente impossível de adivinhar. A probabilidade de colisão é negligenciável: com 122 bits de espaço aleatório, a probabilidade de gerar dois UUID iguais é de aproximadamente 2^-122, ou 1 em 5,3×10^36. Para se ter uma ideia, seria necessário gerar cerca de 2,71×10^18 UUID v4 para ter 50% de hipóteses de uma única colisão (paradoxo do aniversário). Isto torna-o ideal para tokens de sessão, chaves de segurança ou identificadores anónimos onde a previsibilidade é inaceitável.
No entanto, esta mesma vantagem é uma desvantagem para bases de dados relacionais. Ao contrário do UUID v7 (que incorpora um timestamp de 48 bits) ou do ULID (que também ordena por tempo), o UUID v4 não tem qualquer ordenação cronológica. Isto significa que, quando usado como chave primária num índice B-tree, cada novo valor insere-se numa posição arbitrária, causando page splits frequentes e fragmentação do índice. O resultado é degradação do desempenho em tabelas grandes.
A escolha entre UUID v4, v7 ou ULID depende, por isso, do caso de uso: se a imprevisibilidade é prioritária (tokens, sessões), v4 é a escolha; se a ordenação temporal e a eficiência em BD importam mais, v7 ou ULID são preferíveis.
Impacto do UUID v4 em bases de dados e desempenho
Quando um UUID v4 é utilizado como chave primária agregada (clustered index) numa base de dados SQL, a aleatoriedade total dos valores causa um padrão de inserção disperso. Cada nova linha obriga o motor de base de dados a reorganizar páginas do índice, dividindo páginas cheias para acomodar o novo valor. Este processo (page split) aumenta a fragmentação, consome mais ciclos de CPU e pode duplicar o espaço em disco.
O problema agrava-se à medida que a tabela cresce. Com índices B-tree, inserções sequenciais (como as de um INT AUTO_INCREMENT ou de um UUID v7) mantêm as páginas maioritariamente cheias e ordenadas. Com UUID v4, as páginas tendem a ficar com apenas 50–70% de ocupação devido à dispersão, duplicando o número de páginas necessárias para o mesmo número de linhas. Para tabelas com milhões de registos, a diferença de desempenho é significativa.
Soluções comuns incluem usar UUID v4 apenas como chave natural (ou chave substituta não agregada) e manter um BIGINT sequencial como chave primária agregada; ou optar por UUID ordenável (v7) que preserva a imprevisibilidade parcial mas melhora a localidade. O facto de esta página também oferecer UUID v7 e ULID permite ao utilizador comparar formatos antes de tomar uma decisão.
Opções de formatação: maiúsculas e hífenes
A representação canónica de um UUID é com hífenes e dígitos hexadecimais em minúsculas: 550e8400-e29b-41d4-a716-446655440000. A página permite duas variações:
- Maiúsculas:
550E8400-E29B-41D4-A716-446655440000. Útil quando se pretende legibilidade humana em contexto onde o texto está em maiúsculas (por exemplo, em etiquetas visíveis ou impressões). Não altera a informação subjacente. - Sem hífenes:
550e8400e29b41d4a716446655440000. Muitas vezes preferido em URLs, nomes de ficheiros ou sistemas que exigem strings contínuas. A ausência de hífenes reduz o comprimento para 32 caracteres, mantendo os mesmos 128 bits.
Qualquer alteração — seja no contagem, nas maiúsculas ou nos hífenes — regera todo o conjunto de UUID. Isto garante coerência: todos os IDs partilham as mesmas opções de formatação. O botão «Copiar tudo» copia cada UUID numa linha separada; clicar num UUID individual copia apenas esse.
Processamento local e privacidade
Toda a geração de UUID v4 acontece exclusivamente no navegador do utilizador, utilizando a API crypto.getRandomValues(). Nenhum dado é enviado para o servidor — nem os identificadores gerados, nem os parâmetros escolhidos, nem qualquer metadado. Isto tem implicações importantes:
- Privacidade: Não há registo de quantos UUID foram gerados, nem para que fim.
- Segurança: Como os valores nunca saem do dispositivo, não podem ser intercetados em trânsito.
- Disponibilidade offline: Uma vez carregada a página (ou se estiver a ser servida localmente), funciona sem ligação à Internet.
- Determinismo limitado: A aleatoriedade criptográfica do browser (CSPRNG) é de alta qualidade, mas varia entre implementações. O resultado é sempre imprevisível dentro dos limites do algoritmo do navegador.
Para o utilizador, isto significa que pode gerar centenas de UUID v4 de confiança sem preocupações de auditoria ou vigilância. O estado «Ready.» indica que o gerador está pronto; «Generated.» confirma a conclusão; «Copied all!» apenas informa o utilizador, não guarda registo.
Perguntas frequentes
É possível ocorrer uma colisão entre dois UUID v4 gerados nesta página?
Sim, tecnicamente, mas a probabilidade é tão baixa que, na prática, nunca se verifica. Com 122 bits aleatórios, a chance de colisão ao gerar 100 UUID é de aproximadamente 100² / (2×2¹²²) ≈ 9,5×10⁻³⁴. Para ter uma hipótese de 1 em 1 milhão de colisão, seria necessário gerar cerca de 2,7×10¹⁵ UUID.
Porque só posso gerar até 100 UUID de cada vez?
O limite de 100 é uma escolha de usabilidade. Gerar mais do que isso poderia sobrecarregar a interface e a memória do browser, especialmente em dispositivos móveis. Para conjuntos maiores, basta clicar novamente no botão de geração — cada clique produz um novo lote independente.
Qual a diferença entre UUID v4, v7, ULID e NanoID?
UUID v4 usa 122 bits aleatórios; v7 usa 48 bits de timestamp + 74 bits aleatórios, sendo ordenável por tempo; ULID usa 48 bits de timestamp + 80 bits aleatórios, também ordenável; NanoID é mais curto (21 caracteres base64url) e mais flexível. A página permite alternar entre eles conforme a necessidade.
Os UUID gerados são compatíveis com o padrão RFC 4122?
Sim. UUID v4 segue exatamente a RFC 4122, com o bits de versão (0100) no 13.º quarteto e os bits de variante (10xx) no 17.º octeto. A representação com ou sem hífenes e em maiúsculas ou minúsculas não altera a semântica do identificador.
Posso copiar apenas um UUID em vez de todos?
Sim. Clicar em qualquer UUID individual copia-o para a área de transferência. O botão «Copiar tudo» copia todos os UUID mostrados, um por linha.
A geração usa a rede ou o servidor? É seguro para tokens de sessão?
É totalmente local. Nada é enviado ao servidor. A aleatoriedade provém do crypto.getRandomValues() do navegador, fornecida pelo sistema operativo — é a mesma fonte usada para TLS, por isso é adequada para tokens de sessão e chaves criptográficas.