Generador de UUID

Genera UUID v4 y v7 ordenados por tiempo en bloque.

Acerca de esta herramienta

Genera identificadores UUID v4 aleatorios o UUID v7 ordenados por tiempo, de uno en uno o de cien en cien, con el generador aleatorio criptográficamente seguro del navegador.

Cómo se usa

  1. Elige v4 para ID totalmente aleatorios o v7 para ID que se ordenan por fecha de creación.
  2. Indica cuántos necesitas, hasta 100.
  3. Elige mayúsculas o sin guiones si tu sistema lo espera.
  4. Copia uno o todos.

Preguntas

¿Debo usar UUID v4 o v7?
v7 empieza con una marca de tiempo, así que los ID nuevos se ordenan después de los antiguos. Eso mantiene los índices de la base de datos compactos y rápidos, lo que hace de v7 una buena opción predeterminada para claves primarias. Usa v4 cuando la fecha de creación no deba ser visible.
¿Pueden coincidir dos UUID?
En la práctica, no. Un UUID v4 tiene 122 bits aleatorios; tendrías que generar miles de millones por segundo durante muchos años para que una colisión fuera probable.
¿Es seguro usar estos UUID como tokens?
Se generan con el generador aleatorio criptográficamente seguro del navegador, pero un UUID es un identificador, no un secreto. Para tokens de sesión o claves de API, usa un valor aleatorio más largo.
¿Cómo genero un UUID en JavaScript, Python o la shell?
En navegadores y Node.js, crypto.randomUUID() devuelve un v4. En Python, usa uuid.uuid4(), o uuid.uuid7() a partir de Python 3.14. En macOS y Linux, uuidgen muestra un UUID aleatorio; macOS lo muestra en mayúsculas. Para obtener rápidamente un lote de ID v7, o hasta 100 a la vez, usa esta página.
¿Las claves UUID v7 se ordenan correctamente en SQL Server?
No por defecto. El tipo uniqueidentifier de SQL Server compara primero los últimos seis bytes, así que los UUID ordenados por tiempo no se colocan al final de un índice clúster. NEWSEQUENTIALID() es la opción secuencial propia de SQL Server. PostgreSQL y MySQL con BINARY(16) comparan los bytes desde el principio, así que ahí v7 se ordena correctamente.
¿Qué es el UUID nil?
Es el valor todo ceros 00000000-0000-0000-0000-000000000000, que se usa como marcador para “sin ID”. El RFC 9562 también define un UUID Max con todos los dígitos a f. Ninguno de los dos es aleatorio, así que no los uses nunca como identificadores reales y recházalos donde se espere un ID real.

¿Qué es un UUID y cómo es su estructura?

Un UUID es un identificador de 128 bits escrito como 32 dígitos hexadecimales en cinco grupos: 8-4-4-4-12. El primer dígito del tercer grupo es la versión, así que un UUID v4 siempre tiene un 4 en esa posición y un v7 tiene un 7. El primer dígito del cuarto grupo es 8, 9, a o b, lo que marca la variante estándar. GUID es el nombre que Microsoft da al mismo formato.

En un UUID v7, los primeros 48 bits son el tiempo Unix en milisegundos, así que los primeros 12 dígitos hexadecimales indican cuándo se creó; conviértelos a decimal con el Conversor de bases numéricas y pega el resultado en el Conversor de marcas de tiempo Unix. Los 74 bits restantes son aleatorios. Aquí, los ID creados en el mismo milisegundo no están ordenados entre sí, pero los de milisegundos distintos siempre se ordenan por tiempo.

Cómo guardar UUID en una base de datos

Usa un tipo nativo cuando exista. PostgreSQL tiene uuid, que ocupa 16 bytes y acepta mayúsculas y minúsculas, con o sin guiones. gen_random_uuid() crea un v4 dentro de la base de datos, y PostgreSQL 18 añade uuidv7(). En MySQL, guárdalo como BINARY(16) con UUID_TO_BIN() y BIN_TO_UUID() en lugar de CHAR(36), que ocupa más del doble de espacio y hace más grandes todos los índices.

La forma de texto estándar va en minúsculas y con guiones, y el RFC 9562 indica que los lectores también deberían aceptar mayúsculas. Algunos sistemas esperan mayúsculas, o 32 dígitos sin guiones, así que aquí tienes ambas opciones; el valor es el mismo en cualquier caso. Cuando compares UUID como cadenas en código o en logs, normaliza antes las mayúsculas, o un GUID de una herramienta de Windows no coincidirá con el mismo ID en minúsculas.

UUID vs ID autoincremental

Los enteros autoincrementales son pequeños, rápidos y fáciles de leer, pero los asigna la base de datos, así que solo conoces el ID después del insert. También revelan cuántas filas tienes y permiten que cualquiera adivine registros vecinos en una URL. Los UUID se pueden generar en cualquier sitio, en el navegador, en varios servidores o sin conexión, y combinarse después sin conflictos.

El inconveniente es el tamaño: 16 bytes en lugar de 4 u 8, en cada índice y clave foránea. UUID v7 elimina el principal problema de rendimiento de las claves aleatorias, porque los valores nuevos se colocan al final del índice. ULID es una idea parecida, una marca de tiempo seguida de bits aleatorios en un texto de 26 caracteres, pero UUID v7 tiene un formato estándar y tipos de columna nativos en muchas bases de datos.

¿Algo no funciona o un resultado parece incorrecto? Informar de un problema con esta herramienta