UUID Decoder
Decode and inspect UUID structure, version, and embedded data
UUID-invoer
Plak een UUID hierboven om deze te inspecteren
UUID-structuur
Een UUID (Universally Unique Identifier) is een 128-bit waarde weergegeven als 32 hexadecimale cijfers opgesplitst in vijf groepen door koppeltekens:
De versie en variant zijn de enige twee velden die gegarandeerd aanwezig zijn in elke UUID. Alle andere velden zijn afhankelijk van de versie.
Het versieveld
Het versienibble is het eerste hexadecimale cijfer van de derde groep (positie 14 in de volledige string). Het identificeert welke UUID-versie is gebruikt om de identificator te genereren.
const hex = uuid.replace(/-/g, '') const version = parseInt(hex[12], 16) // single hex digit → 1, 2, 3, 4, 5, 6, 7, or 8
Versie 7 (UUID v7) is de nieuwste breed gebruikte versie, geïntroduceerd in RFC 9562 (2024). Het codeert een Unix-millisecondentijdstempel in de hoge bits voor sorteerbaarheid.
Het variantveld
De variant is gecodeerd in de hoge bits van het eerste byte van de vierde groep. Het identificeert de indeling en byte-volgordeconventies die door de UUID worden gebruikt.
| Hoge bits | Eerste hexadecimale cijferbereik | Variant | Beschrijving |
|---|---|---|---|
| 0xxx xxxx | 0x00–0x7F | NCS achterwaartse compatibiliteit | Legacy Network Computing System (NCS) UUIDs. Gereserveerd voor achterwaartse compatibiliteit. |
| 10xx xxxx | 0x80–0xBF | RFC 4122 / RFC 9562 | De standaard RFC 4122 / RFC 9562 UUID-variant. Gebruikt door alle moderne UUID-versies (v1–v8). |
| 110x xxxx | 0xC0–0xDF | Microsoft achterwaartse compatibiliteit | Legacy Microsoft COM/DCOM GUIDs met een andere byte-volgorde. Nog aangetroffen in Windows COM-componenten. |
| 111x xxxx | 0xE0–0xFF | Gereserveerd | Gereserveerd voor toekomstige definitie. Niet gebruikt door een huidige UUID-versie. |
In de praktijk gebruiken vrijwel alle UUID's die u tegenkomt de RFC 4122 / RFC 9562-variant (bitpatroon 10xx xxxx, eerste byte van de vierde groep in het bereik 0x80–0xBF). De NCS-, Microsoft COM- en Reserved-varianten zijn verouderde formaten die zelden in moderne systemen voorkomen.
UUID-versies referentie
RFC 4122 definieerde versies 1–5. RFC 9562 (2024) voegde versies 6, 7 en 8 toe:
| Versie | Naam | Standaard | Beschrijving |
|---|---|---|---|
| v1 | Tijdgebaseerd | RFC 4122 | Tijdstempel (Gregoriaanse epoche, 100ns precisie) + MAC-adres. Sequentieel per host maar onthult hostidentiteit. |
| v2 | DCE Security | RFC 4122 | Gebaseerd op UUID v1 met het time_low-veld vervangen door een POSIX UID/GID. Zelden gebruikt buiten legacy DCE/RPC-systemen. |
| v3 | Op naam gebaseerd MD5 | RFC 4122 | Deterministisch: MD5-hash van een namespace-UUID + naam-string. Dezelfde invoer levert altijd dezelfde UUID op. Geef voorkeur aan v5. |
| v4 | Willekeurig | RFC 4122 | 122 bits cryptografisch veilige willekeurigheid. De meest voorkomende algemene UUID-versie. |
| v5 | Op naam gebaseerd SHA-1 | RFC 4122 | Zoals v3 maar gebruikt SHA-1. Meer botsingsbestendig dan MD5. Geprefereerd boven v3 voor nieuwe op naam gebaseerde UUIDs. |
| v6 | Hergeordende tijd | RFC 9562 | Herordent de UUID v1-tijdstempelvelden zodat de UUID chronologisch sorteerbaar is. Gedefinieerd in RFC 9562. |
| v7 | Unix-tijd | RFC 9562 | 48-bit Unix-millisecondentijdstempel in hoge bits + willekeurige gegevens. Sorteerbaar en B-tree-index-vriendelijk. Geprefereerd voor nieuwe tijdgeordende ID's. |
| v8 | Aangepast | RFC 9562 | Vrije vorm: alle bits behalve versie en variant zijn applicatie-gedefinieerd. Er is geen generatiealgoritme gespecificeerd. |
UUID v1-tijdstempels decoderen
UUID v1 bevat een 60-bit Gregoriaans tijdstempel (100-nanoseconde intervallen sinds 15 oktober 1582) verspreid over drie velden: time_low (bits 0–31), time_mid (bits 32–47) en time_hi (bits 48–59). Dit hulpmiddel hersamenstelt en converteert ze naar een standaard UTC-datum.
// 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 moet worden behandeld als gevoelig: het ingebedde MAC-adres en precieze tijdstempel kunnen zowel de genererende machine als het tijdstip van generatie identificeren.
UUID v7-tijdstempels decoderen
UUID v7 bevat een 48-bit Unix-millisecondentijdstempel in de eerste 48 bits (eerste groep + eerste 4 cijfers van de tweede groep). Dit hulpmiddel leest die bits en converteert ze naar een UTC-datum met millisecondeprecisie.
// 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)
In tegenstelling tot UUID v1 gebruikt het UUID v7-tijdstempel de vertrouwde Unix-epoche (1 januari 1970) en bevat geen hostinformatie. De resterende 74 bits zijn willekeurig.
Hoe dit hulpmiddel UUID-versie en -variant detecteert
De decoder leest positie 14 (versienibble) en positie 19 (variantnibble) van de canonieke UUID-string. Er is geen externe staat of context nodig — alle informatie is opgenomen in de UUID-string zelf.
// 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'
}Speciale UUIDs
Nil UUID
De nil UUID 00000000-0000-0000-0000-000000000000 zijn allemaal nullen. Het is gedefinieerd door RFC 4122 als een sentinel-waarde die 'geen UUID' betekent — analoog aan null. Het is geen geldig gegenereerde UUID.
Max UUID
De max UUID ffffffff-ffff-ffff-ffff-ffffffffffff zijn allemaal enen (0xFF in elke byte). Gedefinieerd in RFC 9562, het is het complement van de nil UUID en dient als een maximale sentinel-waarde.