Developer Tools

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.

7 min de lectura

Server room abstract

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.