ULID Generator

Generator

Gere ULIDs instantaneamente. Ordenáveis por tempo, 128 bits, seguros para URL com Crockford Base32. Modo monotônico e timestamps personalizados. Gratuito, funciona no navegador.

Options
ULID
Clique em Gerar para criar seu primeiro ULID
O que é um ULID?

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.

Estrutura do Formato ULID
01ARZ3NDEKTSV4RRFFQ69G5FAV
Timestamp (10 chars · 48 bits · ms desde o epoch Unix)Aleatório (16 chars · 80 bits · CSPRNG)
ULID vs UUID v4 vs UUID v7
ULIDUUID v4UUID v7
Ordenável✓ Yes✗ No✓ Yes
Timestamp48-bit msNone48-bit ms
Bits aleatórios80 bits122 bits74 bits
CodificaçãoCrockford Base32Hex + hyphensHex + hyphens
Comprimento da string26 chars36 chars36 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