Gerador de UUID

Gere UUIDs no seu navegador: v4 totalmente aleatório, v7 ordenado por tempo ou v5 determinístico. Até 1000 de cada vez, os dados não saem do seu dispositivo.

Pressione 'Gerar' para sortear
Versão
Opções avançadas

Precisa de um identificador que não vai colidir com um que outra pessoa fez, em uma máquina que você nunca ouviu falar, sem pedir permissão a ninguém? Esse é o trabalho que um UUID faz. É um número de 128 bits, escrito como 36 caracteres no padrão familiar de 8-4-4-4-12, e todo o seu design é para que dois deles não sejam iguais, mesmo que nada coordene quem recebe o quê. Este gerador gratuito os cria no seu navegador: escolha uma versão em 'Versão', diga quantos você precisa em 'Quantidade' e pressione 'Gerar'. A página abre com um único v4, a versão que a maioria dos projetos quer, então um primeiro identificador está a um clique de distância.

Cada identificador é construído pelo seu navegador através da Web Crypto API. A versão 4 usa crypto.randomUUID() onde o navegador a fornece e crypto.getRandomValues() nos demais casos — uma fonte criptograficamente forte de aleatoriedade, em vez de uma função pseudoaleatória do JavaScript como o Math.random(). A versão 7 coloca um carimbo de data/hora (timestamp) de 48 bits em milissegundos na frente, depois um contador de 12 bits que aumenta dentro do mesmo milissegundo, depois 62 bits aleatórios, que é o método de ordenação descrito na RFC 9562; esse contador é a razão pela qual um lote de mil sai em ordem em vez de embaralhado. A versão 1 combina um carimbo de data/hora com um identificador de nó aleatório que tem o bit multicast ativado, então ela nunca carrega o endereço da sua placa de rede da maneira que as implementações originais da década de 1990 faziam. As versões 3 e 5 não são nada aleatórias: elas fazem o hash de um namespace junto com um nome, usando MD5 e SHA-1, respectivamente, e esse hash também acontece no seu dispositivo. Nada é enviado para um servidor, nada é registrado em logs e, depois que a página for carregada, ela continuará funcionando com a conexão desligada.

'Versão' é o campo que decide todo o resto. A versão 4 possui 122 bits aleatórios e nenhuma estrutura — o padrão, e a resposta certa quando um identificador só precisa ser único. A versão 7 mantém 62 bits aleatórios, mas começa com o momento em que foi criada, de modo que um conjunto deles é classificado na ordem em que foram criados; é isso que a torna a versão a ser escolhida quando o identificador se tornar uma chave de banco de dados. A versão 1 é o esquema original baseado em tempo, mantido aqui para os sistemas que ainda o pedem. As versões 3 e 5 são o par diferente: elas são determinísticas, ou seja, as mesmas entradas sempre produzem o mesmo identificador, e levam dois campos extras — 'Namespace', que é um dos espaços padrão DNS, URL, OID e X.500 ou um namespace 'Personalizado' próprio seu, e 'Nome', a string sendo identificada. Alimente a v5 com o namespace URL e https://example.com/a e você obterá o mesmo UUID hoje, amanhã e na máquina de outra pessoa. Por causa disso, 'Quantidade' desaparece quando a v3 ou a v5 é selecionada: mil cópias de um valor determinístico seriam apenas mil cópias de um valor determinístico. Para todas as outras versões, 'Quantidade' vai de 1 a 1000.

Quatro interruptores alteram o formato da saída sem alterar os 128 bits subjacentes. 'Maiúsculas' imprime os dígitos hexadecimais em caixa alta, 'Sem hifens' fornece a forma compacta de 32 caracteres que algumas colunas e nomes de arquivos preferem, e 'Chaves' envolve o valor em { } — a forma que o Windows e o mundo .NET chamam de GUID. Em 'Opções avançadas', urn:uuid: adiciona o prefixo que o torna um URN formal; isso desliga 'Chaves' e 'Sem hifens' enquanto está ativado, porque o padrão permite exatamente uma forma URN e é a forma canônica com hifens. 'Formato de cópia' decide como um lote é juntado quando você o pega: um por linha, separados por vírgulas, ou cada valor entre aspas com uma vírgula no final, que é colado direto num array em código. Sob o resultado fica uma linha que relata a aleatoriedade em bits — 122 para a v4, 62 para a v7 — e, no caso da v7, o carimbo de data/hora codificado no primeiro identificador do lote, para que o tempo dentro do valor fique visível em vez de implícito. 'Copiar tudo' e 'Salvar em arquivo' respeitam o 'Formato de cópia'. 'Histórico' guarda seus últimos 10 lotes no seu próprio navegador: clique em um para trazê-lo de volta, copie ou exclua uma única entrada, ou limpe tudo. 'Limpar' esvazia o resultado e deixa suas configurações como estão, e, após 50 identificadores, a lista se torna um único bloco rolável em vez de cinquenta linhas.

A coisa mais consequente nesta página é a diferença entre a v4 e a v7 como uma chave primária (primary key), e isso não é uma questão de gosto. Os índices de banco de dados são árvores (B-trees) mantidas em ordem de classificação, e o local onde uma nova chave cai nessa ordem decide quanto trabalho o insert custa. Uma chave v4 é aleatória, então os inserts consecutivos caem em cantos não relacionados do índice: páginas que estavam cheias são divididas (page split), as partes da árvore que o banco de dados está mantendo na memória raramente são as partes de que o próximo insert precisa, e o índice acaba maior e mais fragmentado do que as linhas para as quais ele aponta justificam. Uma chave v7 começa com o milissegundo atual, então inserts consecutivos caem próximos uns dos outros na borda direita da árvore, que é o padrão que um número inteiro de incremento automático produz e o padrão em torno do qual as estruturas de índice foram criadas. Esse é todo o trade-off: a v7 dá a você o comportamento de insert de uma chave sequencial, ao mesmo tempo que mantém a propriedade que o fez escolher UUIDs em primeiro lugar, que é o fato de que qualquer um pode cunhar um sem perguntar a um servidor. O que isso custa é que o tempo de criação agora pode ser lido dentro do identificador, e se isso importa é uma questão sobre os seus dados, não sobre o formato.

Nada nunca verifica um UUID para exclusividade; o seu tamanho é a garantia. Não há registro, nenhuma viagem de ida e volta ao servidor, nenhuma pesquisa — um gerador produz um número e o entrega, e a razão pela qual dois deles não colidem é simplesmente porque há 2^122 valores possíveis de v4, cerca de 5,3 undecilhões. O problema do aniversário (birthday problem) é a maneira honesta de dimensionar isso: você precisaria de cerca de 2,7 quintilhões de identificadores antes que houvesse uma chance de 50% de qualquer um dos dois corresponder, o que é um bilhão de novos UUIDs a cada segundo por 86 anos. Vale a pena ser preciso sobre o que isso promete ou não. É uma garantia estatística, não aritmética, e ela só é válida enquanto a aleatoriedade por baixo for real — um gerador semeado de forma ruim, ou uma máquina virtual clonada junto com seu pool de entropia, a quebra de uma maneira que o formato não consegue detectar. A versão 7 restringe a questão ainda mais: dentro de um único milissegundo, um gerador não consegue se repetir de jeito nenhum, porque o contador incrementa em vez de jogar dados, e em geradores independentes os 62 bits aleatórios fazem o trabalho.

Um UUID é um identificador, não uma senha. A versão 4 é imprevisível, e isso tenta as pessoas a tratá-la como um segredo — um link de redefinição de senha, um URL impossível de adivinhar, um token de sessão, uma chave de API. A imprevisibilidade é real, mas o sigilo é uma propriedade de como um valor é manuseado, e identificadores são manuseados sem cuidado por design: eles ficam em URLs, que acabam no histórico do navegador, em logs de servidor, em cabeçalhos de referrer e analytics, e são colados em mensagens de chat. As outras versões são candidatos ainda piores. Tanto a versão 1 quanto a versão 7 codificam o momento da criação, então qualquer pessoa que tenha uma delas sabe aproximadamente quando foi feita e pode restringir a vizinhança de tudo o que foi feito junto com ela. As versões 3 e 5 são determinísticas de propósito: um UUID v5 de um endereço de e-mail não é um segredo com hash, é um valor que qualquer um com o mesmo endereço pode computar em um segundo. Use um UUID para nomear uma coisa. Use um gerador de senhas, ou um token de uma biblioteca criada para segredos, quando o valor tiver que permanecer desconhecido.

Por que escolher esta ferramenta de gerar UUIDs?

UUIDs aparecem sempre que algo tem que ser nomeado antes que qualquer coisa possa confirmar que o nome está livre. O código do aplicativo os cunha para linhas (rows) que está prestes a inserir, de forma que o objeto tem uma identidade antes mesmo de chegar ao banco de dados e um cliente pode referenciá-lo enquanto a gravação ainda está em andamento. Os sistemas distribuídos se apoiam neles com mais força: vários serviços gravando em uma tabela, um cliente móvel offline criando registros em um avião, uma fila que tem que reconhecer a mensagem que já processou — nenhum desses casos pode esperar sua vez por um contador compartilhado (shared counter). A versão 5 cobre uma necessidade diferente, que é um identificador estável derivado de algo que você já tem: o mesmo documento, o mesmo URL ou a mesma conta sempre mapeia para o mesmo UUID, então uma importação pode ser executada duas vezes sem duplicar nada. Em outros lugares, eles são simplesmente o formato que um sistema exige — um identificador de correlação encadeado em logs e traces, um nome de arquivo que não vai colidir quando os uploads de mil usuários caírem no mesmo bucket, uma chave de registro do Windows, um fixture de teste que precisa se parecer com dados reais.

Vale a pena conhecer alguns limites honestos. Um lote é uma versão: o valor em 'Versão' se aplica a tudo nele, então uma execução de v4s e uma execução de v7s são dois lotes. Isto é um gerador, não um inspetor — colar um UUID aqui para ler a sua versão ou o seu carimbo de data/hora não é algo que essa página faz. 'Salvar em arquivo' escreve um arquivo de texto simples em vez de CSV ou JSON. A versão 7 revela abertamente quando foi criada, até o milissegundo, o que é um trade-off real em vez de uma falha, e a versão 1 vaza o tempo da mesma maneira; se isso for um problema para os seus dados, a versão 4 é a versão que não conta nada a ninguém. Dois valores especiais do padrão não são versões e por isso não são opções em 'Versão', mas você pode copiá-los daqui: o UUID nil, 00000000-0000-0000-0000-000000000000, e o UUID max, ffffffff-ffff-ffff-ffff-ffffffffffff. Tudo nesta página segue a RFC 9562, a especificação que substituiu a RFC 4122 em 2024, de forma que a saída é aceita por qualquer biblioteca, banco de dados ou API que lida com UUIDs. Dentro desses limites, a garantia é forte: cada identificador é construído de acordo com o padrão, a partir de aleatoriedade criptograficamente segura, na sua própria máquina, e mais ninguém os vê.

FAQ

Como eu gero um UUID?

Escolha uma versão em 'Versão', defina quantos você precisa em 'Quantidade' e pressione 'Gerar'. A página abre com um único identificador da versão 4, que é o que a maioria dos projetos quer, de modo que um UUID comum está a um clique de distância. Cada valor aparece com o seu próprio botão de cópia e 'Copiar tudo' pega o lote inteiro de uma vez.

Qual é a diferença entre um UUID v4 e um v7?

A versão 4 possui 122 bits aleatórios sem qualquer estrutura, então dois deles não têm relação nenhuma um com o outro. A versão 7 gasta os primeiros 48 bits no milissegundo em que foi criada, adiciona um contador e 62 bits aleatórios, e portanto é ordenável: um lote sai na ordem em que foi feito. Use a v4 quando um identificador só precisa ser único, e a v7 quando ele também for ser uma chave de banco de dados.

Qual versão do UUID eu devo usar?

A versão 4, a não ser que você tenha um motivo para escolher outra. Escolha a versão 7 se o identificador se tornar uma chave primária (primary key) e o desempenho do insert for importante, a versão 5 se você precisar que a mesma entrada sempre produza o mesmo identificador, e a versão 1 apenas se um sistema com o qual você precisa se comunicar pedir especificamente por ela. A versão 3 é a versão 5 com MD5 em vez de SHA-1, e existe para fins de compatibilidade.

Os UUIDs gerados são realmente aleatórios e seguros?

A aleatoriedade é criptograficamente segura: ela vem da Web Crypto API do seu navegador, através do crypto.randomUUID() ou crypto.getRandomValues(), não do Math.random(). Seguro no sentido de que é imprevisível é uma questão diferente de seguro no sentido de ser secreto — um UUID é um identificador, e não deve ser usado como senha, token de sessão ou chave de API.

Posso gerar muitos UUIDs de uma só vez?

Sim, até 1000 de uma vez. Defina a 'Quantidade' e pressione 'Gerar'; depois de cinquenta valores, o resultado se torna um único bloco rolável em vez de uma longa lista de linhas. 'Copiar tudo' e 'Salvar em arquivo' levam o lote inteiro, agrupado da maneira que 'Formato de cópia' determina — um por linha, separados por vírgula, ou entre aspas para colar num array.

Por que as v3 e v5 me dão o mesmo UUID todas as vezes?

Porque é para isso que elas servem. As versões 3 e 5 são determinísticas: elas fazem o hash do namespace e do nome que você fornece a elas, então entradas idênticas sempre produzem um identificador idêntico, em qualquer máquina e em qualquer linguagem. Isso as torna úteis para derivar um identificador estável de algo que você já tem, e é também por isso que 'Quantidade' fica oculta quando você as seleciona.

O que são Namespace e Nome, e qual namespace eu devo escolher?

São as duas entradas a partir das quais um UUID versão 3 ou versão 5 é computado. 'Namespace' diz que tipo de coisa é o nome — DNS para nomes de host, URL para endereços, OID e X.500 para esses esquemas de diretório, ou 'Personalizado' se você quiser fornecer um UUID de namespace próprio, que é a escolha usual dentro de um aplicativo. 'Nome' é a string em si. Namespaces diferentes dão resultados completamente diferentes para o mesmo nome, que é o propósito de tê-los.

Por que o UUID v7 é melhor do que o v4 para uma chave primária de banco de dados?

Por causa de onde os valores caem no índice. Um índice é mantido em ordem classificada, e uma chave v4 aleatória cai em qualquer lugar dele, então os inserts dividem as páginas (page split) por toda a árvore e as partes mantidas na memória raramente são as necessárias a seguir. Uma chave v7 começa com o milissegundo atual, então inserts consecutivos caem juntos no final do índice, que é como uma chave inteira sequencial se comporta — enquanto ainda permite que qualquer serviço cunhe um identificador sem pedir a um contador central.

Dois UUIDs poderiam ser iguais?

Em princípio sim, na prática não, e vale a pena saber qual. Nada verifica a exclusividade: existem simplesmente 2^122 valores de versão 4 possíveis, cerca de 5,3 undecilhões, e você precisaria de cerca de 2,7 quintilhões deles — um bilhão por segundo durante 86 anos — antes de uma chance de 50% de uma única colisão. A garantia é estatística, não absoluta, e depende da aleatoriedade ser genuína, que é o motivo pelo qual este gerador usa a Web Crypto API em vez de uma função pseudoaleatória comum.

Posso usar um UUID como senha, chave de API ou token de sessão?

Não, e esse é o erro que mais custa. Um UUID versão 4 é imprevisível, mas identificadores são manuseados como se fossem públicos: eles acabam em URLs, no histórico do navegador, nos logs do servidor, nos cabeçalhos referrer e no analytics. As versões 1 e 7 revelam, adicionalmente, quando foram criadas, e as versões 3 e 5 podem ser recomputadas por qualquer pessoa que conheça as entradas. Para qualquer coisa que deve permanecer em segredo, use um gerador de senhas ou um token de uma biblioteca feita para segredos.

O UUID v7 revela quando foi criado?

Sim, até os milissegundos, e isso é por design em vez de um descuido — o carimbo de data/hora é o que torna a v7 ordenável. A linha abaixo do resultado mostra o tempo codificado no primeiro valor do lote, para que você possa ver exatamente o que está sendo exposto. A versão 1 também traz um carimbo de data/hora. Se o tempo de criação for algo que você prefere não publicar, a versão 4 é a versão que não contém tempo nenhum.

O UUID v1 expõe o meu endereço MAC?

Não aqui. O esquema original usava o endereço da placa de rede da máquina como o campo do nó (node), de onde vem a reputação da v1, mas o padrão também permite um identificador de nó aleatório marcado com o bit multicast, e é isso que esse gerador produz. O endereço do seu hardware nunca é lido e nunca aparece na saída.

O que Maiúsculas, Sem hifens, Chaves e urn:uuid: mudam?

Apenas a apresentação — os 128 bits subjacentes são idênticos em todas as formas. 'Maiúsculas' imprime os dígitos hex em caixa alta, 'Sem hifens' fornece a versão compacta de 32 caracteres, 'Chaves' envolve o valor em { } do jeito que o Windows e o .NET escrevem um GUID, e urn:uuid: adiciona o prefixo que o torna um URN formal. urn:uuid: desliga as outras duas enquanto está ativada, porque o padrão define exatamente uma forma URN e é a forma canônica com hifens.