FreeToGenerate.com

Cole um UUID e veja o que ele realmente carrega. Nada é enviado.

Com hífens, em hexadecimal puro, entre chaves ou com o prefixo urn:uuid: — os quatro são lidos.

Experimente um

Forma canônica

017f22e2-79b0-7cc3-98c4-dc0c0c07398f

Versão

7nova no RFC 9562

Tempo Unix em milissegundos e depois aleatório. Ordena por instante de criação, e por isso virou a recomendação usual para chaves de banco de dados.

Variante

A variante que o RFC 9562 especifica. Qualquer coisa que uma biblioteca normal produza.

Instante codificado

22 de fevereiro de 2022 às 19:22:22 UTC

Contado em milissegundos desde 1º de janeiro de 1970.

Contador bruto: 1.645.557.742.000

Este UUID conta quando foi criado

A hora acima não é um metadado guardado ao lado: são os primeiros 48 bits do próprio identificador. Quem tiver este UUID sabe o milissegundo em que ele foi criado, e não há configuração que desligue isso.

Também disponível em: English · Español · Français · العربية

Decodificador de UUID

Leia a versão e a variante de um UUID e, nas versões baseadas em tempo, o instante exato em que foi criado.

O que tem dentro de um UUID

Um UUID são 128 bits, normalmente escritos como 32 dígitos hexadecimais em cinco grupos separados por hífens. A maioria desses bits muda conforme a versão, mas seis nunca mudam: quatro soletram a versão e dois marcam a variante. É por isso que todo UUID versão 4 começa o terceiro grupo com um 4 literal, e por isso o quarto grupo quase sempre começa com 8, 9, a ou b.

São esses seis bits que esta página lê. A versão diz como o UUID foi feito — a partir de aleatoriedade, de um nome com hash ou de um relógio — e portanto o que mais dá para saber dele. A variante diz qual layout ele segue, e isso importa porque duas das quatro variantes são anteriores ao padrão que todo mundo usa.

A especificação atual é o RFC 9562, publicado em maio de 2024, e ele substituiu o RFC 4122 por completo. Acrescentou as versões 6, 7 e 8 e o UUID máximo, então um decodificador escrito antes disso nem reconhece um UUID versão 7 — e a versão 7 é justamente a que vem sendo cada vez mais usada para chaves novas de banco de dados.

Como usar

  1. Cole o UUID. Com hífens, em hexadecimal puro, entre chaves ou com o prefixo urn:uuid: — as quatro formas são aceitas, e maiúsculas ou minúsculas tanto faz.
  2. Leia a versão e a variante. Cada uma vem explicada, não só nomeada, incluindo o que implica sobre a origem dos bits. As versões novas do RFC 9562 vêm marcadas.
  3. Veja se há uma hora dentro. As versões 1, 6 e 7 codificam um instante, e a ferramenta o decodifica com exatidão. As outras não carregam nenhum, e a ferramenta diz isso em vez de mostrar um número.

O relógio que começa em 1582

UUIDs versão 1 carregam um carimbo de tempo de 60 bits, e a especificação o define como uma contagem de intervalos de 100 nanossegundos desde 00:00:00,00 de 15 de outubro de 1582 — o dia em que o calendário gregoriano entrou em vigor. Um UUID gerado hoje de manhã está contando desde o século XVI, em décimos de milionésimo de segundo.

Não é uma esquisitice que alguém notou depois: o próprio RFC critica isso. Ao explicar por que a versão 7 existe, ele chama essa época de incomum e difícil de representar com precisão num formato numérico padrão, e a queixa é justa: 60 bits de pulsos de cem nanossegundos não cabem no número de ponto flutuante que quase toda linguagem entrega por padrão. Esta página carrega a contagem como inteiro exato e converte uma única vez, no fim.

A versão 6 é o mesmo relógio com os campos reordenados para a parte mais significativa vir primeiro, o que faz os UUIDs se ordenarem cronologicamente como simples strings. A versão 7 abandona a época gregoriana de vez e guarda milissegundos Unix comuns nos primeiros 48 bits. Os três UUIDs de exemplo da própria especificação codificam o mesmo instante, e decodificá-los aqui dá a mesma resposta três vezes.

A versão 7 conta a todo mundo quando foi criada

A versão 7 é hoje a recomendação usual para chaves primárias de banco de dados, e o motivo é real: como o carimbo vem na frente, os identificadores se ordenam por instante de criação, então são inseridos no fim de um índice em vez de se espalharem por ele. Isso resolve um problema de desempenho verdadeiro que as chaves aleatórias da versão 4 causam.

O que se fala bem menos é a outra consequência. A hora de criação não fica guardada ao lado do identificador: ela é os primeiros 48 bits do identificador, e não há configuração que desligue. Quem vir um UUID versão 7 sabe o milissegundo em que ele foi gerado. Se esses identificadores aparecem em URLs, em respostas de API, em chamados de suporte ou em qualquer coisa que um cliente veja, você publicou seus carimbos de criação — e, com dois deles, o intervalo entre dois eventos.

Muitas vezes isso é inofensivo e às vezes não é: chaves de aparência sequencial deixam alguém de fora estimar quantos registros você cria por hora, e uma hora de criação vazada pode bastar para correlacionar um registro anônimo com um evento conhecido. É motivo para pensar por onde o identificador circula, não para evitar a versão 7 — mas deveria ser uma decisão, não uma surpresa.

A versão 4, em contraste, não tem nada dentro. 122 dos seus 128 bits são aleatórios e os outros seis são os marcadores fixos de versão e variante, então um UUID versão 4 revela apenas que é um UUID versão 4. Se um decodificador mostrar uma data para um deles, ele a inventou.

O que isto não conta

Não conta se o UUID é real. Quaisquer 32 dígitos hexadecimais com os seis bits certos nos lugares certos decodificam perfeitamente, tendo algo os gerado ou não. A conferência é estrutural, não existencial.

Na versão 1 ele decodifica a hora mas nada diz do campo de nó, que no projeto original era o endereço da placa de rede da máquina. É justamente por isso que a versão 1 caiu em desuso para qualquer coisa pública, e devolver esse dado não é um serviço que valha a pena oferecer.

As versões 3 e 5 são hashes de um nome dentro de um namespace, e hashes não andam para trás: o UUID deriva da entrada, mas a entrada não se recupera do UUID. E a versão 8 é deliberadamente não especificada — o padrão define só os bits de versão e variante e cala sobre o resto, então não há nada a decodificar além do que esta página já mostra.

Por que é grátis?

São deslocamentos de bits sobre 128 bits, rodando no seu navegador. Não há consulta, servidor nem conta.

Nada do que você cola é enviado, guardado ou registrado — e aqui isso importa, porque um UUID do seu próprio sistema é o identificador de um dos seus registros. Ele nunca sai da aba.