ULID Generator

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.

ULID: 48-bit millisecond timestamp + 80-bit random, Crockford Base32. Lexicographically sortable.

Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand ULID Generator

Gera ULIDs — identificadores de 26 caracteres cujos primeiros caracteres codificam o horário de criação, então eles se ordenam cronologicamente como texto puro.

How it works

Um ULID tem 128 bits: um timestamp de 48 bits em milissegundos seguido de 80 bits aleatórios, escritos em Crockford Base32 como 10 caracteres de timestamp e 16 aleatórios. Como essa codificação preserva a ordenação, ordenar as strings ordena por horário de criação, e é isso que torna os ULIDs baratos como chaves de banco de dados — linhas novas entram no fim do índice em vez de se espalharem por ele. O alfabeto omite I, L, O e U para manter a transcrição sem ambiguidade.

When to use it

  • Chaves primárias de uma tabela em que você quer ordenação por tempo sem uma sequência central.
  • IDs de eventos, logs ou mensagens que você depois vai querer varrer por faixa de tempo.
  • IDs gerados de forma independente em vários serviços que ainda assim precisam se ordenar juntos.
  • Qualquer lugar onde você usaria UUID v4 mas se importa com a localidade do índice.
  • Identificadores que uma pessoa pode precisar ler de uma tela, onde o alfabeto restrito ajuda.

Watch out for

  • A ordenação vale só até onde o relógio vale. O modo monotônico mantém um lote ordenado dentro de um mesmo milissegundo incrementando o componente aleatório, mas dois ULIDs gerados em máquinas diferentes são ordenados pelos relógios dessas máquinas — alguns milissegundos de desvio já os reordenam.
  • O horário de criação é público. Os 10 primeiros caracteres decodificam direto de volta para um timestamp em milissegundos, então qualquer um com um ULID sabe quando o registro foi criado.
  • O Crockford Base32 não distingue maiúsculas no papel, mas um índice de banco que compara bytes brutos distingue. Esta ferramenta sempre emite em maiúsculas; armazene uma única caixa de forma consistente ou a ordenação e a igualdade vão surpreender você.
  • O componente aleatório tem 80 bits contra os 122 de um UUID v4, o que só importa dentro de um mesmo milissegundo — mas significa, sim, que o ULID é uma escolha mais fraca que o UUID v4 onde o id precisa ser impossível de adivinhar.

Frequently Asked Questions

Por que o ULID é melhor que o UUID v4 como chave primária de banco de dados?

O UUID v4 é aleatório, o que causa inserções aleatórias no índice B-tree e fragmentação severa em escala. O ULID é ordenado por tempo — registros novos sempre entram no fim do índice, como inteiros auto-incrementais, mas globalmente únicos.

O que é o modo monotônico no ULID?

Quando vários ULIDs caem no mesmo milissegundo, o modo monotônico incrementa em um o componente aleatório anterior em vez de sortear bits novos. Isso garante ordem lexicográfica estrita dentro de um milissegundo, o que ULIDs puramente aleatórios não conseguem. Este gerador usa o modo monotônico por padrão quando você pede um lote.

O ULID diferencia maiúsculas de minúsculas?

Não — o ULID usa o Crockford Base32 (0-9, A-Z sem I, L, O, U), que por desenho não distingue maiúsculas. 01AN4Z07BY é o mesmo que 01an4z07by. O alfabeto também evita caracteres visualmente confusos.

How to Use ULID Generator

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.