Oh MyUtils

Generador ULID - Generar IDs Únicos Ordenables en Línea

Genere ULIDs, extraiga marcas de tiempo y convierta entre formatos ULID y UUID. Generación monótona para orden estricto — 100% del lado del cliente, sin envío de datos al servidor.

Monótono
Mayúsculas

Generación Masiva

Cantidad

Preguntas frecuentes

¿Qué es un ULID?

Un ULID (Universally Unique Lexicographically Sortable Identifier) es un identificador de 128 bits codificado como una cadena de 26 caracteres usando Base32 de Crockford. A diferencia de los UUID tradicionales, los ULID incorporan una marca de tiempo Unix de 48 bits (en milisegundos) en los primeros 10 caracteres, seguidos de 80 bits de aleatoriedad criptográfica en los 16 caracteres restantes. Este diseño hace que los ULID sean ordenables lexicográficamente por tiempo de creación manteniendo la unicidad global.

¿Cómo uso este generador de ULID?

Use la pestaña Generar para crear ULIDs individuales o en lote (hasta 1000). Active el modo Monotónico para un orden estricto dentro del mismo milisegundo. Use la pestaña Decodificar para pegar cualquier ULID y extraer su marca de tiempo incorporada (ISO 8601, milisegundos Unix y hora local). Use la pestaña Convertir para convertir entre formatos ULID y UUID. Haga clic en Copiar para copiar cualquier resultado al portapapeles.

¿Mis datos están seguros? ¿Se envía algo a un servidor?

Todas las operaciones se realizan 100% en su navegador usando la API Web Crypto (crypto.getRandomValues()). Ningún dato de ULID, marca de tiempo o UUID se transmite a ningún servidor, se almacena en ninguna base de datos ni se registra en ningún lugar. Puede verificarlo desconectándose de Internet: la herramienta funciona completamente sin conexión.

¿Cuál es la diferencia entre ULID y UUID?

Ambos son identificadores de 128 bits, pero difieren en aspectos clave: ULID tiene 26 caracteres (Base32 de Crockford), UUID tiene 36 caracteres (hexadecimal con guiones). Los ULID son ordenables lexicográficamente por tiempo de creación; los UUID (v4) tienen orden aleatorio. Los ULID no contienen caracteres especiales y son seguros para URL. Los ULID se pueden convertir a/desde UUID ya que ambos son valores de 128 bits.

¿Qué es la generación monotónica de ULID?

Cuando se generan múltiples ULID dentro del mismo milisegundo, la generación estándar asigna valores aleatorios cada vez, lo que puede resultar en ULID desordenados. La generación monotónica resuelve esto incrementando el componente de aleatoriedad en 1 por cada ULID generado en el mismo milisegundo, garantizando un orden lexicográfico estricto. Esto es crítico para sistemas de bases de datos que dependen del orden de los ID.

¿Cuándo debo usar ULID en lugar de UUID?

Use ULID cuando necesite identificadores ordenados por tiempo sin una columna de marca de tiempo separada, mejor rendimiento de índices de base de datos (compatible con B-tree), representación de cadena más corta (26 vs 36 caracteres) o identificadores seguros para URL. Use UUID cuando necesite máxima compatibilidad con el ecosistema, cumplimiento de RFC o metadatos integrados de versión/variante.

Ejemplos de código

// Crockford's Base32 alphabet
const ENCODING = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';

// Generate a ULID
function generateULID() {
  const timestamp = Date.now();
  let ts = timestamp;
  let timestampPart = '';
  for (let i = 9; i >= 0; i--) {
    timestampPart = ENCODING[ts % 32] + timestampPart;
    ts = Math.floor(ts / 32);
  }

  const randomBytes = new Uint8Array(10);
  crypto.getRandomValues(randomBytes);
  const bits = Array.from(randomBytes)
    .map(b => b.toString(2).padStart(8, '0')).join('');
  let randomPart = '';
  for (let i = 0; i < 16; i++) {
    randomPart += ENCODING[parseInt(bits.slice(i*5, i*5+5), 2)];
  }

  return timestampPart + randomPart;
}

console.log(generateULID()); // "01ARZ3NDEKTSV4RRFFQ69G5FAV"

Herramientas relacionadas