🧰 ToolPicoTodas las herramientas →
InicioBlog › Anatomía de una UUID

Anatomía de una UUID: dónde está escondida la versión, la variante y la fecha

Cuando pegas una UUID en un log o en una fila de base de datos, en realidad estás viendo cinco datos distintos comprimidos en 36 caracteres: aleatoriedad pura, un dígito de versión, un dígito de variante y, a veces, una marca de tiempo. Esta guía te enseña a localizar cada pieza a simple vista, sin depender de ninguna herramienta.

En esta guía

Los cinco grupos de una UUID, uno por uno

Respuesta rápida Una UUID estándar se escribe como cinco grupos hexadecimales separados por guiones, con el patrón 8-4-4-4-12 caracteres: los dos primeros grupos y el final suelen ser aleatorios (o parte de una marca de tiempo), mientras que el tercer y cuarto grupo empiezan, respectivamente, con el dígito de versión y el dígito de variante.

Tomemos como ejemplo ilustrativo la UUID 550e8400-e29b-41d4-a716-446655440000. Descompuesta por grupos:

El «4» resaltado en verde es el dígito de versión (esta es una v4). El «a» resaltado en ámbar es el primer carácter del grupo de variante. El resto —en gris— es aleatoriedad en este caso concreto, aunque en una v1 o v7 buena parte de esos caracteres grises serían, en realidad, una marca de tiempo codificada.

Por qué esto importa al depurar Si alguna vez has mirado una tabla de base de datos y te has preguntado «¿esta columna id es v4 o v7?» sin querer instalar nada, saber exactamente qué posición mirar te ahorra tener que copiar el valor a una herramienta externa cada vez. Basta con fijarse en el primer carácter tras el segundo guion.

Dónde está el dígito de versión

Respuesta rápida El dígito de versión es siempre el primer carácter del tercer grupo — justo después del segundo guion, en la posición 15 contando desde el principio de la cadena.

Este dígito puede valer de 1 a 8 en las versiones estandarizadas más comunes hoy (1, 3, 4, 5 y 7 son las que verás con más frecuencia; 2, 6 y 8 existen pero son mucho más raras en la práctica). No es un valor cualquiera dentro del rango hexadecimal: los otros 15 bits de ese mismo nibble no llevan información, solo ese primer carácter importa para identificar la versión.

Dígito de versiónSignificaEjemplo del grupo 3
1Basada en tiempo + nodo1a2b
3Determinista (MD5, namespace+nombre)3f4c
4Aleatoria41d4
5Determinista (SHA-1, namespace+nombre)5e9a
7Ordenada por tiempo (Unix ms)7c21

Dónde está el bit de variante

Respuesta rápida El primer carácter del cuarto grupo (tras el tercer guion) contiene el bit de variante; en la variante RFC 4122/9562 — la que usan prácticamente todas las UUID modernas — ese carácter solo puede ser 8, 9, a o b.

Esto ocurre porque los dos bits más significativos de ese nibble están fijados a «10» en binario, y solo los dos bits restantes pueden variar libremente — de ahí que el rango de valores posibles para ese carácter se reduzca a cuatro opciones hexadecimales. Si alguna vez ves una UUID con un carácter distinto de 8/9/a/b en esa posición (por ejemplo un «0» o un «e»), probablemente no siga la variante estándar RFC — podría tratarse de un identificador de variante NCS heredada, o de una variante «Microsoft/COM» propia de sistemas antiguos, ambas mucho menos frecuentes hoy en día.

Idea para el futuro: localizar estos dos dígitos a mano funciona, pero un desglose visual con colores —resaltando en línea el segmento de versión, el de variante y, si aplica, el de marca de tiempo, directamente sobre la UUID recién generada o pegada para validar— reduciría bastante ese esfuerzo manual. No es algo que el generador de ToolPico ofrezca todavía, pero es exactamente el tipo de ayuda visual que tendría sentido en una futura versión del validador.

Cómo reconocer una marca de tiempo escondida

Respuesta rápida En una UUID v7, los primeros 12 caracteres (los grupos 1 y 2 completos) son una marca de tiempo Unix en milisegundos; en una v1, la marca de tiempo está repartida de forma más compleja entre los grupos 1, 2 y la mitad del grupo 3.

Con v7 es relativamente sencillo de reconocer a ojo una vez sabes qué buscar: los primeros 8 caracteres suben de forma aproximadamente monótona con el tiempo, así que si generas varias UUID v7 seguidas y las ordenas, verás que ese primer bloque va «creciendo». Con v1 es más difícil de leer a simple vista porque el campo de tiempo está deliberadamente entrelazado (time-low, time-mid, time-high) por razones históricas del estándar, así que en la práctica conviene apoyarse en un decodificador para traducir esos bits a una fecha legible en lugar de intentar leerlos de memoria.

Escenario de ejemplo (hipotético, no un caso real): imagina que estás revisando manualmente una fila de log con una UUID v7 como identificador de evento y necesitas saber, aproximadamente, cuándo ocurrió sin abrir ninguna herramienta. Reconocer que los primeros 8 caracteres representan segundos-milisegundos crecientes te da al menos una intuición de «esto es más reciente que aquello otro» con solo comparar dos cadenas letra por letra — útil para una revisión rápida, aunque para la fecha exacta siempre conviene decodificarla con precisión en lugar de fiarte del ojo.

Genera y valida UUID/GUID gratis v4, v1, v3/v5, v7, más un validador con decodificador de marca de tiempo integrado — todo en tu navegador, sin enviar nada a un servidor. Probar la herramienta →

Preguntas frecuentes

¿Qué carácter de una UUID indica su versión?
El primer carácter del tercer grupo (posición 15 si contamos desde 1, justo después del segundo guion) es siempre el dígito de versión. En 550e8400-e29b-41d4-a716-446655440000, ese carácter es el «4» de «41d4», lo que indica que es una UUID v4. En una v1 ese mismo carácter sería «1», en una v7 sería «7», y así sucesivamente.
¿Cómo se identifica el bit de variante en una UUID?
El primer carácter del cuarto grupo (justo después del tercer guion) codifica la variante. Para las UUID «estándar RFC 4122/9562» —la inmensa mayoría de las que verás— ese carácter será 8, 9, a o b, porque los dos bits más significativos de ese nibble están fijados a «10». Si ves un valor distinto (0-7 o c-f), probablemente estés ante una UUID de variante NCS heredada o de Microsoft/COM, mucho menos comunes hoy.
¿Qué parte de una UUID v7 contiene la fecha de creación?
Los primeros 12 caracteres hexadecimales (los dos primeros grupos completos, por ejemplo «018f2a3b-c4d5» en 018f2a3b-c4d5-7...) representan una marca de tiempo Unix en milisegundos de 48 bits. El resto del identificador —desde el dígito de versión en adelante— es aleatoriedad. Por eso, ordenar una lista de UUID v7 alfabéticamente equivale, en la práctica, a ordenarlas cronológicamente.
¿Por qué me cuesta distinguir a simple vista una v1 de una v4 al leer un log?
Porque en un volcado de texto plano todos los caracteres tienen el mismo color y tamaño, así que el dígito de versión —una sola posición entre 36— pasa fácilmente desapercibido. Localizar mentalmente esa posición (justo tras el segundo guion) exige práctica; herramientas que resaltan visualmente segmento por segmento reducen ese esfuerzo, aunque no siempre están disponibles cuando solo tienes una terminal o un archivo de log plano delante.
¿Existe alguna forma de memorizar rápidamente la estructura 8-4-4-4-12?
Un truco mnemotécnico simple: piensa en los cinco grupos como «datos aleatorios / datos aleatorios / VERSIÓN+datos / VARIANTE+datos / nodo o datos». Solo los grupos 3 y 4 llevan un dígito «con significado» al principio; el resto son, según la versión, aleatoriedad, una marca de tiempo o una combinación de ambas. Practicar con un puñado de UUID reales y localizar esos dos dígitos suele bastar para automatizar la lectura.
Nota: Esta guía tiene fines informativos y de referencia técnica general. Los ejemplos de UUID y los escenarios de depuración descritos son ilustrativos y no corresponden a mediciones ni a incidentes reales. Verifica siempre el comportamiento exacto en tu propio sistema o base de datos.