Si has visto "UUID" y "GUID" en la documentación y te preguntabas si son dos cosas distintas, aquí va la versión corta: son el mismo identificador de 128 bits. GUID es el nombre de Microsoft; UUID es el término del estándar oficial y de casi todo el mundo. Esta guía explica qué son, recorre las versiones de UUID con foco en la v4 aleatoria que más usarás, y muestra exactamente dónde encajan en bases de datos, APIs y testing.
Respuesta rápida
UUID y GUID son lo mismo: un identificador único de 128 bits escrito como 32 dígitos hexadecimales en el patrón 8-4-4-4-12. "GUID" es la terminología de Microsoft; "UUID" es el término del estándar RFC. Para la mayoría de aplicaciones quieres UUID versión 4 (aleatorio).
UUID vs GUID: ¿son lo mismo?
Sí. UUID (Universally Unique Identifier) y GUID (Globally Unique Identifier) se refieren al mismo valor de 128 bits. El nombre GUID viene del mundo Microsoft - .NET, SQL Server, COM y el registro de Windows lo llaman GUID - mientras que UUID es el nombre de la especificación formal (originalmente RFC 4122, actualizada por RFC 9562 en 2024) y de ecosistemas como PostgreSQL, Java, Python y JavaScript.
En el día a día puedes tratar las palabras como intercambiables. Un GUID generado en C# y un UUID generado en Python tienen el formato idéntico y pueden vivir en la misma columna de base de datos. Las únicas diferencias que puedes encontrar son cosméticas: las herramientas de Microsoft a veces envuelven el valor entre llaves como {xxxxxxxx-...}, y históricamente algunas APIs de Microsoft almacenaban partes del valor en otro orden de bytes. La forma canónica en texto es la misma en todas partes.
Cómo se ve un UUID/GUID
Un UUID son 128 bits, normalmente mostrados como 32 dígitos hexadecimales divididos en cinco grupos separados por guiones: el familiar layout 8-4-4-4-12:
Ejemplo de UUID (v4)
3f2504e0-4f89-41d3-9a0c-0305e82c3301
Dos posiciones de esa cadena no son aleatorias: el primer dígito del tercer grupo codifica la versión (el 4 de arriba), y el primer dígito del cuarto grupo codifica la variante (normalmente 8, 9, a o b). Todo lo demás en un UUID v4 es aleatorio.
Resumen de versiones de UUID
El estándar define varias versiones, cada una generada de forma distinta. Rara vez necesitas más de una, pero conviene saber qué existe:
- v1 - basada en tiempo: se construye con la marca temporal actual más la dirección MAC de la máquina. Ordenable por momento de creación, pero puede filtrar la MAC y el instante en que se creó.
- v3 - basada en nombre (MD5): un hash MD5 determinista de un namespace más un nombre, así que la misma entrada siempre produce el mismo UUID.
- v4 - aleatoria: 122 bits aleatorios. Es el valor por defecto de la mayoría de aplicaciones y la versión que produce el generador de este sitio.
- v5 - basada en nombre (SHA-1): como v3 pero usa SHA-1; preferible a v3 cuando necesitas IDs deterministas.
- v6 / v7 / v8 - más recientes (RFC 9562, 2024): v7 está ordenada por tiempo y es amigable con bases de datos, y está convirtiéndose rápido en la opción recomendada para nuevas claves primarias.
La versión 4 es la caballo de batalla. Sus 122 bits de aleatoriedad hacen las colisiones accidentales prácticamente imposibles para cualquier número realista de IDs: podrías generar miles de millones por segundo durante años y no esperar un duplicado. Como no necesita un coordinador central, cualquier servicio, dispositivo o ejecución de test puede crear sus propios IDs sin conexión.
Cuándo usar UUIDs (y cuándo no)
Los UUIDs brillan cuando necesitas un identificador único que pueda crearse en cualquier sitio sin pedir permiso a una autoridad central.
Claves primarias en bases de datos
Una clave primaria UUID te permite generar el ID en el código de la aplicación antes de insertar la fila, fusionar datos de varias bases sin colisiones de clave y evitar exponer un contador secuencial adivinable de tus registros. Las contrapartidas son el tamaño (16 bytes frente a 4-8 de un entero) y, con v4 aleatoria, la fragmentación de índices en tablas grandes. Si el rendimiento de escritura importa, prefiere una v7 ordenada por tiempo y almacena el valor en una columna nativa uuid o binaria en lugar de una cadena de 36 caracteres.
IDs de recursos y de peticiones en APIs
Los IDs públicos en APIs REST y GraphQL encajan muy bien con UUIDs. No son secuenciales, así que un cliente no puede adivinar /users/2 a partir de /users/1, y cada cliente o servicio puede generar sus propios request IDs y claves de idempotencia en local sin un round trip al servidor.
Testing y fixtures
En tests automatizados, datos semilla y scripts de carga, los UUIDs te dan identificadores sin colisiones sin mantener contadores. Genera un lote nuevo en cada ejecución para que los registros no choquen entre suites paralelas.
Omite los UUIDs cuando basta un entero autoincremental sencillo: tablas internas pequeñas de lookup, o donde un ID corto y legible sea más útil que la unicidad global. Y nunca trates un UUID como un secreto: un UUID v4 es difícil de adivinar, pero es un identificador, no un sustituto de un token firmado o una clave criptográfica.
UUIDs en MongoDB, Java y Python
Cada stack importante puede generar y almacenar UUIDs de forma nativa; aquí va la referencia rápida:
- MongoDB: el _id por defecto es un ObjectId, no un UUID, pero puedes guardar un UUID en _id o en cualquier campo con el BSON UUID (Binary subtype 4). Los drivers exponen helpers como UUID() para que el valor siga siendo 16 bytes en lugar de una cadena de 36 caracteres.
- Java: java.util.UUID.randomUUID() devuelve un UUID v4 y UUID.fromString() lo parsea; Hibernate/JPA lo mapean a una columna nativa uuid o binary(16).
- Python: el módulo uuid integrado te da uuid.uuid4() para IDs aleatorios (además de uuid1 y uuid5); llama a str() para la forma texto o .bytes para el valor de 16 bytes.
- .NET / C#: Guid.NewGuid() crea uno y la columna uniqueidentifier de SQL Server lo almacena: este es el "GUID" clásico.
- JavaScript: crypto.randomUUID() genera un UUID v4 conforme al estándar en navegadores modernos y Node.js, sin librería.
Preguntas frecuentes
¿Un GUID es lo mismo que un UUID?
Sí. Describen el mismo identificador de 128 bits. GUID es el nombre que Microsoft usa en .NET, SQL Server y Windows; UUID es el término del estándar RFC oficial y de la mayoría de otros ecosistemas. El formato es idéntico, así que un GUID y un UUID pueden almacenarse y compararse de forma intercambiable.
¿Qué versión de UUID debería usar?
Usa la versión 4 (aleatoria) para IDs únicos de propósito general: es la más común y no necesita coordinación. Si eliges claves primarias para una base de datos grande y con muchas escrituras, considera la versión 7, ordenada por tiempo e indexada con más eficiencia. Usa v5 cuando necesites que la misma entrada produzca siempre el mismo ID.
¿Pueden colisionar dos UUIDs alguna vez?
En teoría sí, en la práctica no. Un UUID v4 tiene 122 bits aleatorios, así que las probabilidades de generar un duplicado son astronómicamente pequeñas: tendrías que crear miles de millones de UUIDs por segundo durante muchos años para que una colisión fuera probable. Para todos los fines prácticos son únicos.
¿Los UUIDs son seguros o secretos?
Un UUID v4 aleatorio es prácticamente imposible de adivinar, pero es un identificador, no una credencial. No lo uses como contraseña, secreto de sesión o única protección de un recurso. Combínalo con autenticación adecuada y tokens firmados donde importe la seguridad.
¿Por qué mi GUID tiene llaves?
Las herramientas de Microsoft a menudo muestran o almacenan GUIDs envueltos en llaves, como {3F2504E0-4F89-41D3-9A0C-0305E82C3301}, y a veces en mayúsculas. Las llaves y mayúsculas son solo formato: quita las llaves y pasa a minúsculas para obtener la forma canónica de UUID usada en todos los demás sitios.
Genera un UUID v4 al instante
Usa el generador gratis de UUID para crear uno o muchos valores UUID v4 (GUID) conformes al estándar en tu navegador: sin registro, y nada sale de tu dispositivo.