- Tipo
- Versión 7: fecha Unix ordenable
- Variante
- RFC 9562 (antes RFC 4122)
- Fecha de creación
- 22 feb 2022, 16:22:22 2022-02-22T19:22:22.000Z · 1645557742000 ms
017f22e2-79b0-7cc3-98c4-dc0c0c07398f017F22E2-79B0-7CC3-98C4-DC0C0C07398F{017F22E2-79B0-7CC3-98C4-DC0C0C07398F}urn:uuid:017f22e2-79b0-7cc3-98c4-dc0c0c07398f01FWHE4YDGFK1SHH6W1G60EECF017f22e279b07cc398c4dc0c0c07398f1989357241971137676463954034883508623AX8i4nmwfMOYxNwMDAc5jw==Cómo funciona
Un UUID es un número de 128 bits que se escribe como 32 dígitos hexadecimales en cinco grupos (8-4-4-4-12). Sirve para identificar un registro sin preguntar a nadie si el valor ya está en uso: dos servidores, dos apps móviles o dos procesos pueden crear identificadores a la vez sin coordinarse y sin chocar. El formato lo define la RFC 9562, que en 2024 sustituyó a la RFC 4122 y añadió las versiones 6, 7 y 8.
El dígito que abre el tercer grupo indica la versión, y cada versión organiza los bits de otra manera. La 4 es puro azar. La 7 empieza con la fecha en milisegundos, así que los identificadores quedan ordenados por creación. Las versiones 3 y 5 no tienen nada aleatorio: salen del hash de un espacio de nombres y un nombre, y por eso siempre dan el mismo resultado. La 1 y la 6 llevan una fecha con precisión de 100 nanosegundos y un nodo que históricamente era la MAC del ordenador.
El analizador hace el camino inverso: lee la versión y la variante, recupera la fecha de los UUID v1, v6 y v7 y de los ULID, y muestra el mismo valor escrito como GUID, URN, hexadecimal, entero o Base64. Todo se calcula en tu navegador; ningún identificador viaja a un servidor.
Ejemplos
v5 · DNS · www.example.com2ed6657d-e927-568b-95e1-2665a8aea6a2Es el vector de prueba de la RFC 9562. Cualquier biblioteca que implemente bien la versión 5 tiene que devolver exactamente este valor para ese nombre en el espacio DNS.017F22E2-79B0-7CC3-98C4-DC0C0C07398F2022-02-22T19:22:22.000ZLos primeros 12 dígitos de un UUID v7 son los milisegundos Unix en hexadecimal: 0x017F22E279B0 es 1645557742000.C232AB00-9414-11EC-B3C8-9F6BDECED8461EC9414C-232A-6B00-B3C8-9F6BDECED846El mismo instante como versión 1 y como versión 6. La 6 reordena los bits de la fecha de mayor a menor para que el texto ordene cronológicamente; la secuencia de reloj y el nodo no cambian.01ARZ3NDEKTSV4RRFFQ69G5FAV01563e3a-b5d3-d676-4c61-efb99302bd5bUn ULID ocupa los mismos 128 bits que un UUID, así que se puede guardar en una columna uuid. Pero no tiene versión ni variante: al leerlo como UUID, esos dígitos son parte del azar.Casos de uso
- Crear la clave primaria en el cliente o en varios servicios a la vez, sin esperar a que la base de datos asigne un autoincremental.
- Generar claves de idempotencia para que un pago o un pedido reintentado no se procese dos veces.
- Etiquetar cada petición con un identificador de correlación para seguirla a través de los logs de varios microservicios.
- Derivar con v5 un identificador estable a partir de una clave natural (un correo, una URL, un SKU) para que dos sistemas lleguen al mismo valor sin compartir una tabla.
- Saber cuándo se creó un registro a partir de su UUID v7 o su ULID cuando aparece en un log o en un informe de error.
- Cargar datos de prueba con cientos de identificadores válidos de una sola vez.
Preguntas frecuentes
¿v4 o v7 para una clave primaria?
v7, salvo que tengas un motivo para ocultar la fecha de creación. Los índices de árbol B guardan las claves en orden, y un v4 cae en cualquier lugar del índice: cada inserción toca una página distinta, se dividen páginas y la caché rinde menos. Un v7 siempre va al final, como un autoincremental. Ojo con SQL Server: el tipo uniqueidentifier ordena empezando por los últimos seis bytes, así que ahí un v7 tampoco queda secuencial.
¿Se pueden repetir dos UUID v4?
En teoría sí, en la práctica no. Un v4 tiene 122 bits aleatorios, y para llegar a un 50 % de probabilidad de que haya al menos una repetición habría que generar unos 2,7 × 10¹⁸, es decir, mil millones por segundo durante más de 85 años. La condición es usar un generador criptográfico: los duplicados reales que se reportan vienen de semillas mal inicializadas, no de la matemática.
¿UUID y GUID son lo mismo?
Sí, GUID es el nombre que usa Microsoft y el texto es idéntico; en Windows suele aparecer en mayúsculas y entre llaves. La diferencia está en el binario: Guid.ToByteArray de .NET guarda los tres primeros grupos en little-endian, así que si lees esos bytes en crudo desde otro lenguaje verás los primeros dígitos invertidos.
¿Puedo usar un UUID como token secreto?
Un v4 bien generado tiene 122 bits impredecibles, que bastan para un enlace difícil de adivinar, pero la RFC 9562 aclara que los UUID no están pensados como credenciales: muchas bibliotecas no garantizan un generador criptográfico, y las versiones 1, 6 y 7 revelan la fecha de creación. Para tokens de sesión o de recuperación de contraseña conviene generar bytes aleatorios dedicados.
¿ULID o UUID v7?
Llevan casi la misma información: 48 bits de milisegundos y el resto aleatorio. El ULID se escribe en 26 caracteres sin guiones ni letras ambiguas, más cómodo en una URL. El v7 es un UUID estándar, así que entra en las columnas uuid de PostgreSQL y en cualquier validador sin conversión. Si empiezas de cero y tu base tiene tipo uuid, v7.
¿Por qué el nodo de mis UUID v1 no es mi MAC?
Porque exponer la MAC de la tarjeta de red permite rastrear qué equipo creó cada identificador, y así se identificó al autor del virus Melissa en 1999. La RFC 9562 recomienda usar un nodo aleatorio con el bit multicast encendido, que es lo que hace esta herramienta; el analizador te avisa cuando un UUID v1 tiene una MAC real.