Decodificador UUID

Decodifica e inspecciona la estructura, versión y datos integrados de UUID

Prueba un ejemplo

Entrada UUID

Pega un UUID arriba para inspeccionarlo

Estructura UUID

Un UUID (Identificador Universalmente Único) es un valor de 128 bits representado como 32 dígitos hexadecimales divididos en cinco grupos por guiones:

Formato
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
xxxxxxxx (8)8 dígitos hexadecimales — 32 bits
xxxx (4)4 dígitos hexadecimales — 16 bits
Mxxx (4)4 dígitos hexadecimales — 16 bits. El primer dígito M codifica la versión UUID (1–8).
Nxxx (4)4 dígitos hexadecimales — 16 bits. El primer dígito N codifica la variante UUID (RFC 4122, NCS, Microsoft o reservado).
xxxxxxxxxxxx (12)12 dígitos hexadecimales — 48 bits

La versión y la variante son los únicos dos campos garantizados de estar presentes en cada UUID. Todos los demás campos dependen de la versión.

El Campo de Versión

El nibble de versión es el primer dígito hexadecimal del tercer grupo (posición 14 en la cadena completa). Identifica qué versión de UUID se usó para generar el identificador.

JavaScript
const hex = uuid.replace(/-/g, '')
const version = parseInt(hex[12], 16)  // single hex digit → 1, 2, 3, 4, 5, 6, 7, or 8

La versión 7 (UUID v7) es la versión más nueva de uso generalizado, introducida en RFC 9562 (2024). Codifica una marca de tiempo Unix en milisegundos en los bits más significativos para ordenabilidad.

El Campo de Variante

La variante se codifica en los bits más significativos del primer byte del cuarto grupo. Identifica el diseño y las convenciones de orden de bytes usadas por el UUID.

Bits altosRango del primer dígito hexadecimalVarianteDescripción
0xxx xxxx0x00–0x7FCompatibilidad retroactiva NCSUUIDs del Sistema de Computación en Red (NCS) heredado. Reservado para compatibilidad retroactiva.
10xx xxxx0x80–0xBFRFC 4122 / RFC 9562La variante UUID estándar RFC 4122 / RFC 9562. Usada por todas las versiones UUID modernas (v1–v8).
110x xxxx0xC0–0xDFCompatibilidad retroactiva MicrosoftGUIDs heredados de Microsoft COM/DCOM con un orden de bytes diferente. Aún se encuentran en componentes COM de Windows.
111x xxxx0xE0–0xFFReservadoReservado para definición futura. No usado por ninguna versión UUID actual.

En la práctica, prácticamente todos los UUID que encontrará utilizan la variante RFC 4122 / RFC 9562 (patrón de bits 10xx xxxx, primer byte del cuarto grupo en el rango 0x80–0xBF). Las variantes NCS, Microsoft COM y Reserved son formatos heredados que rara vez se ven en sistemas modernos.

Referencia de Versiones UUID

RFC 4122 definió las versiones 1–5. RFC 9562 (2024) añadió las versiones 6, 7 y 8:

VersiónNombreEstándarDescripción
v1Basado en tiempoRFC 4122Marca de tiempo (época gregoriana, precisión de 100 ns) + dirección MAC. Secuencial por host pero filtra identidad del host.
v2Seguridad DCERFC 4122Basado en UUID v1 con el campo time_low reemplazado por un UID/GID POSIX. Raramente usado fuera de sistemas DCE/RPC heredados.
v3MD5 basado en nombreRFC 4122Determinista: hash MD5 de un UUID de espacio de nombres + cadena de nombre. Las mismas entradas siempre producen el mismo UUID. Prefiera v5.
v4AleatorioRFC 4122122 bits de aleatoriedad criptográficamente segura. La versión UUID de propósito general más común.
v5SHA-1 basado en nombreRFC 4122Como v3 pero usa SHA-1. Más resistente a colisiones que MD5. Preferido sobre v3 para nuevos UUIDs basados en nombre.
v6Tiempo reordenadoRFC 9562Reordena los campos de marca de tiempo de UUID v1 para que el UUID sea cronológicamente ordenable. Definido en RFC 9562.
v7Tiempo UnixRFC 9562Marca de tiempo Unix de 48 bits en milisegundos en bits altos + datos aleatorios. Ordenable y amigable para índices B-tree. Preferido para nuevos IDs ordenados por tiempo.
v8PersonalizadoRFC 9562Forma libre: todos los bits excepto la versión y la variante los define la aplicación. No se especifica ningún algoritmo de generación.

Decodificando Marcas de Tiempo UUID v1

UUID v1 incorpora una marca de tiempo gregoriana de 60 bits (intervalos de 100 nanosegundos desde el 15 de octubre de 1582) distribuida en tres campos: time_low (bits 0–31), time_mid (bits 32–47) y time_hi (bits 48–59). Esta herramienta los reensambla y convierte a una fecha UTC estándar.

JavaScript
// UUID v1: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
//           ^^^^^^^^ ^^^^ ^^^^ ^^^^^ ^^^^^^^^^^^^
//           time-low  mid  hi  clk   node (MAC)
//                          ^
//                          version nibble (1)

const hex = '6ba7b8109dad11d180b400c04fd430c8'

const tLow = parseInt(hex.slice(0, 8),  16)  // 0x6ba7b810
const tMid = parseInt(hex.slice(8, 12), 16)  // 0x9dad
const tHi  = parseInt(hex.slice(13, 16), 16) // 0x1d1 (skip version nibble at index 12)

// Reconstruct 60-bit timestamp (100-ns intervals since Oct 15, 1582)
const t = (BigInt(tHi) << 48n) | (BigInt(tMid) << 32n) | BigInt(tLow)

// Subtract Gregorian offset (Oct 15, 1582 → Jan 1, 1970 in 100-ns units)
const GREGORIAN_OFFSET = 122192928000000000n
const unixMs = (t - GREGORIAN_OFFSET) / 10000n

console.log(new Date(Number(unixMs)).toISOString())
// → 1998-02-04T22:13:53.578Z
Note:El campo de secuencia de reloj (14 bits) previene duplicados cuando el reloj retrocede. El campo de nodo (48 bits) es típicamente la dirección MAC del host generador.

UUID v1 debe tratarse como sensible: la dirección MAC incorporada y la marca de tiempo precisa pueden identificar tanto la máquina generadora como el tiempo de generación.

Decodificando Marcas de Tiempo UUID v7

UUID v7 incorpora una marca de tiempo Unix de 48 bits en milisegundos en los primeros 48 bits (primer grupo + primeros 4 dígitos del segundo grupo). Esta herramienta lee esos bits y los convierte a una fecha UTC con precisión de milisegundos.

JavaScript
// UUID v7: 018e4bc8-1000-7000-8000-000000000001
//           ^^^^^^^^^^^^
//           48-bit Unix ms timestamp

const hex = '018e4bc8100070008000000000000001'

// First 48 bits (12 hex chars) = Unix timestamp in milliseconds
const ms = parseInt(hex.slice(0, 12), 16)  // 0x018e4bc81000

console.log(new Date(ms).toISOString())
// → 2024-03-11T…Z

// Everything after byte 6 is random (except version/variant bits)

A diferencia de UUID v1, la marca de tiempo de UUID v7 usa la familiar época Unix (1 de enero de 1970) y no incorpora ninguna información del host. Los 74 bits restantes son aleatorios.

Cómo Esta Herramienta Detecta la Versión y Variante UUID

El decodificador lee la posición 14 (nibble de versión) y la posición 19 (nibble de variante) de la cadena UUID canónica. No se necesita estado externo ni contexto — toda la información está autocontenida en la cadena UUID.

JavaScript
// Detect UUID version from the 13th hex character (index 12)
function uuidVersion(uuid) {
  const clean = uuid.replace(/-/g, '')
  return parseInt(clean[12], 16)
}

uuidVersion('550e8400-e29b-41d4-a716-446655440000') // → 4
uuidVersion('018e4bc8-1000-7000-8000-000000000001') // → 7
uuidVersion('6ba7b810-9dad-11d1-80b4-00c04fd430c8') // → 1

// Detect variant from the 17th hex character (index 16, first char of 4th group)
function uuidVariant(uuid) {
  const clean = uuid.replace(/-/g, '')
  const b = parseInt(clean[16], 16)
  if ((b & 0x8) === 0)      return 'NCS'
  if ((b & 0xC) === 0x8)    return 'RFC 4122'
  if ((b & 0xE) === 0xC)    return 'Microsoft'
  return 'Reserved'
}

UUIDs Especiales

UUID Nulo

El UUID nulo 00000000-0000-0000-0000-000000000000 es todo ceros. Está definido por RFC 4122 como valor centinela que significa 'ningún UUID' — análogo a null. No es un UUID generado válido.

UUID Máximo

El UUID máximo ffffffff-ffff-ffff-ffff-ffffffffffff es todo unos (0xFF en cada byte). Definido en RFC 9562, es el complemento del UUID nulo y sirve como valor centinela máximo.

Preguntas Frecuentes

¿Cómo puedo saber qué versión es un UUID?
Observe la posición 14 en la cadena UUID canónica (el primer carácter del tercer grupo separado por guiones). Ese único dígito hexadecimal es el número de versión: 1, 2, 3, 4, 5, 6, 7 u 8. Pegue el UUID en esta herramienta y decodificará la versión por usted.
¿Puedo decodificar un UUID para recuperar los datos originales?
Depende de la versión. UUID v1 y v7 incorporan una marca de tiempo que puede recuperarse completamente. UUID v1 también incorpora la dirección MAC. UUID v3 y v5 son hashes unidireccionales — no puede recuperar el nombre original del UUID. UUID v4 es puramente aleatorio — no hay nada que recuperar.
¿Qué significa 'variante' en un UUID?
El campo de variante identifica el diseño de bytes y la convención de interpretación del UUID. Casi todos los UUIDs que encontrará tienen la variante RFC 4122 (bits altos 10), codificada como dígitos hexadecimales 8, 9, a o b en la posición 19. Otras variantes (NCS, Microsoft) son formatos heredados de los años 1990.
¿Por qué algunos UUIDs se ven diferentes de otros?
La diferencia visual está en el nibble de versión (posición 14) y el nibble de variante (posición 19). Por ejemplo, UUID v4 siempre tiene un 4 en la posición 14, mientras que UUID v7 siempre tiene un 7. Dentro de esas restricciones, los dígitos restantes son aleatorios o derivados de marca de tiempo según la versión.
¿Es el UUID nulo lo mismo que un UUID vacío?
Conceptualmente sí — el UUID nulo (todo ceros) se usa para representar la ausencia de un UUID, similar a null. No es un UUID generado aleatoriamente y no debería almacenarse como identificador real. Algunos sistemas lo usan como valor predeterminado o marcador de posición.
¿Puede ser inválido un UUID?
Un UUID puede ser sintácticamente válido (formato correcto) pero semánticamente inusual — por ejemplo, con un nibble de versión 0 o una variante 11x (reservado). El UUID nulo y el UUID máximo son sintácticamente válidos pero son valores centinela. Esta herramienta mostrará los nibbles de versión y variante presentes y marcará las versiones no reconocidas.
¿Cuál es la diferencia entre un UUID y un GUID?
GUID (Identificador Globalmente Único) es el nombre de Microsoft para el mismo concepto. Los GUIDs siguen el mismo formato RFC 4122 de 128 bits. La única diferencia práctica es que los GUIDs heredados de Microsoft pueden usar la variante Microsoft (bits altos 110) en lugar de la variante RFC 4122 — esto afecta el orden de bytes en la representación binaria. La representación textual es idéntica.