Generador de ULID
Genera de forma masiva ULID, identificadores ordenables cronológicamente que funcionan como alternativa a los UUID.
Qué significa generar ULID
Generar ULID consiste en emitir en bloque identificadores únicos globales que se ordenan por tiempo: el Universally Unique Lexicographically Sortable Identifier. Un ULID es una cadena de 26 caracteres en Crockford Base32 cuyos 10 primeros codifican el instante de generación y cuyos 16 restantes proceden de una fuente aleatoria criptográficamente segura. A diferencia de un identificador totalmente aleatorio como el UUID v4, su gran virtud es que ordenar las cadenas alfabéticamente las ordena también por el momento en que se crearon.
Esta herramienta toma la parte aleatoria de crypto.getRandomValues() de la Web Crypto API, de modo que la fuente es criptográficamente segura y no un simple generador pseudoaleatorio. Todo ocurre dentro del navegador: ni el número que introduce ni los identificadores producidos se envían a un servidor. Se pueden generar hasta 1.000 de una vez, y la salida está disponible en mayúsculas —la forma canónica de la especificación— o en minúsculas.
Cómo generar ULID
- Indique cuántos necesita Escriba el número de ULID a emitir de una vez, entre 1 y 1.000.
- Decida si los quiere en minúsculas Marque la opción de minúsculas si desea uniformidad para usarlos en una URL o en un registro. Ambas cajas son válidas según la especificación.
- Pulse generar Se listan juntos los ULID solicitados, con la hora actual en la parte de marca temporal.
- Copie los resultados Cópielos uno a uno, o use copiar todo para llevarse la lista completa separada por saltos de línea.
Consejos para aprovecharla mejor
- Los primeros 10 caracteres de un ULID codifican una marca de tiempo (el momento de creación), mientras que los 16 restantes son aleatorios. Salvo que dos ULID se generen en el mismo milisegundo, basta con ordenarlos como cadenas de texto para obtener el orden cronológico de creación.
- Usar un UUID v4 completamente aleatorio como clave primaria en una base de datos tiende a fragmentar los índices B-tree, ya que las nuevas filas se insertan en posiciones aleatorias. Como los ULID se ordenan aproximadamente por tiempo, las filas nuevas se añaden cerca del final del índice, lo que ayuda a mitigar este problema.
- Un ULID se representa con 26 caracteres en Base32 de Crockford (el alfabeto de 32 caracteres `0`-`9` y `A`-`Z` sin las letras I, L, O y U, fáciles de confundir), lo que lo hace más corto que un UUID (36 caracteres incluyendo guiones) y seguro de usar en entornos que no distinguen mayúsculas de minúsculas.
- Para comparar formatos con Nano ID y UUID v4, consulta la tabla comparativa disponible en nuestra herramienta hermana, el Generador de Nano ID.
Cuándo ayuda generar ULID
Claves primarias e identificadores de registro
Al adoptar ULID como clave primaria de una tabla nueva, puede preparar pronto en el desarrollo un lote de identificadores para registros ficticios y datos iniciales.
Identificadores de evento en un sistema orientado a eventos
Cuando cada evento de una cola de mensajes o de un sistema distribuido necesita un identificador único, los ULID se ordenan por tiempo, lo que facilita mucho seguir los registros cronológicamente.
Identificadores de registro y traza de muestra
Produzca al instante identificadores con el formato real para probar o demostrar una plataforma de registro o una herramienta de trazado.
Comparar con otros formatos de identificador
Si duda entre ULID, UUID v4, UUID v7 o Nano ID para URL cortas, compare antes el aspecto y la longitud reales. Véanse también la generación de UUID, la generación de UUID v7 y la generación de Nano ID.
Términos relacionados con los ULID
- ULID
- Abreviatura de Universally Unique Lexicographically Sortable Identifier. Identificador único de 128 bits cuyos 48 primeros bits guardan la hora de generación, de modo que ordenar las cadenas basta para disponerlos cronológicamente.
- Crockford Base32
- Codificación que emplea 32 caracteres: las cifras 0–9 y las letras A–Z, retiradas las visualmente confundibles I, L, O y U. Un ULID se codifica así en 26 caracteres.
- Monotonía
- Propiedad de un valor que siempre crece con el tiempo. Un ULID no garantiza el orden cuando se generan varios dentro del mismo milisegundo, pero la extensión de generación monótona prevista en la especificación mantiene el crecimiento incluso entonces.
- UUID
- Abreviatura de Universally Unique Identifier. Norma de identificador único de 128 bits definida en el RFC 4122, escrita habitualmente con 36 caracteres hexadecimales incluidos los guiones. Es una norma independiente del ULID.
- Identificadores únicos en sistemas distribuidos
- Mecanismo por el que varios servidores o procesos generan cada uno identificadores sin colisión de forma independiente, sin consultar a un emisor central. ULID y UUID combinan hora de generación y aleatoriedad para reducir la probabilidad de colisión a un nivel insignificante.
- Parte de marca temporal
- Los 10 primeros caracteres de un ULID: un valor de 48 bits que codifica la hora de generación en milisegundos como Crockford Base32. Es el núcleo del mecanismo que permite deducir el orden de generación con una simple comparación de cadenas.
Preguntas frecuentes
A propósito — cómo ULID introdujo el orden cronológico en el mundo de los identificadores
La especificación ULID fue publicada en 2016 por Alizain Feerasta. En aquel momento, UUID ya era el método estándar para generar identificadores únicos en sistemas distribuidos, pero su naturaleza completamente aleatoria (que impedía ordenarlos) resultaba poco práctica para la eficiencia de los índices de bases de datos y para el análisis temporal de registros (logs). ULID nació precisamente para resolver ese problema.
En realidad, UUID también tiene variantes basadas en tiempo: la versión 1 (dirección MAC más marca de tiempo) y la versión 7 (estandarizada en 2024, que combina marca de tiempo y valores aleatorios). Sin embargo, ULID es una especificación independiente, distinta del estándar UUID (RFC 4122), y se distingue por perseguir un diseño más simple junto con una representación compacta en Base32.
Hoy en día existen bibliotecas de implementación de ULID en prácticamente todos los lenguajes de programación importantes, y se usa ampliamente en escenarios donde importa conservar el orden de creación: identificadores de eventos en sistemas distribuidos, identificadores de traza en registros y claves primarias de bases de datos, entre otros. Su filosofía de diseño coincide en gran medida con la de UUID v7, que surgió por la misma época, y ambos coexisten como enfoques distintos para el mismo objetivo: un identificador ordenable similar al UUID.