Viendo en Español Ver en inglés

Generador de UUID

Genera UUID v4 (aleatorios) o v7 (ordenados por tiempo) en tu navegador. Usa la Web Crypto API para la aleatoriedad.

  1. Elige v4 para UUID aleatorios o v7 para ordenados por tiempo.
  2. Define la Cantidad (hasta 1000) y pulsa Generar.
  3. Usa Copiar todo para tomar la lista completa, o selecciona una línea manualmente.
¿Qué hace?

Los UUID v4 son 122 bits de aleatoriedad criptográficamente fuerte — el estándar de facto para claves de idempotencia, IDs de sesión y cualquier identificador opaco y sin orden. Los UUID v7 insertan una marca de tiempo de 48 bits en milisegundos Unix en los bytes iniciales, por lo que los valores generados en momentos cercanos se ordenan juntos lexicográficamente. Esto hace que v7 encaje mejor como clave primaria de base de datos, donde las inserciones aleatorias pueden fragmentar un índice B-tree.

Ejemplo

Tres UUID v4 (aleatorios, sin orden):

f47ac10b-58cc-4372-a567-0e02b2c3d479
6ba7b810-9dad-11d1-80b4-00c04fd430c8
d1b2c3e4-5678-4abc-9def-0123456789ab

Tres UUID v7 generados dentro del mismo milisegundo (fíjate en el prefijo compartido):

018f8e50-fcaa-7c3c-8d2a-6f5b72e1fd90
018f8e50-fcaa-7c3d-a41f-8c9b07e2c0d1
018f8e50-fcab-7c01-b3e7-1d9a4f5c6e82

Errores comunes y advertencias

Estos son los problemas reales que aparecen al integrar UUID en una aplicación:

  • Usar v4 cuando importa el orden de inserción. Indexar 10 M de v4 aleatorios provoca muchas divisiones de página en el B-tree. Si mantienes v4, asume la amplificación de escritura o cambia la clave primaria a v7.
  • Quitar guiones y perder el nibble de versión. f47ac10b58cc4372a5670e02b2c3d479 sigue siendo un UUID hex válido de 32 caracteres, pero el 13º (4) es el marcador de versión, no un nibble aleatorio. No asumas que los 32 caracteres son aleatorios.
  • Depender de Math.random(). Las bibliotecas antiguas basadas en Math.random() no son criptográficamente fuertes y pueden ser predecibles. Usa crypto.randomUUID() (navegadores y Node 19+) o una biblioteca v7 que lea de crypto.
  • Tratar v7 como una marca de tiempo. Los primeros 48 bits son tiempo, pero el resto es aleatorio, así que dos v7 del mismo milisegundo no se ordenan deterministamente. No confíes en el desempate.
  • Almacenar como VARCHAR(36). Funciona, pero duplica el almacenamiento frente a una columna nativa UUID / BINARY(16) y ralentiza los joins. Usa el tipo nativo de la base (uuid en Postgres, UNIQUEIDENTIFIER en SQL Server).
  • Regex que exige una versión concreta. /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-.../i coincide solo con v4. Si luego emites v7, esa regex rechaza silenciosamente IDs válidos.
Preguntas frecuentes

¿Cuál es la diferencia entre UUID v4 y v7?

v4 son 122 bits de aleatoriedad más los marcadores de versión y variante, sin componente temporal. v7 antepone una marca de tiempo Unix de 48 bits en milisegundos y rellena el resto con bits aleatorios, por lo que los v7 generados en tiempos próximos se ordenan lexicográficamente. Usa v7 como clave primaria de base de datos para mantener locales las inserciones en el B-tree; usa v4 cuando no quieras ninguna señal de orden.

¿Puedo obtener un UUID duplicado?

Prácticamente no. Un UUID v4 tiene 122 bits aleatorios, de modo que la probabilidad de colisión entre dos en un lote de mil millones es del orden de 10^-18. Habría que generar unos 2,7 × 10^18 v4 para alcanzar un 50 % de probabilidad de una única colisión. Da por hecha la unicidad y no añadas una comprobación.

¿v4 es aleatorio criptográficamente?

Esta herramienta usa crypto.randomUUID(), que por especificación debe obtener datos de un PRNG criptográficamente fuerte. Es suficiente para IDs de sesión, claves de idempotencia y la mayoría de tokens de seguridad. No sustituye a un token firmado ni a un secreto de API largo, y no deberías derivar claves de cifrado a partir de un UUID.

¿UUID v7 está estandarizado?

Sí. UUID v7 está definido en la RFC 9562 (mayo de 2024), que sustituyó a la RFC 4122 y formalizó v6, v7 y v8 junto a las versiones originales. La mayoría de lenguajes modernos tienen implementaciones de v7 — Postgres, MySQL y SQL Server aceptan valores v7 en una columna UUID sin cambios.

¿Cómo es la forma binaria y la endianness importa?

Un UUID son 16 bytes. La forma textual canónica los agrupa como 8-4-4-4-12 caracteres hex. Los bytes se escriben en orden de red (big-endian) según la RFC 9562, por lo que 018f8e50-fcaa-7c3c-8d2a-6f5b72e1fd90 empieza por el byte 0x01. Los GUID de Microsoft guardan históricamente los primeros tres grupos en little-endian en memoria — cuidado al interoperar con volcados binarios de .NET.

¿Guardan los UUID que genera esta herramienta?

No. No guardamos los UUID que generas aquí. Cada valor se muestra en la salida y desaparece al recargar o cerrar la pestaña — nada se almacena, no se recoge telemetría sobre los valores. Puedes verificarlo en las herramientas de desarrollo del navegador.