Cómo generar UUID v4
Elige cantidad y formato y genera. Los 128 bits siempre contienen la versión 4 y la variante RFC. Mayúsculas y eliminación de guiones solo cambian la presentación.
- Introduce un entero de 1 a 1.000; el límite evita bloqueos y portapapeles enormes.
- Conserva el formato 8-4-4-4-12 salvo que el destino exija 32 caracteres sin guiones.
- Usa mayúsculas solo por compatibilidad visual; la comparación no debería distinguir entre mayúsculas y minúsculas.
- Copia la lista y valida longitud, formato y restricción única en el destino.
Ejemplos y comportamiento esperado
| Entrada | Salida | Notas |
|---|---|---|
1, minúsculas, con guiones |
550e8400-e29b-41d4-a716-446655440000 |
La forma habitual se divide en grupos 8-4-4-4-12. |
1, mayúsculas |
550E8400-E29B-41D4-A716-446655440000 |
El uso de mayúsculas solo cambia la presentación. |
1, sin guiones |
550e8400e29b41d4a716446655440000 |
La forma compacta conserva los mismos 128 bits. |
Nibble de versión |
xxxxxxxx-xxxx-4xxx-… |
El primer dígito del tercer grupo es 4. |
Nibble de variante |
…-[8|9|a|b]xxx-… |
El primer dígito del cuarto grupo contiene la variante RFC. |
Cantidad 1001 |
Rechazado |
El máximo por operación es 1.000. |
Estructura y estándar UUID v4
Un UUID es un identificador de 128 bits escrito normalmente como 32 dígitos hexadecimales en grupos 8-4-4-4-12. La versión 4 reserva bits de versión y variante y deja 122 bits aleatorios.
Se prefiere crypto.randomUUID. Si no existe, se llenan 16 bytes con crypto.getRandomValues y se ajustan los bits requeridos. No existe respaldo con Math.random. Las opciones de formato se aplican después.
- La forma canónica suele usar minúsculas y guiones.
- La versión es 4.
- La variante empieza por 8, 9, a o b.
Aleatoriedad y colisiones
Con 122 bits aleatorios, una colisión es despreciable a escalas normales si la fuente es correcta. Esto permite crear identificadores en clientes independientes sin coordinar una secuencia central.
También importan errores de implementación, máquinas clonadas y columnas truncadas. Conserva el valor completo y usa una restricción UNIQUE cuando la integridad dependa de no repetir. La página no puede verificar qué ocurre después de copiar.
- Usa una restricción única en base de datos.
- No trunques UUID para crear códigos cortos.
- Prueba que una importación conserve los 32 dígitos.
Identificador, no secreto
Un UUID aleatorio es menos predecible que un entero secuencial, pero no es credencial. Puede aparecer en URL y registros. La autorización debe comprobarse en cada solicitud; conocer el ID no debe conceder acceso.
Tampoco lo uses directamente como clave de cifrado o token de restablecimiento. Esos diseños requieren entropía, almacenamiento, expiración, rotación y revocación específicos.
- Separa identificación y autorización.
- No trates todo UUID como secreto.
- Usa tokens específicos para credenciales.
Lotes y formato textual
Los lotes sirven para fixtures, migraciones y datos semilla. El máximo de 1.000 limita memoria y errores de entrada. Cada UUID se genera de forma independiente.
Los guiones mejoran el reconocimiento; algunos sistemas antiguos exigen 32 caracteres. Las mayúsculas y minúsculas pueden afectar comparaciones textuales estrictas. Define una representación en los límites del sistema.
- La salida usa un UUID por línea.
- Mayúsculas y minúsculas representan el mismo valor.
- Algunos validadores exigen forma canónica.
Usos y alternativas
UUID v4 resulta útil para claves distribuidas, registros creados por clientes, archivos, correlación y pruebas. Evita revelar contadores, aunque hay que evaluar índices en cargas altas.
Una marca temporal es predecible; un hash depende del contenido; un entero autoincremental puede ser más simple en una sola base. Elige UUID cuando la unicidad descentralizada aporte valor.
- Crear IDs sin contactar un backend.
- Asignar correlación en sistemas distribuidos.
- Preparar mapeos de importación.
- No usar UUID v4 para ordenar cronológicamente.
Errores, soporte y verificación
Se rechazan cantidades no enteras, menores que uno o mayores que 1.000. Si no hay Web Crypto seguro, la generación falla en lugar de degradarse a aleatoriedad débil.
Las pruebas verifican forma, versión, variante y límite, pero una prueba determinista no demuestra la calidad de entropía de un dispositivo real. Esta entrega no presenta mocks o pruebas Node como validación de navegador real.
- Web Crypto moderno suele requerir HTTPS o un contexto local fiable.
- Valida la forma en APIs.
- Una expresión regular no prueba origen seguro.
Diferencias con hashes y tiempo
UUID v4 es aleatorio e independiente del contenido. Un hash es determinista y sirve para integridad; una marca representa tiempo; HMAC autentica datos con clave.
Esta página implementa solo v4. Si necesitas orden temporal, evalúa un estándar específico y no inventes concatenaciones propias.