Desarrollo

Generador de UUID

Genera hasta mil identificadores de una vez, en el formato que pida tu base de datos o tu archivo de configuración. Los bits aleatorios vienen del generador criptográfico de tu navegador, no de Math.random. Pega abajo un UUID que ya tengas para ver de qué versión es y cuándo se creó.

v4 es el valor por defecto en casi todas partes. v7 empieza con una marca de tiempo, así que una lista de ellos queda en orden de creación.

Entre 1 y 1000.

Formato

Minúsculas con guiones es la forma canónica. Las demás existen porque Windows y XML quisieron cada uno la suya.

Inspeccionar un UUID

    Qué guardan los 32 dígitos

    Un UUID son 128 bits, escritos como 32 dígitos hexadecimales en el patrón 8-4-4-4-12 que lo deja en 36 caracteres con los guiones. Dos regiones pequeñas de esos bits no son carga útil. Cuatro bits dicen qué versión lo generó, y dos o tres más marcan la variante, que indica de quién son las reglas de disposición que se aplican. Eso deja 122 bits en los que un UUID de versión 4 puede ser aleatorio.

    El nibble de versión es el decimotercer dígito hexadecimal — el que va justo después del segundo guion. En un UUID v4 siempre es 4, y por eso tantos UUID que ves llevan un 4 en esa posición. La variante aparece como el decimoséptimo dígito, que es 8, 9, a o b. Esos dos datos son todo lo que hace realmente el inspector de arriba.

    v4 o v7

    La versión 4 es pura aleatoriedad y desde hace veinte años es la opción sensata por defecto. La versión 7 se estandarizó en el RFC 9562 en 2024, junto con v6 y v8, y reemplazó al antiguo RFC 4122. Pone al frente una marca de tiempo Unix de 48 bits en milisegundos y llena el resto con bits aleatorios.

    El motivo por el que esto importa son los índices de la base de datos. Una clave primaria v4 cae en un punto aleatorio del índice en cada inserción, así que la base de datos está todo el tiempo dividiendo páginas que no ha tocado recientemente y volviéndolas a leer del disco. Una clave v7 se agrega al final, porque cada valor nuevo es mayor que el anterior, así que las inserciones se concentran en las páginas que ya están en memoria. En una tabla con millones de filas esa es la diferencia entre un índice que entra en la caché y uno que no.

    El costo de v7 es que le dice a todo el mundo cuándo se creó la fila, al milisegundo. Si el identificador es público y la hora de creación no es algo que quieras publicar — un ID de pedido que revela tu ritmo de ventas, por ejemplo — eso es una fuga real, y v4 es la opción correcta.

    Las colisiones, y por qué nadie se preocupa por ellas

    Con 122 bits aleatorios, tendrías que generar aproximadamente 2,7 trillones de UUID v4 — un 27 seguido de diecisiete ceros — antes de llegar a un 50% de probabilidad de una sola colisión en todo el conjunto. Ese número sale de la paradoja del cumpleaños: es una cota, no una garantía, y solo se sostiene si los bits son genuinamente aleatorios. Esta herramienta los toma de crypto.getRandomValues, el generador criptográfico del navegador.

    El modo de falla que sí ocurre es una mala fuente de aleatoriedad. Varias bibliotecas viejas de JavaScript construían UUID con Math.random, que es rápido, predecible y nunca se pensó para esto. Esos UUID se ven idénticos a los buenos — el nibble de versión sigue siendo un 4 — y ningún inspector puede distinguirlos. Si heredaste un código que genera UUID a mano, vale la pena revisarlo.

    No uses un UUID como secreto

    Un UUID v4 tiene suficiente entropía para que no se pueda adivinar, así que la tentación de usarlo como token de restablecimiento de contraseña o como enlace privado para compartir se entiende. Dos problemas. Todo lo que está por debajo de v4 no es aleatorio en absoluto — un UUID v1 expone una marca de tiempo y muchas veces una dirección MAC, y v3 y v5 son hashes de un nombre que quizá puedas adivinar. Y en la mayoría de los sistemas los UUID se tratan como identificadores, lo que significa que terminan en los logs, en la analítica, en las cabeceras Referer y en los tickets de soporte. Genera los tokens con una herramienta pensada para secretos.

    Cómo guardarlos

    Un UUID son 16 bytes. Guardado como CHAR(36) ocupa 36, y cada índice sobre él crece en consecuencia. PostgreSQL tiene un tipo uuid nativo que guarda los 16 bytes reales; MySQL no, así que BINARY(16) con la conversión hecha en los bordes de la aplicación es la respuesta habitual. Mantén la forma de texto en minúsculas y con guiones, porque esa es la representación canónica y mezclar mayúsculas y minúsculas convierte las comparaciones de igualdad en una cacería de errores.

    Lo que esta herramienta no genera

    El inspector también tiene un límite que vale la pena nombrar: lee bits y nada más. Cualquier cadena de 32 dígitos hexadecimales con una versión y una variante plausibles se va a reportar como un UUID válido, porque eso es todo lo que un UUID es. No puede decirte si se generó correctamente, ni si significa algo dentro de tu sistema.

    Preguntas frecuentes

    ¿Cuál es la diferencia entre un UUID y un GUID?

    Ninguna que importe. GUID es el nombre que usa Microsoft para el mismo identificador de 128 bits, a veces escrito entre llaves y en mayúsculas. El inspector de arriba lee los dos, y el campo de variante es el único lugar donde aparece la disposición heredada de Microsoft.

    ¿Debo usar UUID v4 o v7 para una clave primaria de base de datos?

    v7, en casi todos los casos. Su prefijo de marca de tiempo hace que las inserciones se agreguen al final del índice en lugar de dispersarse por todo él, lo que mantiene en memoria las páginas calientes. Elige v4 cuando la hora de creación tenga que quedar privada.

    ¿Pueden dos UUID ser iguales alguna vez?

    En principio sí, en la práctica no. Llegar a un 50% de probabilidad de una colisión lleva alrededor de 2,7 trillones de UUID v4 (un 27 seguido de diecisiete ceros), suponiendo una fuente aleatoria adecuada. El riesgo realista es un generador débil, como uno construido sobre Math.random.

    ¿Es seguro usar un UUID como token de seguridad?

    No. Usa en su lugar un generador hecho para secretos. Hasta un UUID v4 termina tratado como identificador por todo lo que viene después, así que se filtra a los logs, a la analítica y a las cabeceras Referer, y las versiones más viejas contienen una marca de tiempo o una dirección MAC en lugar de aleatoriedad.

    ¿Por qué todos los UUID que veo tienen un 4 en el mismo lugar?

    Ese dígito es el campo de versión, y la versión 4 es la más común. El dígito que sigue al tercer guion es la variante, y por eso tantos UUID también llevan un 8, un 9, una a o una b ahí.

    Última actualización 19 de septiembre de 2026