Crockford-base32 de 26 caracteres, ordenável lexicograficamente por timestamp de milissegundo. Gerado localmente, nunca é transmitido.
O que faz
Gera ULIDs: identificadores de 26 caracteres que combinam um timestamp de milissegundos com 80 bits de aleatoriedade. A ferramenta se preenche no momento em que carrega e re-sorteia a cada mudança de opção, então sempre há um resultado na tela. Defina a Quantidade de 1 a 1.000. Um valor único é exibido em tipo grande; um lote é exibido como lista. Copiar leva o lote inteiro. Tudo roda localmente com crypto.getRandomValues.
Como usar
- Defina a Quantidade (1 a 1.000). Os resultados se regeneram conforme você muda o valor.
- Leia o resultado: um valor em tipo grande, dois ou mais como lista.
- Pressione Copiar para levar o lote inteiro.
- Cole qualquer
ULIDULIDA 128-bit identifier like a UUID, but timestamp-prefixed and Crockford-base32 encoded — so it sorts by creation time and is shorter to read.
em Decodificar umULIDULIDA 128-bit identifier like a UUID, but timestamp-prefixed and Crockford-base32 encoded — so it sorts by creation time and is shorter to read.
para inspecioná-lo: a ferramenta separa a parte de tempo da parte de aleatoriedade e mostra o timestamp em milissegundos e em ISO-8601 UTC. Entrada inválida (comprimento errado, caractere fora do alfabeto Crockford, ou parte de tempo acima do teto de 48 bits) mostra o motivo exato.
Exemplos
Um
ULIDULIDA 128-bit identifier like a UUID, but timestamp-prefixed and Crockford-base32 encoded — so it sorts by creation time and is shorter to read.
tem 26 caracteres. A divisão é o ponto principal:01ARZ3NDEKTSV4RRFFQ69G5FAV
└──┬──┘└───────┬────────┘
timestamp randomness
(10 chars) (16 chars)
01ARZ3NDEKTSV4RRFFQ69G5FAV- o exemplo canônico da especificação01ARZ3NDEK...ordena-se antes de01ARZ3NDF...porque 10 caracteres de timestamp lideram a string- Colar
01ARZ3NDEKTSV4RRFFQ69G5FAVno decodificador lê o timestamp2016-07-30T23:54:10.259Z— o exemplo canônico da especificação foi cunhado em 2016-07-30
Como os ULIDs funcionam
Um
ULIDULIDA 128-bit identifier like a UUID, but timestamp-prefixed and Crockford-base32 encoded — so it sorts by creation time and is shorter to read.
tem 128 bits, cortados em duas partes:| Parte | Bits | Caracteres | Contém |
|---|---|---|---|
| Timestamp | 48 | primeiros 10 | milissegundos desde o epoch Unix |
| Randomness | 80 | últimos 16 | bits aleatórios |
Ambas as metades são codificadas em Crockford base32: 32 símbolos, 5 bits por caractere. O alfabeto é 0-9 e depois A-Z menos I, L, O, U. Isso torna os ULIDs insensíveis a maiúsculas e minúsculas e remove as letras que as pessoas leem errado (I como 1, O como 0). 26 caracteres vezes 5 bits dão 130, então os 2 bits superiores ficam sem uso.
O timestamp é o que você está comprando. Ele ocupa a extremidade mais significativa do valor, então a ordem de string é igual à ordem de criação: ordene uma coluna de ULIDs como texto simples e você obtém de graça a ordem de inserção. Compare com o UUIDv4:
| Propriedade | ULIDULIDA 128-bit identifier like a UUID, but timestamp-prefixed and Crockford-base32 encoded — so it sorts by creation time and is shorter to read. |
UUIDv4 |
|---|---|---|
| Caracteres | 26 | 36 (com 4 hífens) |
| Ordena por tempo de criação | sim, lexicográfico | não - ordem totalmente aleatória |
| Bits aleatórios | 80 | 122 |
O UUIDv4 serve quando os identificadores só precisam ser únicos. Quando eles também precisam ordenar - chaves de banco de dados, logs de eventos, qualquer coisa que você pagina - o prefixo de timestamp transforma um escaneamento de índice em uma leitura de intervalo. O relógio de milissegundos de 48 bits alcança o ano 10889, então não vai transbordar na prática.
Mesmo milissegundo, ULIDs diferentes: os 80 bits aleatórios mantêm distintos os IDs de um mesmo instante, com chance de colisão tão pequena que é ignorada em volumes normais.
Bom saber
- Ordenável, não ordenado. ULIDs ordenam por milissegundo; dois IDs dentro de um mesmo milissegundo não têm ordem garantida.
- Insensível a maiúsculas e minúsculas.
01arz3ndektsv4rrffq69g5favé interpretado como o mesmo valor da forma em maiúsculas. - Privado: gerado localmente no seu navegador. Nada é enviado a lugar algum.
- Ferramentas relacionadas:
UUIDUUIDA 128-bit identifier generated to be practically unique without coordination, most commonly in version-4 (fully random) form.
Generator, Token Generator.