Generador de ULID Gratis — Genera y Decodifica ULIDs
Genera, decodifica y convierte ULIDs online — gratis y 100 % en tu navegador. Extrae la marca de tiempo de cualquier ULID, convierte ULID a UUID y viceversa, genera en lote, con modo monotónico. Nada se envía jamás a un servidor.
Cada ULID usa aleatoriedad nueva de 80 bits.
Un ULID y un UUID son ambos de 128 bits, así que la conversión es sin pérdidas y reversible. ¿Necesitas UUIDs clásicos? Prueba el Generador de UUID.
¿Qué es un ULID?
Un ULID — Universally Unique Lexicographically Sortable Identifier — es un identificador de 128 bits creado para subsanar una debilidad práctica del UUIDv4 aleatorio sin renunciar a su mejor propiedad: puedes generar uno en cualquier sitio, sin coordinador central, con la confianza de que es único. La diferencia es que un ULID es ordenable por tiempo. Se representa como 26 caracteres de Base32 de Crockford, divididos en dos partes: los primeros 10 caracteres son una marca de tiempo de 48 bits que cuenta milisegundos desde la época Unix, y los últimos 16 caracteres son 80 bits de aleatoriedad criptográficamente segura. Pon el tiempo primero, codifícalo en un alfabeto que conserva el orden, y el identificador se ordena cronológicamente como una simple cadena.
Esa única decisión de diseño tiene consecuencias enormes para las bases de datos. Una clave primaria UUIDv4 aleatoria aterriza en un punto impredecible de un índice B-tree en cada inserción, lo que fragmenta el índice, satura la caché y degrada lentamente el rendimiento de escritura a medida que crece una tabla. Un ULID, al llevar prefijo de tiempo, aterriza al final o cerca del final del índice cada vez — las inserciones se mantienen secuenciales, el índice se mantiene compacto, y los escaneos de rango sobre una ventana de tiempo se vuelven baratos. Obtienes la generación sin coordinación de un UUID y la localidad de inserción de un entero autoincremental, sin exponer un contador secuencial adivinable.
Los detalles de la codificación son deliberados. La Base32 de Crockford excluye las letras I, L, O y U, tanto para evitar la confusión visual con los dígitos 1 y 0 como para hacer la cadena insensible a mayúsculas en la entrada. El resultado son 26 caracteres sin guiones que son seguros para meter en una URL, un nombre de archivo o una cabecera de petición sin escapar — notablemente más cortos que la forma con guiones de 36 caracteres de un UUID. La marca de tiempo de 48 bits no se agota en mucho tiempo: puede representar fechas hasta el año 10889 antes de que el contador de milisegundos se desborde.
Los ULIDs no son la herramienta adecuada para todo. La marca de tiempo incrustada revela cuándo se creó un registro, lo cual es una ventaja para depurar y ordenar pero una pequeña fuga de información si prefieres no exponer eso. Y si tu stack está comprometido con el tipo UUID, puede que prefieras UUIDv7, que aplica la misma idea de prefijo de tiempo dentro del formato UUID estándar. Pero cuando quieres identificadores cortos, seguros para URL y ordenables que puedas acuñar en cualquier nodo y de los que puedas leer una marca de tiempo, un ULID es un excelente valor por defecto — y como son solo 128 bits, siempre puedes convertirlo hacia y desde un UUID con la pestaña Convertir de esta herramienta.
// Browser / Node with the `ulid` package
import { ulid, decodeTime } from 'ulid';
const id = ulid(); // e.g. 01KVT0F720ZK9N4T2QX7VR8WMC
const ts = decodeTime(id); // 1782210600000 -> 2026-06-23T10:30:00.000Z
// Monotonic factory: strictly increasing within the same millisecond
import { monotonicFactory } from 'ulid';
const next = monotonicFactory();
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WMC
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WMD
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WME Características principales
Generar, Decodificar y Convertir en una sola página
Tres pestañas cubren todo el flujo de trabajo del ULID: acuñar ULIDs nuevos, decodificar uno existente para leer su marca de tiempo y convertir sin pérdidas entre ULID y UUID. La mayoría de las herramientas de la competencia solo hacen lo primero; aquí el ciclo completo vive en una sola página.
Decodificador de marca de tiempo
Pega cualquier ULID y lee el milisegundo exacto en que se creó — mostrado en UTC, en tu hora local y como milisegundos Unix en bruto — además del segmento de aleatoriedad de 80 bits. Audita cuándo se acuñó un identificador sin ninguna consulta a la base de datos.
Conversión ULID ↔ UUID sin pérdidas
Un ULID y un UUID son ambos de 128 bits, así que la conversión es exacta y reversible. La pestaña Convertir detecta automáticamente qué formato pegaste y produce el otro, permitiéndote tender un puente entre un ULID ordenable y una columna o API tipada con UUID sin perder un solo bit.
Modo monotónico
¿Necesitas un orden estricto incluso para IDs creados en el mismo milisegundo? El modo monotónico incrementa la aleatoriedad para que cada ULID sea garantizadamente mayor que el último, manteniendo perfectamente ordenado un bucle de inserción ajustado.
Generación en lote
Crea hasta 50 ULIDs a la vez y copia todo el conjunto con Copiar Todo. Ideal para sembrar fixtures de prueba, inserciones masivas o poblar una tabla de búsqueda sin hacer clic cincuenta veces.
Marca de tiempo personalizada
Incrusta un momento concreto en lugar del actual — útil para datos de prueba deterministas o para retrodatar registros durante una migración preservando la propiedad de ordenación.
Aleatoriedad criptográficamente segura
Los 80 bits aleatorios provienen de crypto.getRandomValues, el CSPRNG del navegador — nunca Math.random — así que cada ULID es impredecible y las colisiones dentro del mismo milisegundo son ínfimamente improbables.
100 % privado, solo en el navegador
Cada ULID se genera, decodifica y convierte enteramente en tu dispositivo. Sin peticiones de red, sin registro, sin almacenamiento — compruébalo tú mismo en Herramientas de desarrollador → Red. Los identificadores nunca llegan a un tercero.
Ejemplos de ULID
Generar un único ULID
Mode: Standard · Quantity: 1
01KVT0F720ZK9N4T2QX7VR8WMC
Un ULID son 26 caracteres de Base32 de Crockford. Los primeros 10 caracteres codifican una marca de tiempo de 48 bits en milisegundos y los últimos 16 codifican 80 bits de aleatoriedad criptográficamente segura extraída de crypto.getRandomValues. Como la marca de tiempo va primero y Base32 conserva el orden de los bytes, los ULIDs generados más tarde siempre se ordenan después de los anteriores como simples cadenas — sin necesidad de un índice aparte. Haz clic en Copiar para tomar el valor; vuelve a hacer clic en Generar para obtener uno nuevo.
Decodificar un ULID para leer su marca de tiempo
01ARYZ6S41TSV4RRFFQ69G5FAV
Timestamp (UTC): 2016-07-30T22:36:16.385Z · Randomness: TSV4RRFFQ69G5FAV
Decodificar revierte los primeros 10 caracteres al valor de 48 bits en milisegundos incrustado en el momento de la creación — aquí 1469918176385 ms, que es 2016-07-30T22:36:16.385Z. Este es el ejemplo canónico de la especificación de ULID. La pestaña Decodificar muestra la marca de tiempo en UTC y en tu hora local, los milisegundos Unix en bruto y el segmento de aleatoriedad de 80 bits, para que puedas auditar exactamente cuándo se acuñó un identificador sin ninguna consulta a la base de datos.
Convertir un ULID a un UUID
01KVT0F720ZK9N4T2QX7VR8WMC
019ef407-9c40-fcd3-5268-57e9f784728c
Un ULID y un UUID son ambos exactamente 128 bits, así que la conversión es sin pérdidas y totalmente reversible — los mismos bits simplemente se recodifican de Base32 de Crockford a hexadecimal con guiones. La pestaña Convertir detecta automáticamente si pegaste un ULID o un UUID y convierte a la otra forma. Esto te permite almacenar ULIDs en una columna UUID o entregar un ULID a un sistema que solo habla UUID, y luego volver a convertir cuando necesites de nuevo la cadena ordenable.
Generar en lote ULIDs monotónicos
Mode: Monotonic · Quantity: 3 (same millisecond)
01KVT0F720ZK9N4T2QX7VR8WMC 01KVT0F720ZK9N4T2QX7VR8WMD 01KVT0F720ZK9N4T2QX7VR8WME
Cuando se crean muchos IDs dentro del mismo milisegundo, los ULIDs normales comparten el prefijo de tiempo de 10 caracteres pero sus colas aleatorias quedan desordenadas. El modo monotónico lo soluciona: dentro de un milisegundo incrementa en uno la aleatoriedad anterior, de modo que cada ULID es estrictamente mayor que el último y un lote permanece perfectamente ordenado. Fíjate en que los tres valores difieren solo en el carácter final (C, D, E) — ideal para inserciones de alto rendimiento donde el orden debe mantenerse incluso a tasas inferiores al milisegundo.
Generar un ULID para una fecha concreta
Custom time: 2026-06-23 10:30:00 UTC
01KVT0F720… (time component 01KVT0F720)
Establece una marca de tiempo personalizada y el generador incrusta ese momento exacto en lugar del actual, rellenando aun así la aleatoriedad desde un RNG seguro. El componente de tiempo de 10 caracteres para 2026-06-23T10:30:00.000Z es 01KVT0F720. Esto resulta útil para sembrar fixtures de prueba con identificadores deterministas y ordenados por tiempo, o para retrodatar registros en una migración manteniendo intacta la propiedad de ordenación.
Cómo usar el generador de ULID
- 1
Elige un modo de generación
El modo Standard da a cada ULID aleatoriedad nueva de 80 bits. El modo Monotonic garantiza que los ULIDs creados dentro del mismo milisegundo sean estrictamente crecientes — elígelo para inserciones de alto rendimiento donde el orden debe mantenerse incluso a tasas inferiores al milisegundo.
- 2
Fija la cantidad, las mayúsculas y (opcionalmente) una hora personalizada
Genera de 1 a 50 ULIDs a la vez. La salida es en MAYÚSCULAS por defecto — la forma canónica del ULID — o cámbiala a minúsculas. Deja la hora vacía para sellar el momento actual, o fija una marca de tiempo personalizada para incrustar un momento concreto en fixtures o registros retrodatados.
- 3
Genera y copia
Haz clic en Generar ULID. Usa Copiar en cualquier valor individual, o Copiar Todo para tomar el lote completo como texto separado por saltos de línea listo para pegar en código, un archivo de seed o una hoja de cálculo.
- 4
Decodifica un ULID para leer su marca de tiempo
En la pestaña Decodificar, pega cualquier ULID para extraer la marca de tiempo de creación de 48 bits en UTC y hora local, los milisegundos Unix en bruto y la aleatoriedad de 80 bits — enteramente en tu navegador, sin necesidad de consulta alguna.
- 5
Convierte entre ULID y UUID
En la pestaña ULID ↔ UUID, pega un ULID o un UUID; la herramienta detecta automáticamente la entrada y convierte al otro formato sin pérdidas. Almacena ULIDs en columnas UUID, o entrega un ULID a un sistema que solo acepta UUID y vuelve a convertir cuando necesites la cadena ordenable.
Common Errors
Tratar como ordenados los ULIDs del mismo milisegundo
Los ULIDs normales creados dentro de un milisegundo comparten el prefijo de tiempo pero tienen colas aleatorias desordenadas, así que su orden relativo es indefinido. Si dependes de un orden estricto a esa tasa, usa el modo monotónico en su lugar.
Standard mode, 3 IDs in one ms → order within the ms is random
Monotonic mode, 3 IDs in one ms → …WMC < …WMD < …WME
Esperar que un ULID convertido sea un UUIDv4 válido
Convertir un ULID a forma UUID recodifica los mismos 128 bits; no fija los campos de versión y variante del UUID. El resultado es una cadena UUID de 128 bits válida pero no se reportará como versión 4 ni 7 si una biblioteca inspecciona esos bits.
uuid.version(ulidToUuid(id)) → not 4 (bits are the ULID's)
Treat it as an opaque 128-bit value, or generate a real UUIDv7 instead
Usar i, l, o minúsculas en un ULID a mano
La Base32 de Crockford excluye I, L, O y U. Los decodificadores mapean I y L a 1 y O a 0, pero teclear esas letras a mano en un ULID es propenso a errores. Copia los ULIDs en lugar de reescribirlos.
01ARYZ6S41TSV4RRFFQ69G5FAO → ambiguous O
01ARYZ6S41TSV4RRFFQ69G5FAV → canonical characters only
Para qué se usan los ULIDs
- Claves primarias de base de datos que permanecen ordenadas
- Usa ULIDs como claves primarias para obtener la generación sin coordinación de un UUID con la localidad de inserción de un entero autoincremental. Como llevan prefijo de tiempo, las filas nuevas se añaden cerca del final de un índice B-tree en lugar de dispersarse como UUIDv4, manteniendo rápidas las inserciones y compacto el índice a medida que crece la tabla.
- Sistemas distribuidos sin una secuencia central
- Genera identificadores en cualquier nodo — servicio, edge worker o cliente — sin contador compartido ni coordinación de colisiones, y aun así ordena todo por tiempo de creación a posteriori. Los ULIDs dan a los microservicios una clave única y ordenada sin una vuelta a la base de datos para asignarla.
- Registros de eventos e IDs de mensajes
- Sella eventos, líneas de log o mensajes de cola con ULIDs monotónicos para que permanezcan en estricto orden cronológico incluso cuando se producen muchos dentro del mismo milisegundo. Escanear por rango una ventana de tiempo se convierte en una simple comparación de cadenas.
- Identificadores públicos seguros para URL
- Un ULID son 26 caracteres sin guiones y con un alfabeto seguro para URL, así que se mete en una ruta, un nombre de archivo o una cabecera sin escapar y es más corto que un UUID de 36 caracteres. Decodifica la marca de tiempo incrustada más tarde para ver cuándo se creó el recurso.
- Puente hacia un sistema que solo acepta UUID
- ¿Trabajas con una columna de base de datos o una API que solo acepta UUIDs? Genera ULIDs ordenables, conviértelos a forma UUID para almacenarlos o transportarlos, y vuelve a convertir cuando necesites la cadena ordenable compacta — el valor de 128 bits se preserva exactamente en ambas direcciones.
- Fixtures de prueba deterministas
- Siembra las pruebas con ULIDs en marcas de tiempo elegidas usando la opción de hora personalizada, de modo que los fixtures sean reproducibles y ya estén ordenados por tiempo. Decodifícalos en las aserciones para verificar el tiempo de creación que registró tu código.
Cómo funcionan los ULIDs
- Disposición de 128 bits: 48 bits de tiempo + 80 bits de aleatoriedad
- Un ULID es exactamente 128 bits. Los 48 bits altos son una marca de tiempo Unix en milisegundos; los 80 bits bajos son aleatorios. Codificados en Base32 de Crockford a 5 bits por carácter, eso son 10 caracteres para el tiempo y 16 para la aleatoriedad — 26 caracteres en total. El carácter inicial es siempre 7 o inferior porque 48 bits no llenan el grupo superior de 5 bits.
- Codificación Base32 de Crockford
- Los ULIDs usan el alfabeto Base32 de Crockford (0–9 y A–Z excluyendo I, L, O y U). Descartar esas cuatro letras evita la confusión con los dígitos 1 y 0 y permite a los decodificadores tratar la cadena de forma insensible a mayúsculas, mapeando I y L a 1 y O a 0 en la entrada. El alfabeto está ordenado, que es lo que hace que la cadena codificada se ordene de la misma manera que los bits subyacentes.
- Ordenabilidad lexicográfica
- Como la marca de tiempo es el componente más significativo y el alfabeto Base32 conserva el orden, comparar dos ULIDs como cadenas da el mismo resultado que comparar sus valores de 128 bits, lo que da el mismo resultado que comparar sus tiempos de creación. Esto es lo que permite que un simple ORDER BY u ordenamiento de array produzca orden cronológico sin ningún índice adicional.
- Monotonía dentro de un milisegundo
- La opción monotónica de la especificación de ULID mantiene estable el orden para IDs acuñados en el mismo milisegundo: la aleatoriedad del primer ID de un milisegundo se genera con normalidad, y cada ID posterior de ese milisegundo es el valor aleatorio anterior más uno. Esta herramienta lo implementa incrementando la aleatoriedad de 80 bits como un entero big-endian.
- Aleatoriedad segura vía crypto.getRandomValues
- Los 80 bits aleatorios se rellenan desde crypto.getRandomValues, el CSPRNG de Web Crypto, no Math.random. Con 80 bits de entropía, generar incluso millones de ULIDs en el mismo milisegundo mantiene la probabilidad de colisión despreciablemente pequeña.
- ULID ↔ UUID es una pura recodificación
- Convertir entre ULID y UUID no cambia ningún bit — recodifica los mismos 128 bits de Base32 de Crockford a hexadecimal con guiones o viceversa. Como resultado, el ciclo de ida y vuelta es exacto: un ULID convertido a UUID y de vuelta es idéntico byte a byte al original. Ten en cuenta que los bytes de un ULID no fijan los campos de versión y variante del UUID, así que el UUID resultante es un valor de 128 bits válido pero no un UUIDv4 ni v7 etiquetado con versión.
Buenas prácticas de ULID
- Usa el modo monotónico para inserciones de alto rendimiento
- Si tu sistema puede crear más de un identificador por milisegundo y dependes del orden, genera ULIDs monotónicos. Los ULIDs normales están desordenados dentro de un milisegundo; los monotónicos son estrictamente crecientes, así que un lote permanece ordenado por rápido que lo acuñes.
- Almacena los ULIDs de forma compacta
- Un ULID son 128 bits — almacénalo como 16 bytes binarios o una columna tipada con UUID en lugar de como un campo de texto de 26 caracteres cuando importen el espacio y el tamaño del índice. Convierte a la cadena Base32 solo en los bordes donde lo ven humanos o URLs. La pestaña Convertir de esta herramienta te da la forma UUID para almacenar.
- Recuerda que la marca de tiempo es visible
- Un ULID revela su tiempo de creación a cualquiera que pueda leerlo. Eso es estupendo para depurar y ordenar, pero si exponer el tiempo de creación es un problema — pongamos, en un identificador de cara al público — sopesa esa fuga, o usa un UUIDv4 totalmente aleatorio donde el orden no importe.
- Genera siempre con un CSPRNG
- La garantía de unicidad depende de que los 80 bits aleatorios sean impredecibles. Usa una fuente criptográficamente segura como crypto.getRandomValues, como hace esta herramienta — nunca Math.random, cuya predecibilidad podría permitir que los identificadores colisionen o sean adivinados.
- Elige ULID o UUIDv7 de forma deliberada
- Ambos dan IDs de 128 bits ordenados por tiempo. Elige ULID para la cadena segura para URL más corta; elige UUIDv7 cuando debas permanecer en el formato UUID estándar con bits de versión y variante. Estandariza uno por sistema, y usa la pestaña Convertir cuando necesites cruzar la frontera.
ULID — preguntas frecuentes
¿Qué es un ULID?
ULID vs UUID — ¿cuál debería usar?
¿Son los ULIDs ordenables?
¿Cómo decodifico la marca de tiempo de un ULID?
¿Qué es un ULID monotónico?
¿Es este generador de ULID seguro y privado?
¿Cuál es la diferencia entre ULID y UUIDv7?
Herramientas relacionadas
Ver todas las herramientas →Generador y verificador de hash bcrypt
Herramientas de Seguridad
Genera y verifica hashes bcrypt de contraseñas online — coste ajustable, prefijos $2b$/$2a$/$2y$. 100 % en tu navegador; tu contraseña nunca se sube.
Decodificador JWT
Herramientas de Seguridad
Decodifica tokens JWT online con nuestro decodificador JWT gratis. Inspecciona encabezado, carga útil, firma, expiración y reclamaciones al instante. 100% navegador — tu token nunca sale del dispositivo. Sin registro ni rastreo.
Codificador y Generador JWT
Herramientas de Seguridad
Generador y codificador JWT gratis online. Construye el encabezado y la carga útil, firma con HS256, RS256 o ES256 al instante. 100% en el navegador — tu secreto y tu clave nunca salen de tu dispositivo.
Generador de secreto JWT — HS256/384/512
Herramientas de Seguridad
Genera un secreto JWT fuerte y conforme a la RFC para HS256/384/512 — 100 % en tu navegador, nunca enviado a un servidor. base64url, base64 o hex para .env.
Generador de Hash MD5 Online y Verificador de Checksum
Herramientas de Seguridad
Genera hashes MD5, SHA-256, SHA-1 y SHA-512 gratis — 100% en tu navegador, sin registro. Hashea texto o archivos, verifica checksums y compara hashes con un clic. Tus datos permanecen privados.
Generador de Contraseñas Aleatorias y Seguras
Herramientas de Seguridad
Genera contraseñas seguras al instante — gratis, sin registro, 100% en tu navegador. Personaliza la longitud y los tipos de caracteres, genera hasta 50 contraseñas. Medidor de fortaleza con análisis de entropía.