Gerador de UUID: v4, v7, ULID e NanoID, com decodificador
Gere UUID v4 ou v7 ordenado por tempo, ULIDs e NanoIDs em massa, ou cole um ID para ver a versão e o timestamp embutido.
Validar e decodificar um ID
UUID versão 7 (ordenado por tempo Unix)
| Canônico | 017f22e2-79b0-7cc3-98c4-dc0c0c07398f |
|---|---|
| Versão | 7 — ordenado por tempo Unix |
| Variante | RFC 9562 / RFC 4122 |
| rand_a (12 bits) | cc3 |
| Timestamp | 2022-02-22T19:22:22.000Z Unix ms 1645557742000 |
Os IDs são gerados no seu navegador com crypto.getRandomValues. Nada é enviado ou armazenado. Ver todas as ferramentas grátis.
Encontrou um problema ou algo que poderia ser melhor? Lemos todas as mensagens e corrigimos rápido.
Este gerador de UUID cria UUIDs aleatórios da versão 4, UUIDs da versão 7 ordenados por tempo conforme a RFC 9562, ULIDs e NanoIDs, um de cada vez ou até 10.000 num lote que você pode copiar ou baixar. Cada bit aleatório vem do crypto.getRandomValues, o gerador criptográfico do navegador, e não do Math.random. O decodificador abaixo aceita qualquer UUID, GUID ou ULID e informa a versão e a variante e, para v1, v6, v7 e ULID, o momento em que foi criado.
Os UUIDs v7 e os ULIDs de um mesmo lote são estritamente crescentes, mesmo quando milhares compartilham o mesmo milissegundo, então ficam ordenados por criação, como chaves de banco de dados devem ficar. A versão 1 não é oferecida: um navegador não tem acesso a um endereço MAC nem a uma sequência de relógio persistente, então um UUID v1 feito numa página web só imitaria o formato. Se precisar de UUIDs v1 ou dos baseados em nome, v3/v5, gere-os com a biblioteca de UUID da sua linguagem.
Como usar
- Escolha o tipo: v4 para um ID aleatório de uso geral, v7 para chaves primárias de banco de dados, ULID ou NanoID se o seu stack os usa.
- Defina quantos precisa, até 10.000, e aperte Gerar (ou Enter no campo de quantidade).
- Escolha um formato: maiúsculas, sem hifens ou entre chaves para o registro do Windows e contextos .NET.
- Copie todos ou baixe como arquivo de texto com um ID por linha, ou como um array JSON.
- Para inspecionar um ID existente, cole-o no decodificador para ver a versão, a variante e qualquer timestamp que ele carregue.
Perguntas frequentes
Qual é a diferença entre UUID v4 e v7?
Um UUID v4 tem 122 bits aleatórios, sem estrutura. Um UUID v7 coloca um timestamp Unix de 48 bits em milissegundos no início, seguido de 74 bits aleatórios, então os valores v7 ficam ordenados pelo momento de criação. Essa ordem torna o v7 muito mais adequado como chave primária de banco de dados: as linhas novas vão para o fim do índice em vez de posições aleatórias, o que reduz divisões de página e mantém as inserções rápidas. A desvantagem é que um ID v7 revela quando foi criado.
Dois UUIDs podem ser iguais?
Na teoria sim, na prática não, desde que venham de uma boa fonte de aleatoriedade. Com 122 bits aleatórios, seria preciso gerar cerca de 2,7 quintilhões (2,7 × 10^18) de UUIDs v4 para chegar a 50% de chance de uma única colisão. Duplicatas reais vêm de bugs: um gerador aleatório fraco ou mal inicializado, estado de máquina virtual copiado ou código que reutiliza um valor.
GUID é o mesmo que UUID?
Sim. GUID é o nome que a Microsoft dá ao mesmo identificador de 128 bits, e os GUIDs modernos são UUIDs padrão (geralmente da versão 4). As únicas diferenças são de apresentação: as ferramentas do Windows costumam mostrar GUIDs em maiúsculas e entre chaves, como {3F2504E0-4F89-41D3-9A0C-0305E82C3301}. Use as opções de maiúsculas e chaves para chegar a esse formato.
Devo usar UUID v7 ou ULID?
Ambos têm 128 bits, são ordenados por tempo e carregam um timestamp em milissegundos. O UUID v7 se encaixa em qualquer lugar onde já existe uma coluna ou tipo UUID, como o tipo uuid do PostgreSQL ou a classe UUID do Java. O ULID é mais curto como texto (26 caracteres em vez de 36) e não diferencia maiúsculas de minúsculas, mas precisa de uma biblioteca própria e é armazenado como texto ou binário. Se o seu banco de dados e a sua linguagem já trabalham com UUID, o v7 é a escolha mais simples.
Qual deve ser o tamanho de um NanoID?
O padrão de 21 caracteres do alfabeto seguro para URL de 64 caracteres dá 126 bits de aleatoriedade, comparável aos 122 do UUID v4. IDs mais curtos servem quando a quantidade de IDs é pequena e adivinhar um deles não causa dano, como num link curto com limite de requisições. A contagem de bits mostrada abaixo do controle de comprimento indica o que você está abrindo mão; cada caractere de um alfabeto de 64 símbolos acrescenta 6 bits.
Dá para saber quando um UUID foi criado?
Só nas versões baseadas em tempo. Cole o ID no decodificador: v7 e ULID guardam milissegundos Unix nos primeiros 48 bits, e v1 e v6 guardam intervalos de 100 nanossegundos desde 15 de outubro de 1582. Um UUID v4 não contém tempo nenhum, só bits aleatórios mais os marcadores de versão e variante.
Como ler um UUID: versão e variante
Um UUID é escrito como 32 dígitos hexadecimais em grupos de 8-4-4-4-12. Duas posições o identificam. O primeiro dígito do terceiro grupo é a versão: em 0190a3c4-1b2c-7d3e-8f40-0123456789ab, é 7. O primeiro dígito do quarto grupo codifica a variante: 8, 9, a ou b significa o layout padrão da RFC 9562, que é o usado por quase todos os UUIDs hoje.
• v1: timestamp gregoriano mais o endereço MAC da máquina que o gerou. Expõe os dois; raramente usado em sistemas novos.
• v3 e v5: determinísticos, derivados de um namespace e um nome com MD5 (v3) ou SHA-1 (v5). A mesma entrada sempre gera o mesmo UUID.
• v4: aleatório. O padrão da maioria das bibliotecas.
• v6: v1 com o timestamp reordenado para ser ordenável; um caminho de migração para quem usa v1.
• v7: timestamp Unix em milissegundos mais bits aleatórios. A versão ordenada por tempo recomendada para sistemas novos.
• v8: um layout definido pelo fornecedor; só os bits de versão e variante são fixos.
Por que UUIDs aleatórios deixam bancos de dados lentos e o que o v7 resolve
A maioria dos bancos de dados guarda a chave primária num índice B-tree. Com chaves sequenciais, cada linha nova cai na página mais à direita do índice, que fica na memória. Com UUIDs v4 aleatórios, cada inserção cai numa página aleatória; quando o índice fica maior que a memória, as inserções começam a ler páginas do disco e a dividi-las, e a taxa de gravação cai. O InnoDB do MySQL, que agrupa a tabela inteira pela chave primária, é o que mais sente isso.
O UUID v7 mantém as vantagens dos UUIDs (globalmente únicos, podem ser gerados por qualquer cliente sem ida e volta ao servidor, seguros para expor) e se comporta no índice quase como uma coluna de autoincremento. A RFC 9562, publicada em maio de 2024, recomenda o v7 em vez do v1 e do v6 para novos IDs baseados em tempo, e o PostgreSQL 18 adicionou uma função uuidv7() embutida.
Guarde UUIDs num tipo nativo de 16 bytes (uuid no PostgreSQL, BINARY(16) no MySQL) em vez de uma string de 36 caracteres, que mais que dobra o tamanho do índice.
UUID vs ULID vs NanoID num relance
• UUID v4: 36 caracteres, 122 bits aleatórios, suporte universal em bibliotecas e bancos de dados, não ordenável.
• UUID v7: 36 caracteres, tempo em milissegundos de 48 bits mais 74 bits aleatórios, ordenável, suportado onde quer que UUIDs sejam.
• ULID: 26 caracteres em Crockford Base32, tempo de 48 bits mais 80 bits aleatórios, ordenável e sem diferenciar maiúsculas de minúsculas, precisa de biblioteca.
• NanoID: 21 caracteres por padrão, qualquer alfabeto e tamanho, seguro para URL e compacto, sem timestamp e sem forma binária padrão.
Ferramentas grátis relacionadas
- Conversor de timestamp Unix — Converta epoch em segundos, milissegundos, microssegundos ou nanossegundos para datas em qualquer fuso horário, e vice-versa. Relógio ao vivo, modo em lote, trechos de código.
- Gerador de senhas — Gere uma senha aleatória forte, uma frase-senha fácil de lembrar ou um PIN. Funciona inteiramente no seu navegador; nada é enviado nem armazenado.
- Gerador de hash — Gere hashes de textos ou arquivos com MD5, SHA-1, SHA-256, SHA-384, SHA-512 e CRC32, verifique um checksum ou calcule um HMAC. Os arquivos nunca saem do seu dispositivo.
- Formatador de JSON — Formate, minifique e valide JSON, com erros de parsing localizados por linha e coluna. No seu navegador, sem upload.