Detector de Versão UUID | Decodifique v1 a v8, Nil e Max
Cole um UUID e identifique cada versão, da v1 à v8, além de Nil, Max e entradas inválidas. O 13º dígito (nibble de versão) e o 17º dígito (bits de variante) são destacados por cor na visão de bytes, e os carimbos de tempo de v1, v6 e v7 são decodificados, junto com a sequência de relógio e o nó MAC nas v1 e v6.
💡 Sobre esta ferramenta
Diante de uma coluna de UUID num log, saber se cada um é temporal ou puramente aleatório não é trivial. Dá para perceber que o 13º caractere carrega a versão, mas deduzir a variante a partir do 17º dígito, ou reconstruir manualmente um carimbo de tempo de 60 bits da v1 a partir da época gregoriana de 1582, foge ao cálculo mental.
Esta ferramenta normaliza o que você cola para uma cadeia de 32 dígitos hexadecimais e a classifica segundo a RFC 4122 (v1 a v5) e a RFC 9562 (v6, v7, v8, Nil, Max). Ela aceita formas com hífens, com chaves e com o prefixo urn:uuid:, então você pode colar uma cadeia copiada direto do código ou de uma linha de banco de dados. O nibble de versão e os bits de variante ficam destacados, o que também ajuda a visualizar como os bits se distribuem dentro do UUID em vez de confiar apenas numa biblioteca.
🧐 Perguntas frequentes
Qual dígito determina a versão? Depois de remover os hífens, restam 32 dígitos hexadecimais; o 13º (primeiro caractere do terceiro grupo) é o nibble de versão. O valor 4 indica aleatório, 1 indica temporal e 7 indica um UUID ordenável pelo tempo Unix.
Qual a diferença entre versão e variante? A versão indica o método de geração (tempo, acaso, hash de nome). A variante indica a família de disposição dos bits. A ferramenta lê os bits altos do 17º dígito e informa RFC 4122, NCS, Microsoft ou Reservado. Quase todos os UUID encontrados são da variante RFC 4122.
Por que o carimbo de tempo da minha v1 mostra um ano inesperado? Porque as v1 e v6 contam intervalos de 100 nanossegundos a partir de 15 de outubro de 1582, data de adoção do calendário gregoriano, e não a partir da época Unix. A ferramenta aplica esse deslocamento e exibe o resultado no formato ISO 8601. Já a v7 usa milissegundos Unix diretos.
Como a ferramenta distingue uma v3 de uma v5? Ambas são baseadas em nome: derivam de um namespace somado a um hash. A diferença está no algoritmo: a v3 usa MD5 e a v5 usa SHA-1. A ferramenta indica isso nos metadados extraídos.
O que acontece com um UUID só de zeros? Ele é reportado como UUID Nil. Se todos os bits forem 1, é reportado como Max. Ambos são valores especiais definidos na RFC 9562, usados como marcadores de posição ou valores não atribuídos.
📚 Curiosidades: o nibble que decide tudo
A RFC 9562, publicada em 2024, substituiu a RFC 4122 e oficializou as v6, v7 e v8 que muitas bibliotecas já ofereciam de forma experimental. O objetivo central era resolver um defeito conhecido da v4: por ser puramente aleatória, ela espalha as inserções num índice B-tree e o fragmenta. A v7, ao colocar 48 bits de carimbo de tempo em milissegundos no início, mantém as chaves novas quase ordenadas e compactas. A v6, por sua vez, reordena os campos temporais da v1 para tornar os bytes ordenáveis lexicograficamente, oferecendo um destino de migração a sistemas já cheios de v1. Tudo isso se decide em um único nibble: justamente o que esta ferramenta destaca.