Inicio › Herramientas para desarrolladores › Generador de ULID

Generador de ULID

Genera ULID (identificadores únicos universales ordenables lexicográficamente) o valores UUID v7 ordenados por tiempo, de uno en uno o miles a la vez. Pega cualquier ULID o UUID para decodificar su marca de tiempo integrada y convertir entre los dos formatos.

Última actualización:

Generar

Decodificar y convertir

Publicidad
Publicidad

Cómo usar Generador de ULID

  1. Elige el tipo de ID: ULID (26 caracteres, base32 de Crockford) o UUID v7 (36 caracteres, formato UUID estándar).
  2. Indica cuántos ID necesitas y marca Monotónico si los ID creados en el mismo milisegundo deben ordenarse según su creación.
  3. Si quieres, elige una marca de tiempo para integrar una fecha concreta en lugar de la hora actual.
  4. Haz clic en Generar y luego copia un ID, cópialos todos o descárgalos como archivo de texto.
  5. Decodifica un ID: pega un ULID o UUID en el decodificador para ver cuándo se creó y convertirlo al otro formato.

Estructura de ULID y UUID v7

Ambos formatos guardan una marca de tiempo Unix en milisegundos en los bits más significativos, seguida de datos aleatorios, así que ordenar los ID los ordena por fecha de creación.

ULIDUUID v7 (RFC 9562)UUID v4
Tamaño total128 bits128 bits128 bits
Marca de tiempo48 bits, ms de Unix48 bits, ms de UnixNinguna
Bits aleatorios8074 (más 6 bits de versión/variante)122
Forma de texto26 caracteres, base32 de Crockford36 caracteres, hexadecimal con guiones36 caracteres, hexadecimal con guiones
Ejemplo01ARZ3NDEKTSV4RRFFQ69G5FAV0190b6a4-3c1e-7d2a-9f4b-6c1e2a7b8d909b2f6c1e-4a7d-4e3b-8c5f-2d1a0b9e7f63
Ordenable por tiempoSíSíNo
Fecha máximaAño 10889Año 10889n/a

Estructura del ULID: TTTTTTTTTT (10 caracteres, marca de tiempo) seguido de RRRRRRRRRRRRRRRR (16 caracteres, parte aleatoria). El alfabeto base32 de Crockford es 0123456789ABCDEFGHJKMNPQRSTVWXYZ: omite I, L, O y U para que los ID sean fáciles de leer en voz alta y nunca formen palabras por accidente.

Decodificar a mano la marca de tiempo de un ULID

Cada carácter vale 5 bits. Convierte los primeros 10 caracteres de base32 a un número: para 01ARZ3NDEK son 1,469,922,850,259 milisegundos, es decir, 2016-07-30 23:54:10.259 UTC. Para UUID v7, toma los primeros 12 dígitos hexadecimales (sin contar los guiones) y conviértelos de hexadecimal para obtener el mismo valor en milisegundos de Unix.

Cuándo usar ID ordenados por tiempo

  • Claves primarias de bases de datos: las filas nuevas se añaden cerca del final del índice, lo que mantiene rápidas las inserciones en B-tree en comparación con claves UUID v4 aleatorias.
  • Sistemas distribuidos: cada servicio puede crear ID sin un contador central y aun así se ordenan aproximadamente por tiempo.
  • Registros y eventos: los ID sirven también como marca de tiempo aproximada, útil para depurar y paginar.
  • Evítalos cuando la hora de creación deba ser privada, porque cualquiera puede leer la marca de tiempo del ID.

Preguntas frecuentes

¿Qué es un ULID?

Un ULID es un identificador de 128 bits formado por una marca de tiempo de 48 bits (milisegundos desde la época Unix) y 80 bits aleatorios, escrito como 26 caracteres en base32 de Crockford, por ejemplo 01ARZ3NDEKTSV4RRFFQ69G5FAV. Como la marca de tiempo va primero, los ULID se ordenan por fecha de creación como cadenas de texto normales.

ULID o UUID: ¿cuál debo usar?

Ambos tienen 128 bits. Los valores UUID v4 aleatorios no son ordenables, lo que dispersa las escrituras en los índices de la base de datos. ULID y UUID v7 empiezan con una marca de tiempo, así que las filas nuevas quedan al final de los índices B-tree. Elige UUID v7 cuando tu base de datos o tus herramientas esperen el formato UUID, y ULID cuando quieras cadenas más cortas, aptas para URL y sin distinción entre mayúsculas y minúsculas.

¿Qué hace el modo monotónico?

Dentro de un milisegundo, un generador normal elige bits aleatorios nuevos, así que dos ID del mismo milisegundo pueden ordenarse en cualquier orden. En el modo monotónico, en cambio, la parte aleatoria del ID anterior se incrementa en uno, lo que garantiza ID estrictamente crecientes, tal como describe la especificación ULID.

¿Puedo obtener la hora de creación de un ULID o UUID v7?

Sí. Los primeros 10 caracteres del ULID (o los primeros 48 bits de un UUID v7) guardan el tiempo Unix en milisegundos. Pega el ID en el decodificador para ver la hora exacta en UTC y local. Ten en cuenta que esto significa que los ID revelan cuándo se crearon.

¿Un ULID es lo mismo que un UUID?

Contienen los mismos 128 bits, así que cualquier ULID se puede escribir como una cadena hexadecimal con formato UUID y viceversa. Sin embargo, un ULID convertido de esta forma no es un UUID v7 válido, porque no establece los bits de versión y variante.

¿Qué tan únicos son estos ID?

Los ULID tienen 80 bits aleatorios por milisegundo y los valores UUID v7 tienen 74, generados con crypto.getRandomValues. La probabilidad de colisión entre dos ID creados en el mismo milisegundo es astronómicamente pequeña para cargas de trabajo prácticas.

¿Los ULID distinguen entre mayúsculas y minúsculas?

No. La forma canónica está en mayúsculas, pero los decodificadores deben aceptar también minúsculas. El base32 de Crockford omite I, L, O y U para evitar confusiones con 1, 0 y V.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Generadores de código →