ULID Generator
GeneratorGere ULIDs instantaneamente. Ordenáveis por tempo, 128 bits, seguros para URL com Crockford Base32. Modo monotônico e timestamps personalizados. Gratuito, funciona no navegador.
ULID (Universally Unique Lexicographically Sortable Identifier) é um identificador de 128 bits projetado como alternativa ordenável ao UUID v4. Proposto por Alizain Feerasta em 2016, codifica o timestamp do milissegundo atual nos primeiros 10 caracteres, de modo que IDs gerados próximos se ordenam próximos em qualquer índice B-tree ou ordem alfabética padrão.
Ao contrário do UUID v4 (totalmente aleatório), um ULID revela seu timestamp de criação e garante ordem cronológica de classificação — propriedade fundamental para chaves primárias de banco de dados, logs de eventos e rastreamento distribuído. O formato usa Crockford Base32 (sem I, L, O ou U) para ser seguro para URL e visualmente inequívoco.
ULID antecede o UUID v7 (padrão IETF de 2024 que resolve o mesmo problema) e ainda tem suporte de biblioteca mais amplo entre linguagens. Muitas equipes usam ULID para novos projetos enquanto a adoção do UUID v7 cresce.
| ULID | UUID v4 | UUID v7 | |
|---|---|---|---|
| Ordenável | ✓ Yes | ✗ No | ✓ Yes |
| Timestamp | 48-bit ms | None | 48-bit ms |
| Bits aleatórios | 80 bits | 122 bits | 74 bits |
| Codificação | Crockford Base32 | Hex + hyphens | Hex + hyphens |
| Comprimento da string | 26 chars | 36 chars | 36 chars |
About this tool
Sobre o Gerador de ULID
ULID (Universally Unique Lexicographically Sortable Identifier) é um identificador de 128 bits projetado para corrigir uma das maiores limitações do UUID v4: IDs aleatórios que comprometem a localidade do índice do banco de dados. Um ULID codifica o milissegundo atual nos primeiros 10 caracteres, de modo que IDs gerados próximos uns dos outros se ordenam próximos — acelerando consultas de intervalo e melhorando o desempenho de INSERT em índices B-tree.
Cada ULID é codificado em exatamente 26 caracteres usando Crockford Base32 (alfabeto 0–9 A–Z, excluindo I, L, O, U para evitar ambiguidade visual). Os primeiros 48 bits carregam o timestamp Unix em milissegundos; os 80 bits restantes são aleatórios criptograficamente seguros. O modo monotônico garante que múltiplos ULIDs gerados no mesmo milissegundo ainda se ordenem na sequência de geração, incrementando a seção aleatória.
ULIDs são ideais para sistemas distribuídos que precisam de chaves primárias ordenadas por tempo sem um gerador de sequência central — event sourcing, filas de mensagens, correlação de logs e qualquer carga de trabalho com muitas inserções se beneficiam imediatamente. São seguros para URL, insensíveis a maiúsculas e decodificam de volta para um timestamp de criação exato sem consulta externa.
Em comparação com UUID v4, ULIDs são cerca de 48% mais curtos como string, se ordenam corretamente em qualquer índice lexicográfico e expõem o timestamp de criação gratuitamente. Em comparação com UUID v7 (o novo padrão IETF), ULID tem suporte de biblioteca mais amplo e uma seção aleatória maior (80 bits vs 74 bits no UUID v7). Toda a geração acontece no seu navegador usando a Web Crypto API — nada é enviado a um servidor.
Funcionalidades Principais
- Codificação Crockford Base32 de 26 caracteres (seguro para URL)
- Prefixo de timestamp de milissegundos de 48 bits para ordenação natural
- Sufixo aleatório criptograficamente seguro de 80 bits
- Modo monotônico: IDs sequenciais no mesmo milissegundo
- Timestamp personalizado: gere ULIDs para qualquer momento no tempo
- Geração em lote: até 1000 ULIDs de uma vez
- Timestamp decodificado exibido para cada ULID gerado
- Cópia individual e cópia de todos com um clique
- 100% baseado no navegador, sem chamadas ao servidor
FAQ
Gerador de ULID — Perguntas Frequentes
ULID é melhor que UUID?
Depende do caso de uso. O ULID tem uma grande vantagem sobre o UUID v4: ele é ordenável lexicograficamente. Como os primeiros 48 bits codificam o timestamp de criação, ULIDs gerados próximos um do outro se ordenam próximos em qualquer índice B-tree. Isso significa que cargas de trabalho com muitas inserções em bancos de dados como PostgreSQL ou MySQL apresentam menos fragmentação de índice e melhor desempenho em consultas de intervalo. Se ordem de classificação e decodificação de timestamp são importantes, ULID é a melhor escolha. Se você precisa apenas de unicidade global sem se preocupar com ordenação, UUID v4 é mais simples e mais universalmente suportado.
ULIDs são seguros?
O sufixo aleatório de 80 bits é gerado com a Web Crypto API (crypto.getRandomValues), que fornece valores pseudo-aleatórios criptograficamente seguros. Isso torna computacionalmente inviável prever ou enumerar futuros ULIDs a partir de ULIDs observados. No entanto, ULIDs não são tokens secretos — o prefixo de timestamp é intencionalmente visível. Nunca use um ULID sozinho como token bearer secreto; combine-o com um mecanismo de autenticação separado.
Posso decodificar o timestamp de um ULID?
Sim. Os primeiros 10 caracteres de um ULID codificam o timestamp Unix em milissegundos usando Crockford Base32. Para decodificar: trate cada caractere como seu valor Base32 (0–31), concatene os valores em um inteiro de 48 bits e converta para uma data. Este gerador exibe o timestamp decodificado ao lado de cada ULID gerado.
O que acontece se dois ULIDs forem gerados no mesmo milissegundo?
Sem o modo monotônico, ambos os ULIDs recebem sufixos aleatórios de 80 bits independentes. Há uma probabilidade minúscula (cerca de 1 em 2^80) de serem idênticos ou se ordenarem na ordem errada. Com o modo monotônico ativado, o gerador lembra a última parte aleatória e a incrementa em 1 para cada ID subsequente dentro do mesmo milissegundo. Isso garante ordem de classificação estrita mesmo em altas taxas de geração, ao custo de tornar o sufixo ligeiramente menos aleatório.
Qual é a probabilidade de colisão de ULID?
A probabilidade de colisão entre dois ULIDs gerados independentemente é astronomicamente pequena. A seção aleatória comporta 2^80 ≈ 1,2 × 10^24 valores possíveis. Mesmo gerando 1 milhão de ULIDs por segundo durante um ano inteiro, a probabilidade de colisão pelo paradoxo do aniversário ficaria abaixo de 1 em 10^12. Na prática, colisões de ULID não são uma preocupação para nenhuma carga de trabalho realista.
ULID vs UUID v7 — qual devo usar?
UUID v7 (RFC 9562, finalizado em 2024) e ULID resolvem o mesmo problema — IDs únicos ordenados por tempo — mas o UUID v7 agora é um padrão IETF com suporte nativo crescente em bancos de dados (PostgreSQL 17 entende UUID v7 nativamente). ULID existe há mais tempo e tem mais implementações de bibliotecas em mais linguagens atualmente. UUID v7 tem uma seção aleatória ligeiramente menor (74 bits vs 80 bits), usa hex hifenizado em vez de Crockford Base32, e armazena mais eficientemente em colunas de banco de dados tipadas como UUID. Se você está iniciando um novo projeto em 2024+, vale a pena avaliar UUID v7; se tem infraestrutura ULID existente ou precisa da seção aleatória de 80 bits, fique com ULID.
Dicas
- Ative o modo monotônico ao gerar múltiplos IDs em um loop fechado — garante ordem de classificação dentro do mesmo milissegundo
- Use um timestamp personalizado para gerar ULIDs ancorados em um momento passado ou futuro, útil para popular bancos de dados de teste
- Os primeiros 10 caracteres de qualquer ULID são seu timestamp — você pode ordenar qualquer lista de ULIDs alfabeticamente e eles estarão em ordem cronológica
- Copiar Todos exporta um ULID por linha, pronto para colar em um script SQL ou CSV