Generador de UUID v7 (orden temporal)

Crea identificadores UUIDv7 ordenables por tiempo (RFC 9562) o v4 aleatorios clásicos directamente con Web Crypto. Todo ocurre en tu navegador.

Los identificadores se generan localmente con Web Crypto. Nada sale de tu dispositivo.

Resultado

La marca de tiempo bajo cada v7 se decodifica de sus seis primeros bytes; Copiar lleva solo el UUID.

Cómo funciona

UUIDv7 la define la RFC 9562 y esta página la construye a mano con crypto.getRandomValues, sin librerías. Lo que la separa de la v4 es el orden de los bytes: una marca de tiempo del reloj se coloca al inicio del identificador, de modo que el orden alfabético de la cadena pasa a ser orden de creación. El selector de versión también permite generar v4 aleatorios clásicos para comparar, y la marca de tiempo junto a cada v7 se decodifica de sus seis primeros bytes.

La estructura de bytes del v7
Los bytes 0–5 guardan el tiempo Unix en milisegundos como un entero big-endian de 48 bits —orden bien hasta el año 10889—. El byte 6 empieza con el campo de versión de 4 bits (0x7) seguido de 12 bits aleatorios (rand_a). Los bytes 7–15 llevan el resto: el byte 8 abre con los dos bits de variante (10) y los 62 bits finales (rand_b) son aleatorios. Aleatoriedad total dentro de un milisegundo: 74 bits. Escrito en los habituales grupos hexadecimales 8-4-4-4-12, un v7 tiene el mismo aspecto que cualquier otro UUID.
Orden lexicográfico es orden temporal
La comparación de cadenas lee de izquierda a derecha y los 48 bits más a la izquierda son el reloj, así que ordenar v7 alfabéticamente es ordenarlos cronológicamente. En una clave primaria B-tree las inserciones caen siempre en la hoja extrema derecha: las páginas se llenan de forma secuencial en vez de dispersar cada escritura, manteniendo los índices compactos y las cachas calientes. Una clave v4 aleatoriza ese patrón de acceso; una v7 lo recorre en flujo.
Dónde v4 sigue ganando
v4 lleva 122 bits aleatorios y no revela cuándo ni dónde se creó el ID. Para identificadores públicos, URLs indeducibles y tokens de seguridad, el prefijo temporal de v7 (una filtración, y una cola aleatoria menor) aconseja el formato clásico. Usa cada uno para lo que fue diseñado: v7 para claves ordenadas, v4 para referencias opacas.

Preguntas frecuentes

¿Cuándo usar v7 en lugar de v4?

Usa v7 cuando los IDs vivan en un índice ordenado —una clave primaria de Postgres, una tabla B-tree o LSM-tree como InnoDB de MySQL, RocksDB o claves de ordenación de DynamoDB—. Como los v7 se ordenan lexicográficamente en el mismo orden en que se crearon, las filas nuevas se añaden al final del índice en lugar de dispersar las escrituras. Usa v4 cuando el valor deba ser indeducible y el tiempo no deba filtrarse: identificadores públicos en URLs y tokens de seguridad siguen prefiriendo los bits aleatorios extra de v4.

¿Por qué los UUID v7 se ordenan por tiempo?

Los primeros 48 bits de cada v7 son la hora de creación —milisegundos desde la época Unix— escritos con el byte más significativo primero. La comparación de cadenas lee de izquierda a derecha, así que la marca de tiempo domina: las filas '0198…' siempre ordenan antes que '0199…', y el orden lexicográfico coincide con el cronológico. Los bits aleatorios solo deciden el orden entre UUIDs creados en el mismo milisegundo.

¿Un UUID v7 sigue siendo seguro contra colisiones?

Sí, dentro del mismo milisegundo: tras los 48 bits de tiempo y los 6 de versión y variante quedan 74 bits aleatorios —unos 1,9 × 10^22 posibilidades por milisegundo de creación—, muy por encima de lo que una máquina emite en ese intervalo. Si necesitas garantías estrictas de monotonía dentro del mismo milisegundo, usa una librería de servidor con el esquema opcional de contador monotónico de la RFC 9562; esta herramienta de navegador se apoya en los bits aleatorios.

¿Los IDs generados tienen marcas de tiempo distintas?

Cada UUID se sella con el reloj del momento de su creación, así que los lotes generados de un clic comparten milisegundo a menudo — el bucle del navegador va más rápido que el reloj. Es normal e inofensivo: las marcas mostradas junto a los IDs son reales y la cola aleatoria mantiene cada identificador distinto.

¿Se sube algo a un servidor?

No. Los identificadores se ensamblan en tu navegador con la API Web Crypto y tu reloj del sistema. No se transmite, almacena ni registra nada, y el lote desaparece al cerrar la pestaña.