Elige la versión
La v4 es aleatoria y no revela nada: es la que quieres para identificadores públicos. La v1 lleva la hora de creación, así que ordena cronológicamente pero filtra información.
UUID versión 4 generados con la criptografía del navegador —no con Math.random— y versión 1 con marca de tiempo real. Lotes de hasta 100 y varios formatos de salida.
100 % privado. No hay servidor: los datos se generan en tu navegador y no se envían ni se guardan en ninguna parte.
Cómo funciona
La v4 es aleatoria y no revela nada: es la que quieres para identificadores públicos. La v1 lleva la hora de creación, así que ordena cronológicamente pero filtra información.
Con guiones es lo estándar. Sin guiones ocupa 32 caracteres y se usa en algunas bases de datos. Entre llaves es la convención de Microsoft.
Un lote de 100 en CSV o JSON, listo para sembrar claves primarias o para un fichero de pruebas.
Un UUID son 128 bits que se escriben como 32 dígitos hexadecimales agrupados
8-4-4-4-12. Dos de esos dígitos no son datos: son metadatos que dicen cómo se
generó el identificador.
f47ac10b-58cc-4372-a567-0e02b2c3d479
↑ ↑
│ └── variante: 8, 9, a o b (RFC 4122)
└─────── versión: 1, 3, 4, 5, 7…
El primer dígito del tercer grupo es la versión, y el
primero del cuarto es la variante. Por eso un UUID v4 legítimo siempre tiene
un 4 en la posición 15 y un 8, 9, a o
b en la 20. Hay validadores que lo comprueban, y una cadena hexadecimal aleatoria
de 32 caracteres no es un UUID válido aunque lo parezca: casi seguro fallará
esas dos posiciones.
| Versión 4 | Versión 1 | |
|---|---|---|
| De dónde sale | 122 bits aleatorios | Marca de tiempo + secuencia + identificador de nodo |
| ¿Ordena? | No. Dos UUID seguidos no guardan relación | Sí, aproximadamente por hora de creación |
| ¿Filtra información? | No | Sí: la hora exacta y, en la especificación original, la dirección MAC del equipo |
| Para qué sirve | Identificadores públicos, tokens, claves en API | Claves de base de datos donde el orden importa |
El punto de seguridad es concreto: un UUID v1 en una URL pública revela cuándo se creó el registro, y con eso se puede inferir el volumen de tu sistema —generas dos registros con un minuto de diferencia y comparas los identificadores—. Para cualquier cosa que el usuario pueda ver, usa v4.
Esta herramienta usa crypto.getRandomValues, la fuente de aleatoriedad
criptográfica del navegador. La diferencia con Math.random() no es teórica:
// MAL: Math.random no es criptográficamente seguro y su estado
// interno es predecible a partir de suficientes salidas.
const malo = 'xxxxxxxx-xxxx-4xxx'.replace(/x/g, () =>
Math.floor(Math.random() * 16).toString(16));
// BIEN: la API del navegador, y desde 2021 hay una función dedicada
crypto.randomUUID(); // v4 en una línea
// O a mano, si necesitas controlar el formato:
const b = crypto.getRandomValues(new Uint8Array(16));
b[6] = (b[6] & 0x0f) | 0x40; // versión 4
b[8] = (b[8] & 0x3f) | 0x80; // variante RFC 4122
Fíjate en las dos últimas líneas: hay que forzar los bits de versión y variante a mano. Es el paso que se olvida en las implementaciones caseras, y produce identificadores que un validador estricto rechaza.
En la práctica, no. Un v4 tiene 122 bits aleatorios, lo que da unos 5 × 10³⁶ valores posibles. Para tener una probabilidad del 50 % de una sola colisión habría que generar del orden de 2,7 × 10¹⁸ identificadores: si generaras mil millones por segundo, tardarías unos ochenta y cinco años.
La advertencia real no es la colisión matemática, es la mala fuente de
aleatoriedad. Un generador que use Math.random mal sembrado, o que
reinicie su estado en cada arranque, sí puede repetir valores. Ahí es donde ocurren las
colisiones de verdad.
VARCHAR(32) corta el UUID con guiones y lo corrompe en silencio.{f47ac10b-…} es lo que devuelven algunas API de Windows. Si tu validación no las quita, falla.Existe una versión 7, más reciente, que combina lo mejor de las dos: es ordenable por tiempo pero sin revelar la dirección MAC, y es hoy la recomendación para claves de base de datos nuevas. Esta herramienta genera v1 y v4, no v7. Lo decimos para que no la busques aquí: si tu proyecto la necesita, tendrás que generarla con la biblioteca de tu lenguaje.
Preguntas frecuentes
En la práctica sí. Un v4 tiene 122 bits aleatorios; para una probabilidad del 50 % de una colisión habría que generar unos 2,7 × 10¹⁸ identificadores. El riesgo real no es matemático sino una mala fuente de aleatoriedad: por eso esta herramienta usa la criptografía del navegador y no Math.random.
v4 para cualquier identificador que el usuario pueda ver: es aleatorio y no revela nada. v1 solo si necesitas que ordenen cronológicamente, y sabiendo que expone la hora de creación. Para claves de base de datos nuevas, hoy la recomendación es la versión 7, que esta herramienta no genera.
No hay servidor. Se generan en tu navegador con crypto.getRandomValues y no se envían a ninguna parte. Puedes comprobarlo en la pestaña Red: al generar un UUID no aparece ninguna petición del generador. Las que veas serán del bloque de publicidad, que va aparte y no ve lo que produces.
Es el mismo UUID, pero muchos sistemas comparan cadenas sin normalizar y entonces no lo es. El estándar usa minúsculas; Microsoft y algunas bases de datos devuelven mayúsculas. Normaliza siempre antes de comparar o de guardar.
36 con guiones y 32 sin ellos. Es el fallo más frecuente en el esquema de base de datos: definir el campo con 32 y guardar la versión con guiones, que se corta sin dar error.
Sí, en lotes de 1, 10, 50 o 100, con exportación en CSV o JSON, en el formato y la caja que elijas.
Sigue probando