¿Qué es un UUID?
Un UUID (identificador único universal) es un valor de 128 bits representado como una cadena de 36 caracteres como 550e8400-e29b-41d4-a716-446655440000. El formato y la semántica de versión están definidos por RFC 4122 para v1 a v5, y por RFC 9562 para las versiones más nuevas v6, v7 y v8. Esta herramienta genera v4 (puramente aleatoria), v1 (marca de tiempo más ID de nodo aleatorio) y v7 (prefijo de marca de tiempo en milisegundos Unix más sufijo aleatorio, ordenable por momento de generación) — todo en tu navegador, usando la Web Crypto API de la plataforma. Ningún dato se envía a un servidor.
¿Cómo funciona la generación de UUID?
Cada versión equilibra de forma distinta determinismo, ordenabilidad y entropía. La herramienta elige el algoritmo correcto según tu selección:
- v4 (aleatoria) llama a
crypto.randomUUID()del navegador, que devuelve 122 bits de aleatoriedad criptográfica con los 6 bits fijos (versión0100y variante10) colocados en las posiciones correctas. Las colisiones son astronómicamente improbables: tendrías que generar aproximadamente 2,71 trillones de UUID v4 para alcanzar un único duplicado con un 50% de probabilidad. - v1 (marca de tiempo + nodo) empaqueta una marca de tiempo gregoriana de 60 bits (intervalos de 100 nanosegundos desde el 15-10-1582) en
time_low/time_mid/time_hi_and_version, fija el nibble de versión en0001, elige una secuencia de reloj de 14 bits con los bits de variante establecidos y usa un ID de nodo aleatorio de 48 bits con el bit multicast forzado a uno (RFC 4122 §4.5 permite explícitamente un ID de nodo aleatorio cuando no hay una MAC de hardware disponible; el bit multicast lo marca como no-MAC). - v7 (marca de tiempo ordenable), según RFC 9562 §5.7, dispone una marca de tiempo Unix de 48 bits en milisegundos en big-endian, luego la versión de 4 bits
0111, luego 12 bits aleatorios, luego la variante de 2 bits10, y luego 62 bits aleatorios más. Como la marca de tiempo está en los bits más significativos, los UUID v7 se ordenan lexicográficamente en orden de generación, una propiedad que ninguna otra versión de UUID ofrece sin codificación adicional. - Toda la aleatoriedad proviene de
crypto.getRandomValues(), el RNG criptográficamente seguro del navegador. Tanto v1 como v7 incluyen una protección monotónica intra-tick para que dos llamadas consecutivas dentro del mismo tic de reloj sigan ordenando la segunda por encima de la primera, importante para generaciones en lote que compiten contra el reloj de milisegundos. - El pipeline de formato se ejecuta tras la generación. Puedes eliminar guiones, cambiar a mayúsculas, envolver el valor entre llaves (
{…}, la convención GUID de Microsoft) o representar los 16 bytes en bruto como base64 (salida de 22 caracteres, sin relleno). El modo base64 anula las demás opciones de formato porque es su propia representación.
¿Por qué usar este generador UUID?
- Nada sale de tu navegador. La Web Crypto API se ejecuta localmente; la página no realiza ninguna petición de red después de cargar el documento inicial. Abre las DevTools, haz clic en Generar y el panel Red permanecerá en silencio.
- Salida conforme al RFC. v4 sigue RFC 4122 §4.4, v1 sigue §4.2 y §4.5, y v7 sigue RFC 9562 §5.7. El nibble de versión y los bits de variante están colocados donde indican los estándares: cada UUID supera la expresión regular canónica de su versión.
- v7 ordenable para claves de base de datos. Un UUID v7 usado como clave primaria agrupada en Postgres, MySQL o SQL Server mantiene las inserciones en modo append sobre el índice — sin divisiones de página, sin E/S aleatoria — y a la vez sigue siendo globalmente único. v4 no puede hacer esto porque sus bits son aleatorios.
- Generación en lote sin límites de velocidad. Genera 1, 10, 100 o 1.000 UUID a la vez. No hay cuota ni registro: la herramienta corre en tu pestaña, así que el tope es tu CPU, no el plan de API de un proveedor.
¿Cuáles son las aplicaciones comunes de los UUID?
Los UUID aparecen donde un sistema necesita un identificador globalmente único sin coordinarse con una autoridad central:
- Claves primarias de base de datos. Los enteros autoincrementales filtran recuentos de filas y rompen el sharding. Los UUID son estables entre shards, seguros para fusionar entre regiones y (con v7) mantienen las inserciones en el B-tree calientes sin divisiones de página. Una aplicación típica genera el UUID en el cliente, lo envía en el INSERT y nunca tiene que hacer round-trip al servidor para obtener la clave.
- IDs de correlación de peticiones. El middleware HTTP adjunta un UUID v4 a cada petición entrante, lo registra en cada span y lo propaga aguas abajo (a menudo como cabecera
X-Request-Id). Cuando un cliente reporta un error, el ingeniero de soporte pega el ID y aparece el trazado completo de la petición — entre servicios y zonas horarias — sin ambigüedad. - Claves de idempotencia. Las APIs de pago (Stripe, Adyen, Square) aceptan una cabecera
Idempotency-Keypara que una petición reintentada nunca cobre al cliente dos veces. Un UUID generado en el cliente garantiza que la clave sea única por operación lógica, que es el contrato exigido por esas APIs.
¿Cómo es un ejemplo de UUID?
En Node.js o en un navegador moderno, la línea única crypto.randomUUID() devuelve un UUID v4 nuevo, por ejemplo 3f50b5a8-2c54-4b9c-9c1f-3e5c7e2b8d12. Úsalo como ID de petición o clave de idempotencia. Cuando el UUID va a una columna de base de datos que será la clave primaria agrupada, genera v7 en su lugar: dos valores v7 producidos con un milisegundo de diferencia, como 0190a3b0-7d4f-7c9e-8b21-a4d6f0bd9c11 y 0190a3b0-7d50-7f15-9c4e-72b3e0c1d8a4, se ordenan lexicográficamente en orden de generación. El tipo uuid de Postgres almacena ambas versiones de forma idéntica — la diferencia aparece al escribir el índice, donde v7 inserta al final del B-tree mientras que v4 dispersa las inserciones y fuerza E/S aleatoria.
Este Generador de UUID hace un solo trabajo: convertir un clic en uno o muchos identificadores conformes al RFC, formateados como los necesites, sin enviar tu petición a ningún servidor. Elige una versión, elige una cantidad, elige un formato — genera, copia, sigue adelante.