UUIDs explicados: cuándo usarlos y cómo funcionan
Aprende qué son los UUIDs, las diferencias entre versiones, el riesgo de colisiones y cómo generarlos de forma segura para bases de datos y APIs.
Un UUID (Universally Unique Identifier) es una etiqueta de 128 bits, generalmente escrita como xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Los desarrolladores usan UUIDs como claves primarias, IDs de correlación y tokens opacos, ya que pueden crearse sin un coordinador central y aun así tener una probabilidad extremadamente baja de colisionar.
¿Por qué no usar simplemente enteros?
Los enteros auto-incrementales son simples y compactos, pero filtran información: los competidores pueden adivinar cuántos pedidos tienes o raspar recursos iterando los IDs. Los UUIDs son imposibles de adivinar en la práctica y es seguro exponerlos en URLs y código del lado del cliente.
Los UUIDs no son una característica de seguridad por sí mismos. Si necesitas autorización, aplícala igualmente en el servidor.
Versiones comunes de UUID
| Versión | Cómo se genera | Uso típico |
|---|---|---|
| v1 | Dirección MAC + marca de tiempo | Legado; evitar si te importa la privacidad |
| v4 | Bits aleatorios | Opción predeterminada para sistemas nuevos |
| v5 | Hash SHA-1 de un namespace + nombre | IDs deterministas a partir de entradas estables |
La mayoría de las aplicaciones actuales usan UUID v4 para claves primarias. Algunos equipos prefieren ULIDs o Snowflake IDs para cadenas ordenables por tiempo; los UUIDs siguen siendo los más ampliamente soportados.
Probabilidad de colisión
Con v4, la probabilidad de una colisión es astronómicamente baja hasta que se generan miles de millones de IDs por segundo. Para aplicaciones web normales, tratar las colisiones como algo imposible es razonable, siempre que la fuente de aleatoriedad sea criptográficamente robusta (usa el CSPRNG del sistema operativo o del lenguaje, no Math.random() para IDs sensibles a la seguridad).
// Browser: prefer crypto.randomUUID() when available
const id = crypto.randomUUID();
console.log(id); // e.g. 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d
Consejos prácticos
- Índices de base de datos: Los UUIDs aleatorios fragmentan los índices B-tree más que los IDs secuenciales.
gen_random_uuid()de PostgreSQL, UUID v7 (ordenado por tiempo) o trucos estilo COMB pueden ayudar si el rendimiento de inserción importa a gran escala. - Registros y trazabilidad: Usa un UUID por solicitud como ID de correlación para poder rastrear los logs entre servicios.
- Pruebas: Genera UUIDs nuevos en los fixtures para que las pruebas no dependan de valores fijos, a menos que necesites reproducibilidad (en ese caso, v5 o un generador con semilla pueden ser más adecuados).
Pruébalo en el navegador
Usa nuestro Generador de UUID gratuito para crear identificadores estilo v4 al instante, sin registro y con todo ejecutándose localmente en tu pestaña.
Para flujos de trabajo relacionados, también puede interesarte el Generador de Hash para sumas de verificación y el Decodificador de JWT cuando depures tokens que suelen aparecer junto a UUIDs en las APIs.