Para qué sirve
Un UUID es un identificador de 128 bits que puedes generar en cualquier máquina, sin coordinarte con nadie, con la práctica certeza de que nadie más generará el mismo. Es la alternativa habitual a los identificadores autoincrementales cuando varios sistemas insertan datos a la vez o cuando no quieres exponer cuántos registros tienes.
Esta herramienta genera UUID v4 (completamente aleatorios) y v7 (ordenables por tiempo), de uno en uno o hasta cincuenta de golpe, y te deja copiarlos con el formato que necesites: en mayúsculas, sin guiones o entre llaves al estilo GUID de Windows.
Los identificadores se generan en tu navegador con el generador criptográfico del sistema. No se envían a ningún servidor, así que puedes usarlos en producción sin preocuparte de que hayan pasado por otro sitio.
Cómo se calcula
Un UUID v4 son 122 bits aleatorios más 6 bits fijos que identifican la versión y la variante. Se representa en 32 dígitos hexadecimales agrupados en cinco bloques separados por guiones.
Un UUID v7 sustituye los primeros 48 bits por la marca de tiempo Unix en milisegundos y deja el resto aleatorio. Al empezar por el tiempo, ordenarlos alfabéticamente equivale a ordenarlos cronológicamente, algo que el v4 no permite y que tiene consecuencias prácticas importantes en bases de datos.
La aleatoriedad procede de crypto.getRandomValues, el generador criptográficamente seguro del navegador. Math.random() no sirve para esto: sus valores son predecibles y podrían repetirse.
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx- x
- dígito hexadecimal (0-9, a-f)
- M
- versión: 4 o 7
- N
- variante: 8, 9, a o b
Estructura definida en el RFC 9562, que sustituyó al RFC 4122.
Ejemplo resuelto
Comparar un v4 y un v7 generados en el mismo instante
- UUID v4
- 9f1b0c2e-7a4d-4f8b-b3d1-2e6c5a0f9d84
- UUID v7
- 0192f3a1-8c40-7b2e-9f15-6d3a7c81b402
- En el v4, el 13.º dígito es un 4: indica la versión.
- En el v7 ese mismo dígito es un 7, y los 12 primeros (0192f3a18c40) son la marca de tiempo en milisegundos.
- Si generas varios v7 seguidos, comparten prefijo y quedan ordenados; los v4 salen desordenados.
Ambos son válidos y únicos. El v7 además conserva el orden de creación al ordenarlos como texto.
Cuándo usar v4 y cuándo v7
Usa v4 cuando el identificador vaya a ser público y no quieras filtrar información: al ser puro azar, no revela ni cuándo se creó el registro ni cuántos hay. Es la opción por defecto para tokens, claves de recursos expuestos o referencias en una URL.
Usa v7 como clave primaria en bases de datos. Los índices B-tree se degradan cuando las claves llegan desordenadas, porque cada inserción cae en una página distinta y provoca fragmentación; con v7 las inserciones son casi secuenciales y el rendimiento se acerca al de un autoincremental. El coste es que el identificador revela el momento de creación.
| Criterio | UUID v4 | UUID v7 |
|---|---|---|
| Ordenable por tiempo | No | Sí |
| Revela cuándo se creó | No | Sí (milisegundos) |
| Rendimiento como clave primaria | Regular | Bueno |
| Uso recomendado | Tokens e IDs públicos | Claves primarias |
¿Se pueden repetir dos UUID?
En teoría sí; en la práctica, no. Con 122 bits aleatorios harían falta unos 2,7 × 10¹⁸ identificadores para tener un 50 % de probabilidad de una sola colisión. Generando mil millones de UUID por segundo, se tardarían unos 85 años en alcanzar esa cifra.
El riesgo real no es matemático sino de implementación: usar un generador aleatorio débil. Por eso esta herramienta emplea el generador criptográfico del navegador y no Math.random().
Preguntas frecuentes
¿Es lo mismo un UUID que un GUID?
Sí. GUID (Globally Unique Identifier) es el nombre que usa Microsoft para lo mismo. La única diferencia habitual es de formato: en el mundo Windows suelen escribirse en mayúsculas y entre llaves, algo que puedes activar en las opciones de esta herramienta.
¿Son seguros estos UUID para usarlos como token de sesión?
Un v4 generado con un generador criptográfico tiene 122 bits de entropía, suficiente para un token. Aun así, para sesiones y recuperación de contraseñas es preferible un token diseñado para ese fin, con su propia caducidad y firma; un UUID no caduca ni se invalida por sí mismo.
¿Puedo usar un UUID v7 si necesito ocultar la fecha de creación?
No deberías. Los primeros 48 bits son la marca de tiempo en milisegundos y son triviales de descifrar. Si el identificador es público y esa información es sensible, usa v4.
¿Cuánto ocupa un UUID en base de datos?
16 bytes si se almacena en binario (tipos UUID nativos de PostgreSQL, BINARY(16) en MySQL) y 36 si se guarda como texto con guiones. La diferencia se nota en tablas grandes y en el tamaño de los índices, así que conviene usar el tipo nativo cuando exista.
¿Los identificadores generados aquí se guardan en algún sitio?
No. Se generan en tu navegador y desaparecen al recargar la página. No se envían a ningún servidor ni quedan registrados.
¿Qué pasó con las versiones 1, 3 y 5?
Siguen existiendo. La v1 se basa en la dirección MAC y la hora, lo que filtra información del equipo; la v3 y la v5 generan un UUID determinista a partir de un nombre mediante MD5 y SHA-1 respectivamente, útiles cuando necesitas que la misma entrada produzca siempre el mismo identificador. Para uso general, v4 y v7 cubren prácticamente todos los casos.
Fuentes
Toda la información de esta página se refiere a: Generador de UUID.