Décodeur UUID
Décode et inspecte la structure, la version et les données intégrées des UUID
Entrée UUID
Collez un UUID ci-dessus pour l'inspecter
Structure UUID
Un UUID (Universally Unique Identifier) est une valeur de 128 bits représentée sous forme de 32 chiffres hexadécimaux divisés en cinq groupes par des tirets :
La version et la variante sont les deux seuls champs garantis d'être présents dans chaque UUID. Tous les autres champs dépendent de la version.
Le champ de version
Le nibble de version est le premier chiffre hexadécimal du troisième groupe (position 14 dans la chaîne complète). Il identifie la version UUID utilisée pour générer l'identifiant.
const hex = uuid.replace(/-/g, '') const version = parseInt(hex[12], 16) // single hex digit → 1, 2, 3, 4, 5, 6, 7, or 8
La version 7 (UUID v7) est la version la plus récente largement utilisée, introduite dans RFC 9562 (2024). Elle encode un horodatage Unix en millisecondes dans les bits de poids fort pour la triabilité.
Le champ de variante
La variante est encodée dans les bits de poids fort du premier octet du quatrième groupe. Elle identifie les conventions de disposition et d'ordre des octets utilisées par l'UUID.
| Bits de poids fort | Plage du premier chiffre hexadécimal | Variante | Description |
|---|---|---|---|
| 0xxx xxxx | 0x00–0x7F | Compatibilité ascendante NCS | UUID NCS (Network Computing System) legacy. Réservé pour la compatibilité ascendante. |
| 10xx xxxx | 0x80–0xBF | RFC 4122 / RFC 9562 | La variante UUID standard RFC 4122 / RFC 9562. Utilisée par toutes les versions UUID modernes (v1-v8). |
| 110x xxxx | 0xC0–0xDF | Compatibilité ascendante Microsoft | GUID Microsoft COM/DCOM legacy avec un ordre d'octets différent. Encore rencontré dans les composants COM Windows. |
| 111x xxxx | 0xE0–0xFF | Réservé | Réservé pour une définition future. Non utilisé par aucune version UUID actuelle. |
En pratique, la quasi-totalité des UUID que vous rencontrez utilisent la variante RFC 4122 / RFC 9562 (modèle de bits 10xx xxxx, premier octet du quatrième groupe dans la plage 0x80–0xBF). Les variantes NCS, Microsoft COM et Reserved sont des formats hérités rarement rencontrés dans les systèmes modernes.
Référence des versions UUID
RFC 4122 a défini les versions 1-5. RFC 9562 (2024) a ajouté les versions 6, 7 et 8 :
| Version | Nom | Standard | Description |
|---|---|---|---|
| v1 | Basé sur le temps | RFC 4122 | Horodatage (epoch grégorien, précision 100ns) + adresse MAC. Séquentiel par hôte mais divulgue l'identité de l'hôte. |
| v2 | Sécurité DCE | RFC 4122 | Basé sur UUID v1 avec le champ time_low remplacé par un UID/GID POSIX. Rarement utilisé en dehors des systèmes DCE/RPC legacy. |
| v3 | Basé sur un nom MD5 | RFC 4122 | Déterministe : hachage MD5 d'un UUID d'espace de noms + chaîne de nom. Les mêmes entrées produisent toujours le même UUID. Préférez v5. |
| v4 | Aléatoire | RFC 4122 | 122 bits de caractère aléatoire cryptographiquement sécurisé. La version UUID la plus commune à usage général. |
| v5 | Basé sur un nom SHA-1 | RFC 4122 | Comme v3 mais utilise SHA-1. Plus résistant aux collisions que MD5. Préféré à v3 pour les nouveaux UUID basés sur un nom. |
| v6 | Temps réordonné | RFC 9562 | Réordonne les champs d'horodatage UUID v1 pour que l'UUID soit triable chronologiquement. Défini dans RFC 9562. |
| v7 | Temps Unix | RFC 9562 | Horodatage Unix de 48 bits en millisecondes dans les bits de poids fort + données aléatoires. Triable et adapté aux index B-tree. Préféré pour les nouveaux identifiants ordonnés dans le temps. |
| v8 | Personnalisé | RFC 9562 | Forme libre : tous les bits sauf la version et la variante sont définis par l'application. Aucun algorithme de génération n'est spécifié. |
Décodage des horodatages UUID v1
UUID v1 intègre un horodatage grégorien de 60 bits (intervalles de 100 nanosecondes depuis le 15 octobre 1582) réparti sur trois champs : time_low (bits 0-31), time_mid (bits 32-47) et time_hi (bits 48-59). Cet outil les réassemble et les convertit en date UTC standard.
// 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
UUID v1 doit être traité comme sensible : l'adresse MAC intégrée et l'horodatage précis peuvent identifier à la fois la machine génératrice et le temps de génération.
Décodage des horodatages UUID v7
UUID v7 intègre un horodatage Unix de 48 bits en millisecondes dans les 48 premiers bits (premier groupe + 4 premiers chiffres du deuxième groupe). Cet outil lit ces bits et les convertit en date UTC avec une précision milliseconde.
// 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)
Contrairement à UUID v1, l'horodatage UUID v7 utilise l'epoch Unix familier (1er janvier 1970) et n'intègre aucune information sur l'hôte. Les 74 bits restants sont aléatoires.
Comment cet outil détecte la version et la variante UUID
Le décodeur lit la position 14 (nibble de version) et la position 19 (nibble de variante) de la chaîne UUID canonique. Aucun état externe ni contexte n'est nécessaire — toute l'information est contenue dans la chaîne UUID.
// 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'
}UUID spéciaux
UUID nil
L'UUID nil 00000000-0000-0000-0000-000000000000 est entièrement à zéro. Il est défini par RFC 4122 comme valeur sentinelle signifiant 'aucun UUID' — analogue à null. Ce n'est pas un UUID généré valide.
UUID max
L'UUID max ffffffff-ffff-ffff-ffff-ffffffffffff est entièrement à un (0xFF dans chaque octet). Défini dans RFC 9562, c'est le complément de l'UUID nil et sert de valeur sentinelle maximale.