¿Necesitas un identificador que no entre en conflicto con uno que alguien más haya creado, en una computadora de la que nunca has oído hablar, sin pedirle permiso a nadie? Ese es el trabajo que hace un UUID. Es un número de 128 bits, escrito como 36 caracteres en el familiar patrón 8-4-4-4-12, y todo su diseño consiste en que no habrá dos iguales, a pesar de que nada coordina quién obtiene cuál. Este generador gratuito los crea en tu navegador: elige una versión en Versión, indica cuántos necesitas en Cantidad y haz clic en Generar. La página se abre con un solo v4, la versión que busca la mayoría de los proyectos, por lo que tienes tu primer identificador a un clic de distancia.
Cada identificador es generado por tu navegador a través de la Web Crypto API. La versión 4 usa crypto.randomUUID() si el navegador lo proporciona, y crypto.getRandomValues() en caso contrario; una fuente criptográficamente fuerte de aleatoriedad en lugar de una función seudoaleatoria de JavaScript como Math.random(). La versión 7 coloca una marca de tiempo de 48 bits con precisión de milisegundos al principio, seguida por un contador de 12 bits que aumenta dentro del mismo milisegundo y 62 bits aleatorios, lo cual constituye el método de ordenamiento descrito en el RFC 9562; ese contador es la razón por la que un lote de mil se genera en orden en lugar de estar desordenado. La versión 1 combina una marca de tiempo con un identificador de nodo aleatorio que tiene el bit de multidifusión activado, por lo que nunca incluye la dirección de tu tarjeta de red, a diferencia de como lo hacían las implementaciones originales de la década de 1990. Las versiones 3 y 5 no son para nada aleatorias: calculan el hash de un espacio de nombres junto con un nombre, utilizando MD5 y SHA-1 respectivamente, y ese cálculo también se realiza en tu dispositivo. No se envía nada a ningún servidor, no se registra nada y, una vez que la página ha cargado, sigue funcionando sin conexión.
Versión es el campo que decide todo lo demás. La versión 4 consta de 122 bits aleatorios sin ninguna estructura; es la opción predeterminada y la respuesta correcta cuando un identificador solo necesita ser único. La versión 7 mantiene 62 bits aleatorios, pero comienza con el momento en que se creó, de modo que un conjunto de estos se ordena cronológicamente según su creación; eso la convierte en la versión a la que debes recurrir cuando el identificador se convertirá en una clave de base de datos. La versión 1 es el esquema original basado en tiempo, que se conserva aquí para los sistemas que aún lo requieren. Las versiones 3 y 5 son el par extraño: son deterministas, lo que significa que las mismas entradas producen siempre el mismo identificador, y requieren dos campos adicionales: Espacio de nombres, que puede ser uno de los espacios estándar DNS, URL, OID y X.500 o uno de tipo Personalizado creado por ti, y Nombre, la cadena que se está identificando. Si le pasas a la v5 el espacio de nombres URL y https://example.com/a, obtendrás el mismo UUID hoy, mañana y en la computadora de cualquier otra persona. Debido a eso, Cantidad desaparece cuando se selecciona la v3 o la v5: mil copias de un valor determinista serían solo mil copias de un valor determinista. Para todas las demás versiones, Cantidad va del 1 al 1000.
Cuatro interruptores cambian la forma del resultado sin alterar los 128 bits subyacentes. Mayúsculas imprime los dígitos hexadecimales en versales, Sin guiones proporciona la forma compacta de 32 caracteres que prefieren algunas columnas y nombres de archivo, y Llaves envuelve el valor en { }, que es el formato al que Windows y el mundo de .NET llaman GUID. En Opciones avanzadas, urn:uuid: añade el prefijo que lo convierte en un URN formal; mientras está activado desactiva Llaves y Sin guiones, ya que el estándar permite exactamente un formato URN y es el canónico con guiones. Formato de copia decide cómo se une un lote al copiarlo: uno por línea, separados por comas, o cada valor entre comillas seguido de una coma, ideal para pegarlo directamente en un array en el código. Debajo del resultado hay una línea que informa la aleatoriedad en bits (122 para la v4, 62 para la v7) y, para la v7, la marca de tiempo codificada en el primer identificador del lote, para que el tiempo incluido en el valor sea visible y no simplemente implícito. Tanto Copiar todo como Guardar como archivo respetan el Formato de copia. Historial mantiene tus últimos 10 lotes en tu propio navegador: haz clic en uno para recuperarlo, copia o elimina una entrada individual, o bórralo todo. Borrar vacía el resultado sin cambiar tus ajustes, y a partir de 50 identificadores la lista se convierte en un solo bloque con desplazamiento en lugar de mostrar cincuenta filas.
Lo más importante de esta página es la diferencia entre la v4 y la v7 como clave principal, y no es cuestión de gustos. Los índices de las bases de datos son árboles que se mantienen ordenados, y el lugar donde cae una nueva clave en ese orden determina cuánto trabajo cuesta la inserción. Una clave v4 es aleatoria, por lo que inserciones consecutivas caen en rincones no relacionados del índice: las páginas que estaban llenas se dividen, las partes del árbol que la base de datos mantiene en memoria rara vez son las partes que necesita la siguiente inserción, y el índice termina siendo más grande y más fragmentado de lo que las filas a las que apunta justifican. Una clave v7 comienza con el milisegundo actual, de manera que las inserciones consecutivas caen una junto a otra en el borde derecho del árbol, que es el patrón que produce un entero autoincremental y el patrón en torno al cual se construyeron las estructuras de índices. Ese es todo el intercambio: la v7 te proporciona el comportamiento de inserción de una clave secuencial al tiempo que mantiene la propiedad que te hizo elegir los UUID en primer lugar, que es que cualquiera puede crear uno sin tener que pedírselo a un servidor. El costo de esto es que el momento de creación ahora es legible dentro del identificador, y determinar si eso importa es una cuestión sobre tus datos, no sobre el formato.
Ningún mecanismo comprueba jamás si un UUID es único; su tamaño es la garantía. No hay registro, no hay viaje de ida y vuelta al servidor, no hay búsqueda; un generador produce un número y te lo entrega, y la razón por la que dos de ellos no chocan es simplemente que hay 2^122 valores posibles de v4, unos 5,3 sextillones. El problema del cumpleaños es la forma honesta de medir eso: necesitarías aproximadamente 2,7 trillones de identificadores antes de que existiera una probabilidad equitativa de que dos de ellos coincidieran, lo que equivale a mil millones de UUID nuevos cada segundo durante 86 años. Vale la pena ser precisos sobre lo que eso promete y lo que no. Es una garantía estadística, no aritmética, y solo se sostiene si la aleatoriedad subyacente es real: un generador mal inicializado, o una máquina virtual clonada junto con su reserva de entropía, la rompen de una manera que el formato no puede detectar. La versión 7 acota aún más la cuestión: dentro de un solo milisegundo un generador no puede repetirse en absoluto, porque el contador se incrementa en lugar de lanzar dados, y entre generadores independientes, los 62 bits aleatorios hacen el trabajo.
Un UUID es un identificador, no una contraseña. La versión 4 es impredecible, y eso tienta a la gente a tratarla como si fuera un secreto: un enlace para restablecer una contraseña, una URL imposible de adivinar, un token de sesión o una clave de API. La imprevisibilidad es real, pero el secreto es una propiedad de cómo se maneja un valor, y los identificadores se manejan de manera descuidada por diseño (un factor a considerar ante las leyes de protección de datos personales): terminan en URLs que quedan registradas en historiales del navegador, registros del servidor, encabezados referer y analíticas, y se pegan en mensajes de chat. Las demás versiones son candidatas aún peores. Tanto la versión 1 como la versión 7 codifican el momento de su creación, por lo que cualquiera que tenga una sabe aproximadamente cuándo se creó y puede delimitar el entorno de todo lo creado en ese momento. Las versiones 3 y 5 son deterministas a propósito: un UUID v5 de una dirección de correo electrónico no es un secreto protegido por hash, es un valor que cualquier persona con la misma dirección puede calcular en un segundo. Usa un UUID para darle nombre a algo. Usa un generador de contraseñas, o un token de una biblioteca diseñada para secretos, cuando el valor deba permanecer desconocido.
¿Por qué elegir este generador de UUID?
- Generación solo en el navegador: los identificadores se crean en tu dispositivo y nunca se envían a ninguna parte
- Aleatoriedad de la Web Crypto API: criptográficamente segura, no basada en Math.random()
- Cinco versiones en un solo lugar: v1, v3, v4, v5 y v7, sin necesidad de cambiar de herramienta
- La v7 genuinamente ordenada: un contador dentro del milisegundo, tal como lo describe el RFC 9562
- Las v3 y v5 deterministas con los cuatro espacios de nombres estándar o el tuyo propio
- Hasta 1000 a la vez, con una lista compacta desplazable a partir de los cincuenta
- Todos los formatos comunes: con guiones, simple, en mayúsculas, entre llaves o como URN urn:uuid:
- Copia como líneas, por comas o como valores entre comillas que se pegan directo en el código
- Ilimitado y gratuito: sin registros, sin límites de uso y nada en nuestros servidores
Los UUID aparecen dondequiera que algo deba ser nombrado antes de que nada pueda confirmar que el nombre está libre. El código de las aplicaciones los genera para las filas que está a punto de insertar, por lo que el objeto adquiere una identidad antes siquiera de llegar a la base de datos y un cliente puede hacer referencia a él mientras la escritura sigue en curso. Los sistemas distribuidos dependen aún más de ellos: un banco o una fintech que registra operaciones que llegan en el mismo instante, un sistema de salud donde dos clínicas crean el mismo expediente a la vez, una app móvil que crea registros sin conexión, y una cola que debe reconocer el mensaje que ya procesó; ninguno de ellos puede esperar su turno para utilizar un contador compartido. La versión 5 cubre una necesidad diferente, que es la de obtener un identificador estable derivado de algo que ya tienes: el mismo documento, la misma URL o la misma cuenta siempre se mapea al mismo UUID, de modo que una importación puede ejecutarse dos veces sin duplicar nada. En otros casos, simplemente son el formato que exige un sistema: un identificador de correlación a través de registros y trazas, un nombre de archivo que no entrará en conflicto cuando las subidas de mil usuarios lleguen al mismo bucket, una clave del registro de Windows o datos de prueba que deben parecerse a los reales.
Vale la pena conocer algunos límites reales. Un lote equivale a una sola versión: el valor de Versión se aplica a todo su contenido, por lo que una serie de v4 y una de v7 constituyen dos lotes distintos. Esto es un generador, no un inspector: pegar un UUID para leer su versión o su marca de tiempo no es algo que haga esta página. El botón Guardar como archivo guarda un archivo de texto sin formato en lugar de un CSV o un JSON. La versión 7 revela abiertamente cuándo se creó hasta el milisegundo, lo que es un compromiso real y no un defecto, y la versión 1 filtra la hora de la misma manera; si eso supone un problema para tus datos, la versión 4 es la que no le dice nada a nadie. Dos valores especiales del estándar no son versiones y, por lo tanto, no aparecen como opciones en Versión, pero puedes copiarlos desde aquí: el UUID nulo, 00000000-0000-0000-0000-000000000000, y el UUID máximo, ffffffff-ffff-ffff-ffff-ffffffffffff. Todo en esta página sigue el RFC 9562, la especificación que reemplazó al RFC 4122 en 2024, por lo que la salida será aceptada por cualquier biblioteca, base de datos o API que maneje UUID. Dentro de esos límites, la garantía es sólida: cada identificador se construye según el estándar, utilizando aleatoriedad criptográficamente segura, en tu propia computadora y nadie más lo ve jamás.