Que es un UUID y para que sirve: identificadores unicos universales explicados

9 min de lectura

Aprende que es un UUID, como funcionan las versiones v1, v4 y v7, cuando usarlos y como generarlos gratis. Guia para desarrolladores.

Que es un UUID y por que existe

Un UUID (Universally Unique Identifier) es un identificador de 128 bits (32 caracteres hexadecimales) disenado para ser unico sin necesidad de un servidor central. Ejemplo: 550e8400-e29b-41d4-a716-446655440000.

Por que importa: En sistemas distribuidos (microservicios, bases de datos replicadas, apps offline-first), no puedes depender de un auto-increment centralizado. Los UUIDs permiten que cualquier nodo genere IDs sin coordinacion.

Probabilidad de colision: Para UUID v4 (aleatorio), necesitarias generar 2.7 quintillones (2.7×10^18) de UUIDs para tener un 50% de probabilidad de colision. Generando 1 billon por segundo, tardarias 86 anos.

Genera UUIDs al instante con el generador de UUID de NexTools.

Versiones de UUID: v1, v4, v7 y cuando usar cada una

VersionBasado enOrdenablePredecibleUso recomendado
v1Timestamp + MAC addressSi (parcial)Si (filtra MAC)Legacy, evitar en nuevos proyectos
v4AleatorioNoNoEl mas usado. Default para la mayoria de casos
v5Hash SHA-1 de namespace+nombreNoDeterministaGenerar UUID consistente para un input dado
v7Timestamp Unix ms + aleatorioSi (cronologico)ParcialmenteBases de datos (mejor rendimiento en indices)

Recomendacion 2026: Usa v4 por defecto. Si necesitas ordenamiento cronologico en base de datos, usa v7 (o ULID). Si necesitas IDs deterministas, usa v5.

El generador de NexTools crea UUIDs v4 aleatorios.

UUID vs auto-increment vs ULID vs nanoid

TipoLongitudOrdenableColision-safeLegible
Auto-incrementVariableSiSi (centralizado)Si (1, 2, 3...)
UUID v436 charsNoSi (descentralizado)No
UUID v736 charsSiSiNo
ULID26 charsSiSiMejor que UUID
nanoid21 charsNoSi (configurable)Mejor (URL-safe)

Cuando usar cada uno:

  • Auto-increment: Bases de datos simples, un solo servidor, no expones IDs al usuario.
  • UUID v4: APIs publicas, sistemas distribuidos, cuando no necesitas orden.
  • UUID v7/ULID: Primary keys en PostgreSQL/MySQL con alto volumen de inserciones.
  • nanoid: URLs cortas, tokens de sesion, donde el tamano importa.

UUIDs en bases de datos: rendimiento y mejores practicas

El problema de UUID v4 como primary key: Los UUIDs v4 son aleatorios. Cuando los usas como primary key en un indice B-tree (PostgreSQL, MySQL), cada INSERT va a una posicion aleatoria del arbol, causando fragmentacion. En tablas con millones de filas, esto puede hacer los inserts 2-5x mas lentos que auto-increment.

Solucion 1: UUID v7. Los UUIDs v7 empiezan con el timestamp, asi que son cronologicamente ordenados. Los inserts siempre van al final del indice, como auto-increment. Mejor rendimiento.

Solucion 2: ULID. Similar a UUID v7 pero mas compacto (26 chars vs 36) y con mejor codificacion (Crockford Base32 vs hex).

PostgreSQL: Usa el tipo nativo uuid (16 bytes, eficiente). Desde PostgreSQL 17 hay soporte nativo para UUID v7 con gen_random_uuid().

MySQL: Almacena como BINARY(16), no como VARCHAR(36). La diferencia de rendimiento es enorme (16 bytes vs 36 bytes en cada fila e indice).

Seguridad: son los UUIDs seguros como tokens

UUID v4 NO es un token de seguridad. Aunque tiene 122 bits de aleatoriedad (suficiente para ser unico), no fue disenado para ser impredecible de forma criptografica. La fuente de aleatoriedad depende de la implementacion.

Para tokens de autenticacion: Usa crypto.randomBytes(32) (Node.js) o secrets.token_hex(32) (Python). Estos usan CSPRNG (Cryptographically Secure Pseudo-Random Number Generator).

UUIDs en URLs: Exponer UUIDs en URLs es generalmente seguro para IDs de recursos (como /api/users/550e8400-...). Pero NO para tokens de acceso, links de reset de contrasena, o cualquier cosa que otorgue privilegios.

Si necesitas generar contrasenas seguras, usa el generador de contrasenas de NexTools. Para hash de datos, el generador de hash.

Como generar UUIDs: herramientas y codigo

Online: El generador de UUID de NexTools crea v4 aleatorios en tu navegador. Todo local, sin enviar datos.

JavaScript/Node.js:

import { randomUUID } from 'crypto';
console.log(randomUUID()); // v4 nativo desde Node 14.17

Python:

import uuid
print(uuid.uuid4()) # v4 aleatorio

Terminal (Linux/Mac):

uuidgen

PostgreSQL:

SELECT gen_random_uuid();

MySQL:

SELECT UUID(); (genera v1, no v4)

Anatomia de un UUID: que significa cada parte

Un UUID v4 tiene este formato: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx

Ejemplo: 550e8400-e29b-41d4-a716-446655440000

  • Posicion 13 (el "4"): Indica la version (4 = aleatorio, 7 = timestamp, etc.)
  • Posicion 17 (la "a"): Indica la variante (8, 9, a, b = variante RFC 4122)
  • El resto: 122 bits aleatorios (en v4) o timestamp + aleatorio (en v7)

Los guiones (-) son opcionales tecnicamente. 550e8400e29b41d4a716446655440000 es el mismo UUID. Los guiones son convencionales para legibilidad.

Tamano: 128 bits = 16 bytes. Como string con guiones: 36 caracteres. Como hex sin guiones: 32 caracteres. Como Base64: 22 caracteres.

UUIDs en el mundo real: quien los usa y como

Bases de datos: PostgreSQL usa UUIDs extensivamente. MongoDB usa ObjectIDs (12 bytes, similar concepto). DynamoDB recomienda UUIDs como partition keys.

APIs: La mayoria de APIs REST usan UUIDs para IDs de recursos. Stripe, Twilio, GitHub, AWS — todos retornan UUIDs en sus respuestas.

Bluetooth: El protocolo Bluetooth usa UUIDs para identificar servicios y caracteristicas. El UUID base de Bluetooth es 00000000-0000-1000-8000-00805F9B34FB.

Microsoft COM: Los GUIDs (Globally Unique Identifiers) de Windows son UUIDs. Cada componente COM tiene un GUID unico.

Sistemas de archivos: GPT (GUID Partition Table) usa UUIDs para identificar particiones de disco.

Prueba esta herramienta:

Abrir herramienta

Preguntas frecuentes

Un UUID puede repetirse o colisionar

Teoricamente si, pero la probabilidad es astronomicamente baja. Para UUID v4, necesitarias generar 2.7 quintillones para 50% de probabilidad de colision. En la practica, una colision UUID v4 es menos probable que ser alcanzado por un meteorito.

Que version de UUID debo usar

UUID v4 (aleatorio) para la mayoria de casos. UUID v7 si necesitas ordenamiento cronologico en base de datos. UUID v5 si necesitas IDs deterministas (mismo input = mismo UUID). Evita v1 en nuevos proyectos (expone MAC address).

Puedo usar UUID como contrasena o token de seguridad

No recomendado. UUID v4 tiene buena aleatoriedad pero no fue disenado como token criptografico. Para tokens de autenticacion usa crypto.randomBytes() o equivalente que use CSPRNG.

Por que UUID v4 es lento como primary key en bases de datos

Porque es aleatorio, cada INSERT va a una posicion aleatoria del indice B-tree, causando fragmentacion. UUID v7 o ULID resuelven esto siendo cronologicamente ordenados (inserts siempre al final).

UUID y GUID son lo mismo

Practicamente si. GUID (Globally Unique Identifier) es el termino de Microsoft para UUID. El formato y la generacion son identicos. UUID es el termino estandar (RFC 4122).

Puedo acortar un UUID para hacerlo mas legible

Si. Puedes codificarlo en Base64 (22 chars vs 36) o Base62 (22 chars, URL-safe). O usar formatos alternativos como nanoid (21 chars) o ULID (26 chars). El trade-off es menor compatibilidad con herramientas que esperan formato UUID estandar.