Desenvolvimento

Gerador de UUID

Gere até mil identificadores de uma só vez, no formato que o seu banco de dados ou arquivo de configuração pedir. Os bits aleatórios vêm do gerador criptográfico do seu navegador, não de Math.random. Cole abaixo um UUID que você já tenha para ver de qual versão ele é e quando foi criado.

v4 é o padrão em quase todo lugar. v7 começa com um timestamp, então uma lista deles fica em ordem de criação.

Entre 1 e 1000.

Formato

Minúsculas com hifens é a forma canônica. As outras existem porque Windows e XML quiseram cada um a sua.

Inspecionar um UUID

    O que os 32 dígitos guardam

    Um UUID são 128 bits, escritos como 32 dígitos hexadecimais no padrão 8-4-4-4-12 que o deixa com 36 caracteres contando os hifens. Duas pequenas regiões desses bits não são carga útil. Quatro bits dizem qual versão o gerou, e mais dois ou três marcam a variante, que diz de quem são as regras de layout que valem. Sobram 122 bits para um UUID da versão 4 ser aleatório.

    O nibble de versão é o décimo terceiro dígito hexadecimal — o que vem logo depois do segundo hífen. Em um UUID v4 ele é sempre 4, e é por isso que tantos UUIDs que você vê têm um 4 nessa posição. A variante aparece no décimo sétimo dígito, que é 8, 9, a ou b. Esses dois fatos são tudo o que o inspetor acima realmente faz.

    v4 ou v7

    A versão 4 é pura aleatoriedade e há vinte anos é o padrão sensato. A versão 7 foi padronizada no RFC 9562 em 2024, junto com v6 e v8, e substituiu o antigo RFC 4122. Ela coloca na frente um timestamp Unix de 48 bits em milissegundos e preenche o resto com bits aleatórios.

    O motivo para se importar com isso são os índices do banco de dados. Uma chave primária v4 cai em um ponto aleatório do índice a cada inserção, então o banco vive dividindo páginas que não tocou recentemente e lendo-as de volta do disco. Uma chave v7 é anexada ao final, porque cada valor novo é maior que o anterior, então as inserções se concentram nas páginas que já estão na memória. Em uma tabela com milhões de linhas essa é a diferença entre um índice que cabe no cache e um que não cabe.

    O custo do v7 é que ele conta para todo mundo quando a linha foi criada, com precisão de milissegundos. Se o identificador é público e a hora de criação não é algo que você queira publicado — um ID de pedido que revela o seu ritmo de vendas, por exemplo — isso é um vazamento real, e v4 é a escolha certa.

    Colisões, e por que ninguém se preocupa com elas

    Com 122 bits aleatórios, você precisaria gerar cerca de 2,7 quintilhões de UUIDs v4 antes de chegar a 50% de chance de uma única colisão em todo o conjunto. Esse é o limite do paradoxo do aniversário, não uma garantia, e ele só vale se os bits forem genuinamente aleatórios. Esta ferramenta os tira de crypto.getRandomValues, o gerador criptográfico do navegador.

    O modo de falha que realmente acontece é uma fonte aleatória ruim. Várias bibliotecas antigas de JavaScript montavam UUIDs com Math.random, que é rápido, previsível e nunca foi feito para isso. Esses UUIDs parecem idênticos aos bons — o nibble de versão continua sendo um 4 — e nenhum inspetor consegue diferenciá-los. Se você herdou um código que gera UUIDs na mão, vale a pena conferir.

    Não use um UUID como segredo

    Um UUID v4 tem entropia suficiente para não ser adivinhado, então a tentação de usá-lo como token de redefinição de senha ou como link privado de compartilhamento é compreensível. Dois problemas. Tudo abaixo de v4 não é aleatório de jeito nenhum — um UUID v1 expõe um timestamp e muitas vezes um endereço MAC, e v3 e v5 são hashes de um nome que você talvez consiga adivinhar. E na maioria dos sistemas os UUIDs são tratados como identificadores, o que significa que eles acabam nos logs, na analítica, nos cabeçalhos Referer e nos tickets de suporte. Gere tokens com uma ferramenta feita para segredos.

    Como armazená-los

    Um UUID são 16 bytes. Armazenado como CHAR(36) ele ocupa 36, e todo índice sobre ele cresce junto. O PostgreSQL tem um tipo uuid nativo que guarda os 16 bytes de verdade; o MySQL não, então BINARY(16) com conversão nas bordas da aplicação é a resposta de sempre. Mantenha a forma de texto em minúsculas e com hifens, porque essa é a representação canônica e misturar maiúsculas e minúsculas transforma comparações de igualdade em caça a bugs.

    O que esta ferramenta não gera

    O inspetor também tem um limite que vale nomear: ele lê bits e nada mais. Qualquer sequência de 32 dígitos hexadecimais com uma versão e uma variante plausíveis vai ser reportada como um UUID válido, porque é só isso que um UUID é. Ele não consegue dizer se ela foi gerada direito, nem se significa alguma coisa dentro do seu sistema.

    Perguntas frequentes

    Qual é a diferença entre um UUID e um GUID?

    Nenhuma que importe. GUID é o nome que a Microsoft usa para o mesmo identificador de 128 bits, às vezes escrito entre chaves e em maiúsculas. O inspetor acima lê os dois, e o campo de variante é o único lugar onde o layout legado da Microsoft aparece.

    Devo usar UUID v4 ou v7 para uma chave primária de banco de dados?

    v7, em quase todos os casos. O prefixo de timestamp faz com que as inserções sejam anexadas ao final do índice em vez de se espalharem por ele, o que mantém as páginas quentes na memória. Escolha v4 quando a hora de criação precisar continuar privada.

    Dois UUIDs podem ser iguais alguma vez?

    Em princípio sim, na prática não. Chegar a 50% de chance de uma colisão leva cerca de 2,7 quintilhões de UUIDs v4, supondo uma fonte aleatória adequada. O risco realista é um gerador fraco, como um construído sobre Math.random.

    É seguro usar um UUID como token de segurança?

    Não. Use no lugar um gerador feito para segredos. Até um UUID v4 é tratado como identificador por tudo que vem depois, então ele vaza para os logs, para a analítica e para os cabeçalhos Referer, e as versões mais antigas contêm um timestamp ou um endereço MAC em vez de aleatoriedade.

    Por que todo UUID que eu vejo tem um 4 no mesmo lugar?

    Esse dígito é o campo de versão, e a versão 4 é o tipo mais comum. O dígito depois do terceiro hífen é a variante, e é por isso que tantos UUIDs também têm um 8, 9, a ou b ali.

    Última atualização 19 de setembro de 2026