O que é um ULID
Um ULID (Universally Unique Lexicographically Sortable Identifier) guarda os mesmos 128 bits de um UUID em 26 caracteres, como 01ARYZ6S41TSV4RRFFQ69G5FAV. Os 10 primeiros caracteres são o momento de criação em milissegundos e os outros 16 são aleatórios. Como o tempo vem primeiro e o alfabeto é ordenado, ordenar ULIDs como texto os ordena pela criação, o que mantém os índices de banco organizados e facilita ler logs.
O alfabeto é o Base32 de Crockford: dígitos e letras maiúsculas sem I, L, O e U, então os IDs não diferenciam maiúsculas, evitam caracteres parecidos e não precisam de escape em URLs.
Exemplo resolvido
O horário de exemplo da especificação do ULID, 1469918176385 ms (30 de julho de 2016, 22:36:16,385 UTC), vira o prefixo 01ARYZ6S41. Todo ULID criado nesse milissegundo começa com esses dez caracteres; os dezesseis restantes são aleatórios.
ULID ou UUID v7?
Os dois são ordenados por tempo. O UUID v7 é um padrão do IETF (RFC 9562) e cabe em colunas uuid de banco; o ULID é mais curto como texto e amigável em URLs. Escolha pelo que sua stack suporta.
Como funciona
Para cada ID a página pega o horário Unix atual em milissegundos, escreve como 10 caracteres em Base32 de Crockford (5 bits cada, do mais significativo para o menos), tira 10 bytes do crypto.getRandomValues, a fonte aleatória segura do navegador, e escreve esses 80 bits como mais 16 caracteres. O resultado segue a especificação do ULID. Os IDs são gerados só no seu navegador, ao carregar a página e a cada clique em Gerar.
Perguntas frequentes
ULIDs são ordenáveis?
Sim. Ordená-los como texto os coloca na ordem de criação, até o milissegundo.
Um ULID tem o tamanho de um UUID?
Sim, os dois têm 128 bits. O ULID é escrito em 26 caracteres em vez de 36.
ULIDs diferenciam maiúsculas?
Não. O Base32 de Crockford não diferencia; a forma canônica é maiúscula.
ULIDs revelam quando foram criados?
Sim. Os 10 primeiros caracteres são o momento de criação, então não use onde isso for sensível.
Fontes
- ULID specification (Universally Unique Lexicographically Sortable Identifier)
- W3C — Web Cryptography API
- Wikipedia — Universally unique identifier
Revisado em 17 de out. de 2026 · vetores de teste fixtures/dev/ulid-generator/