DevTools

← Volver al Inicio

UUID: Qué Son, Para Qué Sirven y Cómo Usarlos Correctamente

Blog de DevTools — Herramientas y guías gratuitas para desarrolladores

El Problema que Resuelven los UUID

Identificar cosas es más difícil de lo que parece. Si dos servidores generan registros al mismo tiempo, ¿cómo aseguras que no usen el mismo identificador? Los contadores secuenciales (1, 2, 3...) fallan porque exigen coordinación central. Los UUID resuelven esto con una idea elegante: identificadores tan enormes que la colisión sea, para efectos prácticos, imposible.

Un UUID (Universally Unique Identifier) es un número de 128 bits representado como 36 caracteres, por ejemplo f47ac10b-58cc-4372-a567-0e02b2c3d479. El espacio de valores es tan grande —340 undecillones— que si generarás mil millones de UUID por segundo durante cien años, la probabilidad de un duplicado seguiría siendo despreciable.

Las Versiones de UUID y Cuál Usar

El guión divide el UUID en campos, y la posición del tercer grupo revela la versión:

  • Versión 1 (tiempo + MAC): codifica el timestamp y la dirección MAC de la tarjeta de red. Determinista pero filtra información: expone cuándo y desde qué máquina se generó. En desuso por privacidad.
  • Versión 4 (aleatoria): 122 bits de aleatoriedad pura generados con el generador criptográfico del sistema. Es la versión universal: sin dependencias, sin filtraciones, trivial de implementar. Nuestro generador de UUID v4 online produce exactamente este tipo usando crypto.getRandomValues().
  • Versión 5 (hash de nombre): deriva el UUID de un nombre mediante SHA-1. Útil cuando necesitas que el mismo nombre produzca siempre el mismo identificador (migraciones idempotentes, por ejemplo).
  • Versión 7 (moderna, 2024): combina timestamp ordenable con aleatoriedad. Gana tracción porque los índices de base de datos funcionan mejor con claves que crecen monotónicamente.

Para el 95% de los casos, genera UUID v4 y sigue adelante.

UUID vs IDs Secuenciales en Bases de Datos

Elegir entre AUTO_INCREMENT y UUID como clave primaria tiene trade-offs reales:

  • A favor del UUID: generación descentralizada (cada servidor crea claves sin coordinarse), seguro ante enumeración (una URL tipo /usuarios/f47ac10b-... no revela cuántos usuarios existen ni permite iterarlos), y merges de datos sin conflictos de clave.
  • En contra: ocupan 16 bytes contra 4 u 8 del entero, fragmentan índices B-tree si son totalmente aleatorios (el clásico problema de inserción en posiciones arbitrarias), y son menos cómodos de leer en logs.

La práctica moderna en sistemas distribuidos usa UUID externamente (en URLs y APIs) e internamente optimiza: claves enteras internas con mapeo a UUID público, o directamente UUIDv7 que ordena temporalmente y mitiga la fragmentación.

Formatos y Variantes: Las Opciones que Ofrecemos

Nuestra herramienta soporta los formatos que encontrarás en el mundo real:

  • Estándar con guiones: el formato canónico de 36 caracteres. El default para APIs y bases de datos.
  • Mayúsculas: algunos sistemas (ciertos Active Directory, ERP legacy) esperan UUIDs en mayúsculas; hexadecimalmente son idénticos.
  • Con llaves: formato usado por Windows y COM/ActiveX: {f47ac10b-58cc-4372-a567-0e02b2c3d479}.
  • Sin guiones: 32 caracteres hexadecimales puros; común en tokens compactos y nombres de archivo donde el guión molesta.
  • Generación masiva: hasta 100 UUIDs de golpe para poblar fixtures de prueba o datasets sintéticos.

Casos Reales Donde los UUID Brillian

Nombres de archivo seguros: cuando un usuario sube avatar.png y otro sube avatar.png, guardar ambos como f47ac10b.png y 9e107d9f.png elimina colisiones para siempre.

Correlación de logs distribuidos: asigna un request-id UUID a cada petición entrante y propágalo a todos los microservicios. Cuando algo falla, grepear ese ID reconstruye el recorrido completo.

Idempotencia en pagos: las APIs de Stripe y similares aceptan una clave de idempotencia: si tu cliente se reintenta tras un timeout, envías el mismo UUID y el servidor reconoce que ya procesó esa operación exacta.

Tokens de descarga temporales: un enlace tipo /descarga/<uuid> es impráctico de adivinar comparado con IDs incrementales.

Pruébalo Ahora

Abre el UUID Generator v4, genera diez identificadores y verifica: ninguno se parece a otro, todos cumplen el patrón xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx donde la x marca la versión 4. Todo se genera localmente con aleatoriedad criptográfica: nada viaja a ningún servidor.