Gerador de ULID
Gere em lote ULIDs, identificadores ordenáveis cronologicamente que funcionam como alternativa aos UUID.
O que significa gerar ULID
Gerar ULID consiste em emitir em lote identificadores únicos globais que se ordenam por tempo: o Universally Unique Lexicographically Sortable Identifier. Um ULID é uma cadeia de 26 caracteres em Crockford Base32 cujos 10 primeiros codificam o instante da geração e cujos 16 restantes provêm de uma fonte aleatória criptograficamente segura. Diferentemente de um identificador totalmente aleatório como o UUID v4, sua grande virtude é que ordenar as cadeias alfabeticamente também as ordena pelo momento em que foram criadas.
Esta ferramenta obtém a parte aleatória de crypto.getRandomValues() da Web Crypto API, de modo que a fonte é criptograficamente segura e não um simples gerador pseudoaleatório. Tudo acontece dentro do navegador: nem o número que você informa nem os identificadores produzidos são enviados a um servidor. Podem ser gerados até 1.000 de uma vez, e a saída está disponível em maiúsculas — a forma canônica da especificação — ou em minúsculas.
Como gerar ULID
- Indique quantos precisa Digite o número de ULID a emitir de uma vez, entre 1 e 1.000.
- Decida se os quer em minúsculas Marque a opção de minúsculas se quiser uniformidade para usá-los numa URL ou num log. Ambas as caixas são válidas segundo a especificação.
- Clique em gerar São listados juntos os ULID solicitados, com a hora atual na parte de marca temporal.
- Copie os resultados Copie-os um a um, ou use copiar tudo para levar a lista completa separada por quebras de linha.
Dicas para aproveitar melhor
- Os primeiros 10 caracteres de um ULID codificam um timestamp (o momento da criação), enquanto os 16 restantes são aleatórios. Exceto quando dois ULIDs são gerados no mesmo milissegundo, basta ordenar como texto para obter a ordem cronológica de criação.
- Usar um UUID v4 totalmente aleatório como chave primária de banco de dados tende a fragmentar os índices B-tree, já que novas linhas são inseridas em posições aleatórias. Como os ULIDs seguem aproximadamente a ordem do tempo, as novas linhas tendem a ser inseridas perto do fim do índice, o que ajuda a mitigar esse problema.
- Um ULID é representado por 26 caracteres em Base32 de Crockford (o alfabeto de 32 caracteres `0`-`9` e `A`-`Z` sem as letras I, L, O e U, facilmente confundíveis), o que o torna mais curto que um UUID (36 caracteres incluindo hífens) e seguro para uso em ambientes que não diferenciam maiúsculas de minúsculas.
- Para comparar formatos com o Nano ID e o UUID v4, consulte a tabela comparativa disponível na ferramenta irmã, a página do Gerador de Nano ID.
Quando gerar ULID ajuda
Chaves primárias e identificadores de registro
Ao adotar ULID como chave primária de uma tabela nova, você pode preparar cedo no desenvolvimento um lote de identificadores para registros fictícios e dados iniciais.
Identificadores de evento num sistema orientado a eventos
Quando cada evento de uma fila de mensagens ou de um sistema distribuído precisa de um identificador único, os ULID se ordenam por tempo, o que facilita muito acompanhar os logs cronologicamente.
Identificadores de log e rastreamento de amostra
Produza na hora identificadores no formato real para testar ou demonstrar uma plataforma de logs ou uma ferramenta de rastreamento.
Comparar com outros formatos de identificador
Se está em dúvida entre ULID, UUID v4, UUID v7 ou Nano ID para URLs curtas, compare antes a aparência e o comprimento reais. Veja também a geração de UUID, a geração de UUID v7 e a geração de Nano ID.
Termos relacionados aos ULID
- ULID
- Abreviação de Universally Unique Lexicographically Sortable Identifier. Identificador único de 128 bits cujos 48 primeiros bits guardam a hora da geração, de modo que ordenar as cadeias basta para dispô-los cronologicamente.
- Crockford Base32
- Codificação que usa 32 caracteres: os algarismos 0–9 e as letras A–Z, retiradas as visualmente confundíveis I, L, O e U. Um ULID é assim codificado em 26 caracteres.
- Monotonicidade
- Propriedade de um valor que sempre cresce com o tempo. Um ULID não garante a ordem quando vários são gerados no mesmo milissegundo, mas a extensão de geração monotônica prevista na especificação mantém o crescimento mesmo então.
- UUID
- Abreviação de Universally Unique Identifier. Norma de identificador único de 128 bits definida na RFC 4122, escrita normalmente com 36 caracteres hexadecimais incluindo os hifens. É uma norma independente do ULID.
- Identificadores únicos em sistemas distribuídos
- Mecanismo pelo qual vários servidores ou processos geram cada um identificadores sem colisão de forma independente, sem consultar um emissor central. ULID e UUID combinam hora de geração e aleatoriedade para reduzir a probabilidade de colisão a um nível desprezível.
- Parte de marca temporal
- Os 10 primeiros caracteres de um ULID: um valor de 48 bits que codifica a hora da geração em milissegundos como Crockford Base32. É o núcleo do mecanismo que permite deduzir a ordem de geração com uma simples comparação de cadeias.
Perguntas frequentes
Curiosidade — como o ULID trouxe a ordem cronológica para o mundo dos identificadores
A especificação do ULID foi publicada em 2016 por Alizain Feerasta. Na época, o UUID já era o método padrão para gerar identificadores únicos em sistemas distribuídos, mas sua natureza totalmente aleatória — que impedia a ordenação — era vista como inconveniente para a eficiência de índices de bancos de dados e para a análise temporal de logs. O ULID surgiu justamente para resolver esse problema.
Na verdade, o UUID também tem variantes baseadas em tempo: a versão 1 (endereço MAC mais timestamp) e a versão 7 (padronizada em 2024, combinando timestamp e valores aleatórios). Contudo, o ULID é uma especificação independente, distinta do padrão UUID (RFC 4122), e se destaca por buscar um design mais simples aliado a uma representação compacta em Base32.
Hoje em dia existem bibliotecas de implementação do ULID em praticamente todas as principais linguagens de programação, e ele é amplamente adotado em cenários em que preservar a ordem de criação importa: IDs de eventos em sistemas distribuídos, IDs de rastreamento em logs e chaves primárias de bancos de dados, entre outros. Sua filosofia de design coincide bastante com a do UUID v7, que surgiu na mesma época, e ambos coexistem como abordagens diferentes para o mesmo objetivo: um identificador ordenável semelhante ao UUID.