UUID Decoder

Decode and inspect UUID structure, version, and embedded data

Probeer een voorbeeld

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:

Formaat
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
xxxxxxxx (8)8 hexadecimale cijfers — 32 bits
xxxx (4)4 hexadecimale cijfers — 16 bits
Mxxx (4)4 hexadecimale cijfers — 16 bits. Het eerste cijfer M codeert de UUID-versie (1–8).
Nxxx (4)4 hexadecimale cijfers — 16 bits. Het eerste cijfer N codeert de UUID-variant (RFC 4122, NCS, Microsoft of gereserveerd).
xxxxxxxxxxxx (12)12 hexadecimale cijfers — 48 bits

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.

JavaScript
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 bitsEerste hexadecimale cijferbereikVariantBeschrijving
0xxx xxxx0x00–0x7FNCS achterwaartse compatibiliteitLegacy Network Computing System (NCS) UUIDs. Gereserveerd voor achterwaartse compatibiliteit.
10xx xxxx0x80–0xBFRFC 4122 / RFC 9562De standaard RFC 4122 / RFC 9562 UUID-variant. Gebruikt door alle moderne UUID-versies (v1–v8).
110x xxxx0xC0–0xDFMicrosoft achterwaartse compatibiliteitLegacy Microsoft COM/DCOM GUIDs met een andere byte-volgorde. Nog aangetroffen in Windows COM-componenten.
111x xxxx0xE0–0xFFGereserveerdGereserveerd 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:

VersieNaamStandaardBeschrijving
v1TijdgebaseerdRFC 4122Tijdstempel (Gregoriaanse epoche, 100ns precisie) + MAC-adres. Sequentieel per host maar onthult hostidentiteit.
v2DCE SecurityRFC 4122Gebaseerd op UUID v1 met het time_low-veld vervangen door een POSIX UID/GID. Zelden gebruikt buiten legacy DCE/RPC-systemen.
v3Op naam gebaseerd MD5RFC 4122Deterministisch: MD5-hash van een namespace-UUID + naam-string. Dezelfde invoer levert altijd dezelfde UUID op. Geef voorkeur aan v5.
v4WillekeurigRFC 4122122 bits cryptografisch veilige willekeurigheid. De meest voorkomende algemene UUID-versie.
v5Op naam gebaseerd SHA-1RFC 4122Zoals v3 maar gebruikt SHA-1. Meer botsingsbestendig dan MD5. Geprefereerd boven v3 voor nieuwe op naam gebaseerde UUIDs.
v6Hergeordende tijdRFC 9562Herordent de UUID v1-tijdstempelvelden zodat de UUID chronologisch sorteerbaar is. Gedefinieerd in RFC 9562.
v7Unix-tijdRFC 956248-bit Unix-millisecondentijdstempel in hoge bits + willekeurige gegevens. Sorteerbaar en B-tree-index-vriendelijk. Geprefereerd voor nieuwe tijdgeordende ID's.
v8AangepastRFC 9562Vrije 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.

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:Het kloksequentieveld (14 bits) voorkomt duplicaten wanneer de klok achteruit gaat. Het knooppuntveld (48 bits) is doorgaans het MAC-adres van de genererende host.

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.

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)

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.

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'
}

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.

Veelgestelde vragen

Hoe weet ik welke versie een UUID heeft?
Kijk naar positie 14 in de canonieke UUID-string (het eerste teken van de derde koppelteken-gescheiden groep). Dat enkele hexadecimale cijfer is het versienummer: 1, 2, 3, 4, 5, 6, 7 of 8. Plak de UUID in dit hulpmiddel en het zal de versie voor u decoderen.
Kan ik een UUID decoderen om de originele gegevens te herstellen?
Het hangt af van de versie. UUID v1 en v7 bevatten een tijdstempel dat volledig kan worden hersteld. UUID v1 bevat ook het MAC-adres. UUID v3 en v5 zijn eenrichtings-hashes — u kunt de originele naam niet herstellen uit de UUID. UUID v4 is puur willekeurig — er is niets te herstellen.
Wat betekent 'variant' in een UUID?
Het variantveld identificeert de byte-indeling en interpretatieboventoon van de UUID. Bijna alle UUIDs die u tegenkomt zullen de RFC 4122-variant hebben (hoge bits 10), gecodeerd als hexadecimale cijfers 8, 9, a of b op positie 19. Andere varianten (NCS, Microsoft) zijn legacy-formaten uit de jaren 1990.
Waarom zien sommige UUIDs er anders uit dan andere?
Het visuele verschil zit in het versienibble (positie 14) en het variantnibble (positie 19). Zo heeft UUID v4 altijd een 4 op positie 14, terwijl UUID v7 altijd een 7 heeft. Binnen die beperkingen zijn de resterende cijfers willekeurig of tijdstempel-afgeleid afhankelijk van de versie.
Is de nil UUID hetzelfde als een lege UUID?
Conceptueel ja — de nil UUID (allemaal nullen) wordt gebruikt om de afwezigheid van een UUID aan te geven, vergelijkbaar met null. Het is geen willekeurig gegenereerde UUID en mag niet worden opgeslagen als een echte identificator. Sommige systemen gebruiken het als een standaard of tijdelijke aanduiding.
Kan een UUID ongeldig zijn?
Een UUID kan syntactisch geldig zijn (correct formaat) maar semantisch ongebruikelijk — bijvoorbeeld een versienibble van 0 hebben of een variant van 11x (gereserveerd). De nil UUID en de max UUID zijn syntactisch geldig maar zijn sentinel-waarden. Dit hulpmiddel toont welke versie- en variantnibbles aanwezig zijn en markeert niet-herkende versies.
Wat is het verschil tussen een UUID en een GUID?
GUID (Globally Unique Identifier) is Microsofts naam voor hetzelfde concept. GUIDs volgen hetzelfde RFC 4122 128-bit formaat. Het enige praktische verschil is dat legacy Microsoft GUIDs mogelijk de Microsoft-variant gebruiken (hoge bits 110) in plaats van de RFC 4122-variant — dit beïnvloedt de byte-volgorde in binaire representatie. Tekstrepresentatie is identiek.