Validar UUID

Pega un identificador y averigua si es un UUID y, en tal caso, qué versión y qué variante declara. Las dos cosas están en posiciones fijas de la cadena y se leen sin consultar nada. Lo que aquí no se afirma es que el identificador exista en ninguna base de datos: se comprueba la forma, no la existencia.

Resultado

La respuesta aparece aquí mientras escribes.

  • Dónde se ejecuta

    No se sube nada, porque no hay archivo: se calcula en esta misma página.

  • Sin cola y sin cuenta

    Responde tan rápido como dé tu máquina, y nunca pregunta quién eres.

  • Tantas veces como quieras

    No se cuenta nada ni se limita nada: volver a responder no nos cuesta nada.

Cómo funciona

  1. Pega el identificador. Las llaves y un prefijo urn:uuid: se admiten sin problema.
  2. Lee la versión y la variante, o el motivo si la forma no cuadra.
  3. No se ha subido nada.

Qué se comprueba y qué no

Un UUID son 128 bits, escritos habitualmente como 32 dígitos hexadecimales en cinco grupos separados por guiones. De una cadena así se pueden comprobar tres cosas: si la forma es correcta, qué versión declara el decimotercer carácter y qué variante indican los primeros bits del cuarto grupo.

Lo que no se puede comprobar es si el identificador se ha asignado alguna vez. No hay registro ni dígito de control — un UUID no lleva información sobre si es real. Quien necesite saber si existe un registro tiene que preguntárselo a su base de datos; esta página responde la pregunta anterior, la de si merece la pena preguntar.

Dónde está la versión

El número de versión es el primer carácter del tercer grupo, o sea el decimotercer dígito hexadecimal. Un `4` ahí significa aleatorio, un `1` basado en tiempo, un `7` ordenable en el tiempo según el nuevo RFC 9562, y el `3` y el `5` corresponden a las variantes basadas en nombre con MD5 y con SHA-1.

Se lee a simple vista en cuanto se sabe dónde mirar, y es la forma más rápida de confirmar una sospecha. Quien vea un identificador que en esa posición no lleva ninguna cifra conocida tiene delante o un UUID anterior a la versión, o algo que solo lo parece.

La variante que casi nadie conoce

El primer carácter del cuarto grupo tiene que ser `8`, `9`, `a` o `b`. Esos cuatro dígitos comparten los bits iniciales `10`, que son la variante que el RFC 4122 reclama para sí; cualquier otro valor pertenece a esquemas antiguos o reservados.

En la práctica: un identificador con la versión correcta pero con una `c` o una `f` en esa posición no lo generó una biblioteca conforme. La causa habitual son los generadores caseros que encadenan 32 dígitos aleatorios y pasan por alto las dos posiciones fijas — un fallo que puede vivir años sin que nadie lo note.

Mayúsculas, llaves y URN

La especificación exige minúsculas al generar y tolerancia con las mayúsculas al leer. En la práctica aparecen las dos: .NET y muchas herramientas de Windows escriben tradicionalmente en mayúsculas, la mayoría de lo demás en minúsculas.

A eso se suman dos envoltorios frecuentes: las llaves, de la notación del registro de Windows, y un `urn:uuid:` delante, del espacio de nombres URN. Ambos se reconocen aquí y se ignoran. Quien compare por su cuenta debe normalizar antes, o dos identificadores idénticos fallarán la comparación por su forma de escribirse.

Por qué la versión 1 es un asunto de privacidad

Un UUID versión 1 contiene el instante de creación con precisión de 100 nanosegundos y, en el último grupo, tradicionalmente la dirección MAC de la tarjeta de red. Las dos cosas son reconstruibles por quien tenga el identificador.

No es teórico: fue la vía por la que en 1999 se identificó al autor del virus Melissa, porque Word escribía la MAC en los identificadores de documento. Donde un identificador se ve desde fuera, la versión 4 es la elección correcta; las bibliotecas modernas, además, ponen un nodo aleatorio en lugar de la dirección real.

La versión 7 y por qué está de moda

La versión 7 antepone una marca de tiempo en milisegundos y rellena el resto con azar, de modo que los identificadores quedan ordenados en el tiempo por su propio valor — y eso resuelve el problema por el que muchos equipos evitaban los UUID como clave primaria.

La causa es el índice de la base de datos. Las claves aleatorias escriben en puntos siempre cambiantes de un árbol B, lo que parte páginas y desperdicia la caché; en tablas grandes cuesta rendimiento de escritura medible. Una clave creciente escribe al final. La contrapartida es que el instante de creación vuelve a ser legible.

El UUID nil y su contrario

Un identificador de solo ceros es el UUID nil, previsto expresamente en la especificación y formalmente válido aunque no lleve ni versión ni variante. Significa «ninguno» y aparece donde un campo no puede ser nulo pero debe estar vacío.

Desde el RFC 9562 existe su contrario, el UUID max, de solo `f`. Los dos superan la comprobación de aquí y se identifican como lo que son. Quien encuentre un UUID nil en datos de producción debería desconfiar: casi nunca es un marcador puesto a propósito, sino un generador que ha fallado en silencio.

Cuando falta o sobra un carácter

Los fallos más habituales son triviales: 31 dígitos en vez de 32 porque al copiar se perdió uno, un espacio al final procedente de una celda de hoja de cálculo, o una cadena de 32 dígitos sin guiones. Lo último es una forma de almacenamiento corriente y perfectamente normal en una columna, solo que no es la forma textual.

En esos casos aquí se dice qué ha fallado, en vez de limitarse a «no válido». Ese es el valor real: quien recibe un identificador dentro de un mensaje de error quiere saber si ha perdido un carácter o si la otra parte ha enviado algo que nunca fue un UUID.

Qué significa esto para el RGPD

Un UUID no es por sí mismo un dato personal, pero suele ser la llave que lleva a uno: un identificador de usuario, una clave de sesión, un número de expediente de un sistema de soporte. Como la comprobación ocurre en la página, nada de eso se nos comunica.

Con los identificadores versión 1 se añade que llevan información dentro: el instante y, posiblemente, la MAC del equipo que los creó. Mandar precisamente esos valores por un formulario ajeno sería la peor idea — y es la razón por la que aquí el análisis se hace donde el identificador ya está.

Validar UUID: preguntas frecuentes

¿Me dice si el UUID existe en mi base de datos?

No. Solo se comprueba la forma: longitud, caracteres permitidos, versión y variante. No hay ningún registro de UUID asignados ni dígito de control — un identificador no lleva información sobre si se ha usado.

¿Dónde está exactamente la versión?

En el primer carácter del tercer grupo, el decimotercer dígito hexadecimal. Un 4 es aleatorio, un 1 basado en tiempo, un 7 ordenable en el tiempo, y el 3 y el 5 son las variantes basadas en nombre.

Mi identificador está en mayúsculas, ¿es válido?

Sí. La especificación exige minúsculas al generar y tolerancia al leer. .NET y muchas herramientas de Windows escriben en mayúsculas. Quien compare por su cuenta debería normalizar antes.

¿Por qué un UUID de solo ceros sale como válido?

Porque el UUID nil está expresamente en la especificación y significa «ninguno». Formalmente es correcto. En datos de producción suele ser, aun así, la huella de un generador que ha fallado en silencio.

¿Sale de mi equipo el identificador?

No. El análisis ocurre en esta página. Importa sobre todo con los identificadores versión 1, que contienen el instante de creación y tradicionalmente la MAC del equipo que los generó.

Otras herramientas