Generador de UUID
Genera valores UUID v4 con un clic, en lote
Procesando…
0.0
No se ha bloqueado: el resultado aparecerá cuando termine el cálculo.
Acerca de Generador de UUID
Un UUID es un identificador de 128 bits pensado para que sistemas independientes generen identificadores sin consultar a un servidor central y, aun así, no coincidan. El formato se definió en el RFC 4122 en 2005; en mayo de 2024 el RFC 9562 lo sustituyó y añadió las versiones 6, 7 y 8.
Esta herramienta genera la versión 4, la aleatoria. Toma 16 bytes de crypto.getRandomValues del navegador y fija el nibble de versión (el carácter hexadecimal 13) a 4 y los bits de variante para que el carácter 17 sea 8, 9, a o b. Se pueden generar hasta 1.000 de una vez y pasar a mayúsculas o a la forma de 32 caracteres sin guiones.
Cómo leer un UUID
En 2d7f7b60-80d6-4402-8639-8e0992715d01, el primer carácter del tercer grupo, 4, es la versión. El primer carácter del cuarto grupo, 8, lleva la variante, que indica que el valor sigue el formato del RFC; en los UUID estándar siempre es 8, 9, a o b. Descontando esos bits fijos, 122 de los 128 bits son aleatorios.
El RFC 9562 indica que los dígitos hexadecimales se escriban en minúscula y se acepten sin distinguir mayúsculas al leerlos. La opción de mayúsculas sirve para sistemas antiguos que las esperan, como algunas herramientas de Windows que muestran los GUID en mayúsculas y entre llaves. La forma sin guiones es el mismo valor; lo importante, si se guardan como texto, es elegir una sola representación, porque si no las comparaciones de cadenas darán por distintos dos identificadores iguales.
La probabilidad de colisión, con números
Con 122 bits aleatorios hay 2^122 valores posibles, unos 5,3×10^36. Con la aproximación del problema del cumpleaños, p ≈ 1 − e^(−n²/2N): tras generar mil millones (10^9) de UUID, la probabilidad de que dos coincidan es de unos 9,4×10^−20. Con un billón (10^12) es de unos 9,4×10^−14. Para llegar a un 50% harían falta unos 2,7×10^18 UUID, lo que a mil millones por segundo lleva unos 86 años.
Ese cálculo supone una fuente aleatoria correcta. Los UUID duplicados que se ven en la práctica casi siempre vienen de errores de implementación, no de mala suerte: máquinas virtuales clonadas que arrancan con el mismo estado del generador, semillas tomadas del reloj, funciones no criptográficas como Math.random o un valor de prueba fijo olvidado en producción. Esta herramienta nunca recurre a Math.random: sin la API Web Crypto desactiva el botón de generar y explica el motivo, aunque todos los navegadores actuales la incluyen.
¿v4 o v7 como clave primaria?
UUIDv7 coloca una marca de tiempo Unix en milisegundos en los 48 bits superiores y rellena los 74 restantes (quitando versión y variante) con datos aleatorios o un contador opcional para garantizar el orden. Los valores creados después se ordenan después, tanto en binario como en texto. El RFC 9562 recomienda usar v7 en lugar de v1 y v6 siempre que sea posible.
La diferencia práctica aparece en los índices B-tree. Las claves v4 caen en cualquier punto del índice, así que cada inserción toca páginas distintas, las divide y trae a memoria páginas que no estaban en caché. Las claves v7 se añaden cerca del extremo derecho del índice y se comportan de forma parecida a un entero autoincremental. El propio RFC señala que los UUID sin orden temporal no quedan próximos en el índice y cita mejoras de un orden de magnitud o más con los ordenados por tiempo.
A cambio, v7 revela cuándo se creó el registro. En identificadores visibles para el público, como números de cliente o de pedido, donde quizá no quieras mostrar fechas de alta o ritmo de crecimiento, v4 es la opción más discreta. Esta herramienta solo genera v4; para v7, usa la función de tu base de datos o la biblioteca de UUID de tu lenguaje.
¿Sirve un UUID como token secreto?
Adivinar un v4 bien generado no es viable en la práctica, pero el RFC 9562 desaconseja suponer que los UUID son difíciles de adivinar o usarlos como credencial de acceso. No todas las implementaciones usan una fuente criptográfica y versiones como v1 o v7 tienen partes predecibles. Para enlaces de restablecimiento de contraseña o claves de API, conviene un generador de tokens pensado para eso.
Ejemplos
Tres UUID con las opciones por defecto
- Entrada
Cantidad 3, opciones por defecto- Resultado
2d7f7b60-80d6-4402-8639-8e0992715d01 9bba9b5f-1591-4dcb-8868-c86de213d8f6 f791f531-9479-4b86-b466-6e177cc7bbe7
Todos los terceros grupos empiezan por 4; los cuartos, por 8, 8 y b. Los valores cambian en cada generación.
Mayúsculas y sin guiones
- Entrada
Cantidad 1, mayúsculas sí, guiones no- Resultado
3F160309A63D43538F70D0C6292876C0
El carácter 13 es la versión (4) y el 17 la variante (8), en las mismas posiciones que en la forma con guiones.
Mil millones de UUID
- Entrada
n = 10^9, N = 2^122- Resultado
Probabilidad de colisión ≈ 9,4×10^−20
n²/2N = 10^18 / (2 × 5,32×10^36) ≈ 9,4×10^−20. Mil veces más UUID la hacen un millón de veces mayor: unos 9,4×10^−14 para un billón.
Cómo se usa
- Indica cuántos UUID necesitas (de 1 a 1.000).
- Elige mayúsculas o sin guiones solo si el sistema de destino lo exige; la forma estándar es minúscula con guiones.
- Copia la lista y pégala donde la necesites.
Preguntas frecuentes
¿GUID y UUID son lo mismo?
Sí, el mismo identificador de 128 bits. GUID es el nombre que usa Microsoft; las herramientas de Windows suelen mostrarlo en mayúsculas y entre llaves, pero la estructura es idéntica.
¿Se puede saber qué UUID se creó antes?
Con v4, no. Si necesitas el orden de creación, usa v7 o guarda una columna aparte con la fecha.
¿Conviene guardarlos como texto?
Se puede, pero una cadena de 36 caracteres ocupa más del doble que el valor binario de 16 bytes y se compara más despacio. Usa un tipo nativo si existe, como uuid en PostgreSQL o BINARY(16) en MySQL.
¿Puede que otra persona ya esté usando el UUID que acabo de generar?
No existe un registro donde comprobarlo, pero, como muestran las cuentas de arriba, la probabilidad de que un v4 bien generado coincida con otro es despreciable para cualquier volumen realista.
Fuentes
Revisado el: