Saltar al contenido

Generador de CUID Eficiente para Identificadores Únicos en Sistemas

Genere identificadores únicos resistentes a colisiones (CUID) para sistemas distribuidos, bases de datos y aplicaciones web. Cree ID escalables y ordenables al instante.

Generador de CUID

Genere un ID resistente a colisiones de forma rápida y sencilla.

Haz clic en «Generar nuevo CUID» para crear un identificador.
Calculadora de carga...
📚

Documentación

¿Qué es un CUID?

Un CUID (identificador único resistente a colisiones) es una cadena corta de letras y dígitos que se utiliza para etiquetar un registro, archivo o evento, de modo que ningún par de elementos comparta el mismo nombre. Esta herramienta genera CUID2, la versión actual del formato, mediante la biblioteca @paralleldrive/cuid2. Cada identificador tiene 25 caracteres, contiene únicamente letras minúsculas y dígitos, y se crea por completo en el navegador; no se envía nada a un servidor.

Cómo usar este generador de CUID

  1. Haz clic en Generar un CUID nuevo para crear un identificador.
  2. Haz clic en Copiar al portapapeles para copiarlo.
  3. Pega el identificador en una base de datos, un nombre de archivo o una aplicación.
  4. Haz clic de nuevo en Generar para obtener otro identificador. Las colisiones entre valores CUID2 independientes son extremadamente improbables, aunque no son matemáticamente imposibles.
  5. Haz clic en Restablecer para borrar el resultado.

El identificador generado también se almacena en la URL de la página, por lo que se puede compartir o guardar como marcador un enlace al resultado.

Estructura y fórmula de CUID2

Un CUID2 se construye de la siguiente manera:

1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2

La función hash combina cuatro entradas privadas: la hora actual, un contador por sesión, una huella digital del equipo anfitrión y entropía aleatoria. Las procesa mediante SHA3-512, convierte el resultado a base 36 (dígitos 0–9 y letras de la a a la z) y luego conserva 24 de esos caracteres. La letra inicial aleatoria hace que el identificador terminado tenga 25 caracteres, que es la longitud configurada para esta herramienta.

Solo el primer carácter es independiente: una letra aleatoria colocada al principio para que todos los identificadores comiencen por una letra y no por un dígito. Muchos sistemas, como los nombres de tablas y columnas de SQL, exigen que los identificadores comiencen por una letra, por lo que esto permite usar un CUID2 como nombre casi en cualquier lugar. Todos los caracteres posteriores a esa primera letra forman parte de un único cuerpo hash continuo y opaco; no hay secciones independientes.

Como el hash solo funciona en una dirección, ninguna de sus entradas puede recuperarse a partir del identificador terminado. Un CUID2 no contiene una marca de tiempo, un contador ni una huella recuperables. Es una decisión deliberada de privacidad y seguridad: un identificador por sí solo no puede revelar cuándo ni dónde se creó.

Ejemplo práctico

La generación de un identificador con esta herramienta podría producir:

1vcpuhcj51eomj1o31dnlqopu0
2

Aquí, v es la letra inicial aleatoria, y cpuhcj51eomj1o31dnlqopu0 (24 caracteres) es el cuerpo hash. Las dos partes parecen diferentes únicamente porque se garantiza que el primer carácter sea una letra; el cuerpo hash puede contener una combinación de letras y dígitos.

Por qué los sistemas usan CUID2

  • No requiere coordinación. Cualquier máquina puede generar un identificador válido por sí sola, sin solicitar el siguiente valor a un servidor central o una base de datos.
  • Resistencia a colisiones. La combinación de la hora, el contador, la huella del equipo anfitrión y la entropía aleatoria hace extremadamente improbable que dos máquinas produzcan el mismo identificador, incluso al generar muchos identificadores por segundo.
  • Compatible con URL. Un CUID2 utiliza únicamente letras minúsculas y dígitos, por lo que nunca necesita codificarse para usarse en una dirección web.
  • Generación rápida y privada. Como esta herramienta ejecuta el generador en el navegador, los identificadores se crean al instante y nunca salen del dispositivo.

Los identificadores CUID2 no se pueden ordenar por hora de creación. A diferencia de un número autoincremental de base de datos o del formato CUID anterior (versión 1), un CUID2 oculta su marca de tiempo dentro del hash en lugar de almacenarla a la vista. Las aplicaciones que necesiten ordenar los registros por orden de creación deben almacenar una columna de marca de tiempo independiente junto al identificador.

CUID2 frente a UUID e identificadores autoincrementales

CaracterísticaCUID2UUID v4Autoincremental
Longitud25 caracteres36 caracteres (con guiones)Varía (normalmente es un número corto)
Conjunto de caracteresLetras minúsculas y dígitosDígitos hexadecimales y guionesDígitos
Requiere coordinación centralNoNoSí (una secuencia de base de datos)
Ordenable por fecha de creaciónNoNoSí
Compatible con URL sin codificaciónSíSíSí

CUID2 y UUID v4 resuelven el mismo problema: generar identificadores sin coordinación central. CUID2 es más corto y utiliza un conjunto de caracteres más reducido, lo que facilita su lectura y su pegado en una URL. Un UUID también es seguro en una dirección web, porque el guion es un carácter no reservado en las URL, pero tiene 11 caracteres más.

Usos habituales

  • Claves primarias en bases de datos distribuidas, donde varios servidores insertan filas de forma independiente
  • Identificadores de solicitudes o trazas utilizados para seguir una acción a través de varios microservicios
  • Nombres de archivo para cargas, para que dos archivos nunca se sobrescriban
  • Identificadores de sesión o de tokens para aplicaciones web
  • Identificadores de mensajes en colas como Kafka o RabbitMQ

Una breve historia

El formato CUID original fue publicado por Eric Elliott en 2012 como alternativa a los UUID para aplicaciones distribuidas. CUID2, publicado por el mismo proyecto Paralleldrive, rediseñó el formato en torno a un hash criptográfico y eliminó la marca de tiempo y el contador recuperables que exponía la versión original. Esta herramienta solo genera identificadores CUID2.

Preguntas frecuentes

¿Cuál es la diferencia entre CUID (v1) y CUID2? CUID v1 almacenaba una marca de tiempo y un contador visibles dentro del identificador, lo que permitía ordenar los identificadores, pero también revelaba cuándo y cuántos identificadores se habían creado. CUID2 sustituye esos campos visibles por un hash unidireccional, por lo que no se puede extraer información del identificador.

¿Se pueden ordenar por hora de creación los CUID de esta herramienta? No. Un CUID2 no tiene una marca de tiempo recuperable, por lo que no se pueden ordenar los identificadores según cuándo se generaron con solo observar la cadena.

¿Qué longitud tiene un identificador generado y se puede cambiar? Esta herramienta siempre genera identificadores de 25 caracteres. No ofrece ninguna opción para solicitar una longitud diferente.

¿Pueden dos máquinas diferentes generar el mismo CUID2 al mismo tiempo? En teoría es posible, pero en la práctica es extremadamente improbable. Cada identificador combina una huella específica del equipo con entropía aleatoria, por lo que es muy poco probable que máquinas independientes produzcan alguna vez el mismo hash.

¿Envía esta herramienta algún dato a un servidor? No. El identificador se genera mediante JavaScript ejecutado en el navegador, usando el reloj del sistema local y la aleatoriedad proporcionada por el navegador. No se transmite nada.

¿Puedo usar un CUID2 como clave primaria de una base de datos? Sí. Los identificadores CUID2 funcionan bien como claves primarias en bases de datos distribuidas, ya que cualquier nodo puede generar uno sin consultar una secuencia central. No se ordenan naturalmente por hora de inserción, por lo que una aplicación que necesite ese orden debe conservar una columna created_at independiente.