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 |
Sobre esta ferramenta
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
Explore more
Ferramentas Relacionadas
Outras ferramentas que podem ser úteis para seu fluxo de trabalho