Los UUID explicados: v4, v7 y cómo elegir la versión adecuada

Actualizado:

Un UUID es un identificador de 128 bits que cualquier ordenador puede crear por su cuenta, sin un contador central, y aun así tener la certeza práctica de que nadie más ha creado el mismo. Por eso acaban usándose como claves de bases de datos, nombres de archivo, identificadores de solicitudes y números de pedido. La mayoría de los UUID que ves son de la versión 4, que es puro azar; la versión 7, estandarizada en 2024, añade el momento de creación y se está convirtiendo rápidamente en la mejor opción para bases de datos. Esta guía explica cómo leer uno, en qué se diferencian las versiones, qué probabilidad real hay de una colisión y cuál elegir.

Qué aspecto tiene un UUID

Un UUID tiene 128 bits y se escribe como 32 dígitos hexadecimales repartidos en cinco grupos separados por guiones —de 8, 4, 4, 4 y 12 dígitos—, 36 caracteres en total:

El estándar actual es el RFC 9562, publicado en mayo de 2024, que sustituyó al RFC 4122 de 2005. Las letras pueden escribirse en mayúsculas, en minúsculas o mezclando ambas; las tres formas representan el mismo valor.

Las bases de datos con un tipo UUID nativo, como PostgreSQL, guardan el valor en 16 bytes en lugar de como 36 caracteres de texto.

Cómo leer la versión

Dos dígitos indican qué tipo de UUID tienes. El primer dígito del tercer grupo es la versión. El primer dígito del cuarto grupo es la variante: en todo UUID generado conforme al estándar es 8, 9, a o b.

UUIDVersiónQué es
3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b904Aleatorio
01a0d86f-ca00-7b3e-9f21-6c4d8a0e5b177Ordenado por tiempo, creado el 25 de septiembre de 2026 a las 12:00:00 UTC
00000000-0000-0000-0000-000000000000—El Nil UUID: todos los bits a cero; se usa para indicar «sin valor»
ffffffff-ffff-ffff-ffff-ffffffffffff—El Max UUID: todos los bits a uno; se usa como límite superior

Las versiones

VersiónCómo se generaUso actual
1Marca de tiempo y dirección de red (MAC) del ordenadorHeredado; revela qué máquina lo generó
3Hash MD5 de un espacio de nombres y un nombreSolo para reproducir identificadores existentes; mejor la versión 5
4122 bits aleatoriosLa opción por defecto casi en todas partes
5Hash SHA-1 de un espacio de nombres y un nombreEl mismo nombre siempre da el mismo UUID
6La versión 1 reordenada para que se ordene por tiempoSolo donde ya se usa la versión 1
7Marca de tiempo Unix en milisegundos más bits aleatoriosBases de datos nuevas y todo lo que se beneficie del orden temporal
8Estructura definida por la aplicaciónFormatos experimentales o propios de un fabricante

La versión 2 existe para un antiguo sistema de seguridad y queda fuera del alcance del estándar. El RFC 9562 indica que las implementaciones deberían usar la versión 7 en lugar de las versiones 1 y 6 siempre que sea posible.

Versión 4: aleatoria

Un UUID de la versión 4 fija 6 de sus 128 bits para marcar la versión y la variante, y rellena los otros 122 con datos aleatorios. El estándar pide un generador de números aleatorios criptográficamente seguro, que es lo que ofrecen los navegadores mediante crypto.randomUUID(), la función que usa el generador de nTools.

Con 122 bits aleatorios, una colisión no es un problema práctico. La probabilidad de que dos cualesquiera coincidan no llega al 50% hasta unos 2,7 × 10¹⁸ UUID; a mil millones por segundo, eso lleva unos 86 años. Tras un billón de UUID, la probabilidad de que dos cualesquiera sean iguales es de aproximadamente 1 entre 10 billones. El riesgo realista es un generador de números aleatorios defectuoso, no las matemáticas.

Generador UUID

Versión 7: ordenada por tiempo

Un UUID de la versión 7 coloca el tiempo Unix en milisegundos en sus primeros 48 bits, después la versión y la variante, y después 74 bits aleatorios o de un contador. Como el tiempo va primero, los UUID creados más tarde se ordenan después de los anteriores, tanto en forma de texto como de bytes.

En el ejemplo anterior, los primeros 12 dígitos hexadecimales, 01a0d86fca00, equivalen a 1.790.337.600.000 milisegundos después del 1 de enero de 1970: el 25 de septiembre de 2026 a las 12:00:00 UTC. La marca de tiempo de 48 bits alcanza hasta el año 10889. Dentro de un mismo milisegundo, los generadores o bien usan bits aleatorios, o bien añaden un contador para que los UUID de un mismo proceso sigan saliendo en orden.

El soporte está llegando a las herramientas de uso habitual: PostgreSQL 18, publicado en septiembre de 2025, añadió una función uuidv7() integrada junto a uuidv4().

Cuál usar como clave de base de datos

La mayoría de las bases de datos guardan las claves primarias en un índice B-tree (árbol B), que sigue siendo eficiente cuando las claves nuevas llegan en orden.

Para una tabla nueva que necesite UUID, la versión 7 suele ser la mejor opción. La versión 4 sigue siendo la adecuada cuando la hora de creación no debe poder verse en el identificador.

Lo que un UUID no es

Preguntas frecuentes

¿Pueden coincidir alguna vez dos UUID aleatorios?

En teoría, sí; en la práctica, no. Harían falta unos 2,7 × 10¹⁸ UUID de la versión 4 para tener un 50% de probabilidad de una sola coincidencia, siempre que procedan de un generador de números aleatorios adecuado.

¿Un GUID es lo mismo que un UUID?

Sí. GUID es el nombre que da Microsoft al mismo identificador de 128 bits. Las herramientas de Windows suelen mostrarlo en mayúsculas o entre llaves, como {3F2A9C1E-5B7D-4E8A-9C21-7D4E5F6A8B90}, pero el valor es el mismo.

¿Los UUID distinguen entre mayúsculas y minúsculas?

No. 3F2A9C1E-… y 3f2a9c1e-… son el mismo UUID. Compáralos sin distinguir mayúsculas de minúsculas, o guárdalos en una columna de tipo UUID nativo, lo que evita la cuestión.

¿Qué versión crea el generador de nTools?

La versión 4, mediante crypto.randomUUID() del navegador. Crea hasta 100 a la vez, íntegramente en tu dispositivo.

Guías relacionadas