Toolbit

Generador de UUID

Genera UUID v4 aleatorios y UUID v7 ordenables por tiempo, de a uno o en lote, e inspecciona la versión, la variante y la fecha de cualquier UUID.

Qué es un UUID

Un UUID (Universally Unique Identifier, también llamado GUID en el mundo Microsoft) es un identificador de 128 bits pensado para que cualquier sistema pueda generarlo por su cuenta, sin consultar a un servidor central ni a una base de datos, con una probabilidad prácticamente nula de repetir uno ya existente. Se escribe como 32 dígitos hexadecimales agrupados en cinco bloques de 8, 4, 4, 4 y 12 caracteres:

017f22e2-79b0-7cc3-98c4-dc0c0c07398f
              ↑    ↑
          versión  variante

El formato lo define el RFC 9562, publicado en 2024, que reemplazó al RFC 4122 de 2005 y agregó las versiones 6, 7 y 8. Dos posiciones son fijas en cualquier UUID estándar: el primer dígito del tercer bloque indica la versión (cómo se generó) y el primer dígito del cuarto bloque, la variante (que en los UUID actuales siempre es 8, 9, a o b).

Las versiones

VersiónCómo se generaUso actual
1Timestamp de 60 bits + dirección MAC del equipoHeredado; expone la MAC y el momento de creación
3Hash MD5 de un espacio de nombres + un nombreIdentificadores deterministas, desaconsejado frente a v5
4122 bits aleatoriosEl más usado: identificadores sin información
5Hash SHA-1 de un espacio de nombres + un nombreMismo nombre → mismo UUID, siempre
6Como v1, con el timestamp reordenado para que sea ordenableMigraciones desde v1
7Timestamp Unix en milisegundos + 74 bits aleatoriosClaves primarias en bases de datos
8Formato libre, definido por cada aplicaciónCasos especiales

Esta herramienta genera las dos versiones que conviene usar hoy en casi cualquier proyecto: v4 cuando solo hace falta un identificador único y v7 cuando además conviene que los identificadores queden ordenados por fecha de creación. La comparación detallada, con el impacto en los índices de bases de datos y lo que cada una revela, está en la guía UUID v4 vs v7: cuál usar y por qué importa en la base de datos.

Cómo usar la herramienta

  • Generar: elige la versión y la cantidad (hasta 100 por lote) y copia todos los UUID con un clic. Las opciones de mayúsculas y sin guiones sirven para sistemas que esperan otro formato; el valor es el mismo.
  • v7 en lote: dentro de un mismo milisegundo, los 12 bits que siguen al timestamp funcionan como contador, tal como permite el RFC 9562, así que un lote generado de una vez sale ya ordenado.
  • Inspeccionar: pega cualquier UUID, con o sin guiones, entre llaves o con el prefijo urn:uuid:, y la herramienta muestra su forma canónica, su versión, su variante y, en las versiones 1, 6 y 7, la fecha y hora en que fue creado.

¿Se pueden repetir?

Un UUID v4 tiene 122 bits aleatorios, es decir, unos 5,3 × 10³⁶ valores posibles. Por la paradoja del cumpleaños, la probabilidad de que aparezca al menos una colisión crece con el cuadrado de la cantidad generada, pero parte de un número tan grande que en la práctica no es un riesgo:

UUID v4 generadosProbabilidad de al menos una colisión
mil millones (10⁹)≈ 1 en 10¹⁹
un billón (10¹²)≈ 1 en 10¹³
mil billones (10¹⁵)≈ 1 en 10 millones
2,7 × 10¹⁸≈ 50 %

Para llegar a una probabilidad del 50 % habría que generar mil millones de UUID por segundo durante unos 86 años. El riesgo real no es matemático sino de implementación: un generador que no usa una fuente criptográfica (como Math.random()) o una máquina virtual clonada con el mismo estado del generador. Esta herramienta usa crypto.getRandomValues() del navegador.

UUID en bases de datos

Guardar un UUID como texto (CHAR(36)) ocupa 36 bytes por fila más los índices; como binario ocupa 16. Los motores más usados tienen soporte directo:

MotorTipo recomendadoGeneración en el servidor
PostgreSQLuuid (16 bytes)gen_random_uuid() (v4); uuidv7() desde PostgreSQL 18
MySQLBINARY(16)UUID() genera v1; UUID_TO_BIN() y BIN_TO_UUID() convierten
SQL ServeruniqueidentifierNEWID() (aleatorio), NEWSEQUENTIALID() (secuencial)
SQLiteBLOB de 16 bytes o TEXTSin función nativa: se genera en la aplicación

En la aplicación, crypto.randomUUID() (navegadores y Node.js) y uuid.uuid4() (Python) generan v4. Para v7, Python lo incluye a partir de la versión 3.14 (uuid.uuid7()), y en otros lenguajes suele hacer falta una librería.

Un UUID no es una contraseña

Aunque un UUID v4 bien generado es muy difícil de adivinar, el RFC 9562 advierte expresamente que no hay que asumir que los UUID sean secretos. Muchas implementaciones no usan una fuente criptográfica, los v1 y v7 son en buena parte predecibles, y los identificadores suelen terminar en URLs, logs y respuestas de API. Para enlaces de restablecimiento de contraseña, tokens de sesión o claves de API, lo correcto es un token aleatorio dedicado, generado con el mismo cuidado que una contraseña.

Privacidad

Los UUID se generan en el navegador con la API criptográfica del propio dispositivo y nunca se envían a un servidor. Tampoco se generan durante la construcción del sitio: cada visita obtiene valores nuevos.

Preguntas frecuentes

¿Qué diferencia hay entre UUID y GUID?

Ninguna en la práctica. GUID (Globally Unique Identifier) es el nombre que usa Microsoft para el mismo formato de 128 bits. La única particularidad es histórica: algunas APIs de Windows guardan los primeros tres bloques en orden little-endian, así que el mismo GUID puede aparecer con los bytes invertidos si se lee en binario.

¿Conviene usar UUID v7 como clave primaria?

En la mayoría de los casos, sí. Como los v7 empiezan con el timestamp, los valores nuevos se insertan al final del índice, igual que un entero autoincremental, en lugar de en posiciones aleatorias como los v4. El costo es que cada UUID revela cuándo se creó el registro; si esa información es sensible, conviene usar v4 o no exponer el identificador.

¿Es seguro generar UUID en el navegador?

Sí, siempre que se use la API criptográfica: crypto.getRandomValues() o crypto.randomUUID(). Lo que no es seguro es generarlos con Math.random(), cuya salida puede predecirse. Esta herramienta usa crypto.getRandomValues() y genera los valores solo en el navegador de quien la usa.