UUID / GUID / ULID Generator

¿Qué es un UUID?

Un UUID (Identificador Único Universal) es un identificador de 128 bits, escrito convencionalmente como 32 dígitos hexadecimales divididos en cinco grupos (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). Los UUID versión 4 — la variante más común, y la que genera esta herramienta — se generan a partir de bits aleatorios, en vez de derivarse de una marca de tiempo o una dirección de hardware. Con 122 bits aleatorios, la probabilidad de que dos valores UUID v4 generados al azar alguna vez coincidan es astronómicamente baja. GUID (Identificador Global Único) es el nombre que usa Microsoft para exactamente el mismo formato, usado en Windows, .NET y SQL Server — un UUID v4 generado aquí es un GUID válido, y ambos términos se usan indistintamente.

¿Qué es un ULID?

Un ULID (Identificador Único Universal Ordenable Lexicográficamente) es una alternativa de 26 caracteres a los UUID. Codifica una marca de tiempo de 48 bits en milisegundos en sus primeros 10 caracteres y 80 bits de aleatoriedad en los 16 restantes, usando el alfabeto Base32 de Crockford (que excluye los caracteres fácilmente confundibles I, L, O y U). Como la marca de tiempo va primero, los ULID generados después siempre se ordenan después de los generados antes — útil como clave primaria de base de datos, donde el orden aleatorio de los UUID perjudica la localidad del índice. Consulta la especificación de ULID para el formato completo.

UUID vs. ULID — ¿cuál debería usar?

Preguntas frecuentes

¿Cuál es la diferencia entre un UUID y un GUID?

Ninguna, estructuralmente — son el mismo formato de 128 bits. "UUID" es el término usado en el estándar RFC y por la mayoría de los ecosistemas fuera de Microsoft; "GUID" es el nombre que le da Microsoft, usado en Windows, .NET, COM y SQL Server. Un UUID v4 generado por esta herramienta es un GUID válido y viceversa; puedes usar cualquiera de los dos términos indistintamente.

¿Pueden dos valores UUID v4 llegar a coincidir?

En teoría, sí — pero en la práctica, no. Con 122 bits aleatorios, necesitarías generar aproximadamente 2.7 trillones de UUID antes de tener un 50% de probabilidad de alguna coincidencia, según la paradoja del cumpleaños. No se considera un riesgo práctico para prácticamente ninguna aplicación.

¿Los ULID generados aquí se pueden adivinar a partir de su marca de tiempo?

La parte de la marca de tiempo no es secreta — cualquiera puede ver aproximadamente cuándo se generó un ULID. Los 80 bits aleatorios siguen haciendo que el valor completo sea imposible de adivinar, pero si eso es una preocupación para tu caso de uso (por ejemplo, usarlo como un token imposible de adivinar), usa un UUID v4 o un token aleatorio dedicado en su lugar.

¿Esto es compatible con las funciones UUID/GUID de Python, Java o .NET?

Sí — UUID v4 es un formato estándar (RFC 4122), así que un valor generado aquí es idéntico en forma a uno de uuid.uuid4() de Python, UUID.randomUUID() de Java, o Guid.NewGuid() de .NET. A diferencia, por ejemplo, de la sintaxis de regex, no hay un dialecto específico de cada lenguaje del que preocuparse — un UUID es un UUID en todas partes.

¿Esta herramienta genera identificadores en un servidor?

No — UUID v4 usa crypto.randomUUID() y ULID usa crypto.getRandomValues(), ambos integrados en tu navegador. Nada se envía a los servidores de Pingfloat.