Un UUID (Universally Unique Identifier) es un identificador de 128 bits diseñado para ser único sin necesidad de un servidor central que los coordine. Son la solución estándar cuando necesitas IDs que no colisionen entre sistemas distribuidos, bases de datos o dispositivos distintos.
Desde Node.js 19 y los navegadores modernos, no necesitas ninguna librería para generarlos.
La forma moderna: crypto.randomUUID()
crypto.randomUUID();
// → "f47ac10b-58cc-4372-a567-0e02b2c3d479"
Eso es todo. Un UUID v4 criptográficamente seguro en una sola línea. Disponible en:
- Navegadores modernos (Chrome 92+, Firefox 95+, Safari 15.4+)
- Node.js 19+
- Deno y Bun de serie
El formato es siempre el mismo: 8-4-4-4-12 caracteres hexadecimales separados por guiones, 36 caracteres en total.
¿Qué es UUID v4?
Existen 8 versiones de UUID. La v4 es la más usada en desarrollo web porque sus bits son completamente aleatorios (excepto 6 bits que identifican la versión y la variante del RFC).
Con 122 bits de aleatoriedad, la probabilidad de colisión al generar dos UUIDs es de 1 entre 2¹²² — aproximadamente 1 en 5,3 × 10³⁶. En la práctica, es matemáticamente imposible que dos dispositivos generen el mismo UUID de forma espontánea.
UUID vs GUID: ¿son lo mismo?
Sí, con matices. GUID (Globally Unique Identifier) es el nombre que Microsoft usa para su implementación del estándar UUID. Ambos siguen el mismo RFC 4122, así que son intercambiables en la práctica.
La diferencia es que Microsoft históricamente usaba la versión 1 (basada en la dirección MAC del equipo y el timestamp) mientras que el ecosistema web prefiere la v4 (aleatoria). Hoy ambos términos se usan de forma intercambiable.
Cuándo usar UUID
Casos de uso ideales:
- IDs de registros en bases de datos cuando los datos se generan en el cliente antes de sincronizarse con el servidor
- Referencias en sistemas distribuidos donde varios servicios crean entidades de forma independiente
- Tokens de sesión temporales o IDs de transacción
- Nombres únicos de archivos para evitar sobreescrituras accidentales
- IDs de eventos en sistemas de analítica donde el orden no importa
Cuándo NO usar UUID:
Si necesitas IDs ordenables por tiempo de creación, considera ULID (Universally Unique Lexicographically Sortable Identifier) o los UUIDs v7 (disponibles en algunos lenguajes). Los UUIDs v4 son completamente aleatorios y no llevan información temporal.
Si el rendimiento de índices en base de datos es crítico, un BIGINT AUTO_INCREMENT puede ser más eficiente para tablas con millones de registros, aunque sacrifica la capacidad de generación distribuida.
Generación en bulk
Para generar múltiples UUIDs de una vez:
// Array de N UUIDs
function generateBulk(n) {
return Array.from({ length: n }, () => crypto.randomUUID());
}
generateBulk(5);
// → ["a1b2c3d4-...", "e5f6a7b8-...", ...]
UUID en Node.js (todas las versiones)
Si necesitas compatibilidad con Node.js anterior a la v19, el módulo nativo crypto también lo proporciona:
const { randomUUID } = require("crypto"); // CommonJS
// o
import { randomUUID } from "crypto"; // ESM
randomUUID(); // → "f47ac10b-58cc-4372-a567-0e02b2c3d479"
Esto funciona desde Node.js 14.17.0.
Validar que un string es UUID válido
function isValidUUID(str) {
return /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(str);
}
isValidUUID("f47ac10b-58cc-4372-a567-0e02b2c3d479"); // true
isValidUUID("not-a-uuid"); // false
El patrón verifica específicamente la versión 4 (el tercer grupo empieza por 4) y la variante RFC 4122 (el cuarto grupo empieza por 8, 9, a o b).
Comparar UUIDs correctamente
Los UUIDs son case-insensitive por especificación, aunque la mayoría de implementaciones los generan en minúsculas:
function uuidsEqual(a, b) {
return a.toLowerCase() === b.toLowerCase();
}
El mito de las colisiones
Mucha gente desconfía de los UUIDs por miedo a colisiones. Para ponerlo en perspectiva: si generas 1.000 millones de UUIDs por segundo durante 100 años, la probabilidad de que haya alguna colisión es de aproximadamente 50%. Para un sistema que genera miles de UUIDs al día, las colisiones son estadísticamente imposibles en cualquier escala práctica.
Pruébalo ahora
Nuestro generador de UUID online usa exactamente crypto.randomUUID() con generación masiva, historial de los últimos generados y copia con un solo clic. Sin servidores, sin registro, cada UUID se genera localmente en tu navegador.