UUID Decoder

UUID संरचना, संस्करण और एम्बेडेड डेटा को डीकोड और निरीक्षण करें

उदाहरण देखें

UUID इनपुट

निरीक्षण के लिए ऊपर UUID पेस्ट करें

UUID संरचना

UUID (Universally Unique Identifier) एक 128-bit मान है जिसे हाइफ़न द्वारा पाँच समूहों में विभाजित 32 hexadecimal अंकों के रूप में दर्शाया जाता है:

प्रारूप
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
xxxxxxxx (8)8 hex अंक — 32 bits
xxxx (4)4 hex अंक — 16 bits
Mxxx (4)4 hex अंक — 16 bits। पहला अंक M UUID वर्शन (1–8) अंकित करता है।
Nxxx (4)4 hex अंक — 16 bits। पहला अंक N UUID वेरिएंट (RFC 4122, NCS, Microsoft, या reserved) अंकित करता है।
xxxxxxxxxxxx (12)12 hex अंक — 48 bits

version और variant ही दो ऐसे फ़ील्ड हैं जो हर UUID में निश्चित रूप से मौजूद होते हैं। बाकी सभी फ़ील्ड वर्शन पर निर्भर करते हैं।

वर्शन फ़ील्ड

Version nibble तीसरे समूह का पहला hex अंक होता है (पूरी string में position 14)। यह बताता है कि पहचानकर्ता बनाने के लिए कौन सा UUID वर्शन उपयोग किया गया।

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

वर्शन 7 (UUID v7) सबसे नया व्यापक रूप से प्रयुक्त वर्शन है, जिसे RFC 9562 (2024) में शामिल किया गया। यह high bits में क्रमबद्धता के लिए Unix millisecond timestamp अंकित करता है।

वेरिएंट फ़ील्ड

Variant चौथे समूह के पहले byte के high bits में समाहित होता है। यह UUID के विन्यास और byte क्रम के नियमों को दर्शाता है।

High bitsपहले hex अंक की श्रेणीVariantविवरण
0xxx xxxx0x00–0x7FNCS पश्चगामी संगततापुराने Network Computing System (NCS) UUIDs। पश्चगामी संगतता के लिए आरक्षित।
10xx xxxx0x80–0xBFRFC 4122 / RFC 9562मानक RFC 4122 / RFC 9562 UUID वेरिएंट। सभी आधुनिक UUID वर्शन (v1–v8) द्वारा उपयोग किया जाता है।
110x xxxx0xC0–0xDFMicrosoft पश्चगामी संगतताअलग byte क्रम के साथ पुराने Microsoft COM/DCOM GUIDs। Windows COM components में अभी भी मिलते हैं।
111x xxxx0xE0–0xFFआरक्षितभविष्य में परिभाषा के लिए आरक्षित। किसी भी वर्तमान UUID वर्शन द्वारा उपयोग नहीं होता।

व्यवहार में, आप जो लगभग सभी UUID देखते हैं वे RFC 4122 / RFC 9562 वेरिएंट (10xx xxxx बिट पैटर्न, चौथे समूह का पहला बाइट 0x80–0xBF श्रेणी में) का उपयोग करते हैं। NCS, Microsoft COM और Reserved वेरिएंट पुराने प्रारूप हैं जो आधुनिक प्रणालियों में बहुत कम देखे जाते हैं।

UUID वर्शन संदर्भ

RFC 4122 ने वर्शन 1–5 परिभाषित किए। RFC 9562 (2024) ने वर्शन 6, 7 और 8 जोड़े:

वर्शननाममानकविवरण
v1समय-आधारितRFC 4122Timestamp (Gregorian epoch, 100ns सटीकता) + MAC address। प्रति host क्रमिक होता है लेकिन host की पहचान उजागर करता है।
v2DCE SecurityRFC 4122UUID v1 पर आधारित, जिसमें time_low field को POSIX UID/GID से प्रतिस्थापित किया गया है। पुराने DCE/RPC systems के बाहर शायद ही उपयोग होता है।
v3नाम-आधारित MD5RFC 4122निर्धारक: namespace UUID + name string का MD5 hash। समान inputs हमेशा समान UUID देते हैं। v3 की जगह v5 उपयोग करें।
v4यादृच्छिकRFC 4122122 bits की cryptographically secure यादृच्छिकता। सबसे सामान्य सामान्य-प्रयोजन UUID वर्शन।
v5नाम-आधारित SHA-1RFC 4122v3 की तरह लेकिन SHA-1 उपयोग करता है। MD5 से अधिक टकराव-प्रतिरोधी। नए name-based UUIDs के लिए v3 की जगह यही उपयोग करें।
v6पुनर्क्रमित समयRFC 9562UUID v1 timestamp fields को पुनर्क्रमित करता है ताकि UUID कालक्रमानुसार क्रमबद्ध हो। RFC 9562 में परिभाषित।
v7Unix समयRFC 9562High bits में 48-bit Unix millisecond timestamp + यादृच्छिक डेटा। क्रमबद्ध और B-tree index-अनुकूल। नए time-ordered IDs के लिए अनुशंसित।
v8कस्टमRFC 9562स्वतंत्र-प्रारूप: version और variant को छोड़कर सभी bits अनुप्रयोग-परिभाषित हैं। कोई उत्पादन एल्गोरिदम निर्धारित नहीं किया गया।

UUID v1 Timestamps को डीकोड करना

UUID v1 एक 60-bit Gregorian timestamp (October 15, 1582 से 100-nanosecond अंतराल) तीन फ़ील्ड में विभाजित करके समाहित करता है: time_low (bits 0–31), time_mid (bits 32–47), और time_hi (bits 48–59)। यह उपकरण उन्हें जोड़कर UTC दिनांक में बदलता है।

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:Clock sequence field (14 bits) दोहराव को रोकता है जब clock पीछे जाए। Node field (48 bits) आमतौर पर उत्पन्न करने वाले host का MAC address होता है।

UUID v1 को संवेदनशील माना जाना चाहिए: अंतर्निहित MAC address और सटीक timestamp दोनों मिलकर उत्पन्न करने वाली मशीन और उत्पादन समय की पहचान कर सकते हैं।

UUID v7 Timestamps को डीकोड करना

UUID v7 पहले 48 bits (पहले समूह + दूसरे समूह के पहले 4 अंक) में 48-bit Unix millisecond timestamp समाहित करता है। यह उपकरण उन bits को पढ़कर millisecond सटीकता के साथ UTC दिनांक में बदलता है।

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)

UUID v1 के विपरीत, UUID v7 timestamp परिचित Unix epoch (January 1, 1970) उपयोग करता है और कोई host जानकारी समाहित नहीं करता। बाकी 74 bits यादृच्छिक हैं।

यह उपकरण UUID वर्शन और वेरिएंट कैसे पहचानता है

यह डीकोडर canonical UUID string की position 14 (version nibble) और position 19 (variant nibble) को पढ़ता है। किसी बाहरी स्थिति या संदर्भ की आवश्यकता नहीं — सभी जानकारी UUID string में ही निहित है।

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

Nil UUID

Nil UUID 00000000-0000-0000-0000-000000000000 सभी शून्य है। इसे RFC 4122 में sentinel मान के रूप में परिभाषित किया गया है जिसका अर्थ है 'कोई UUID नहीं' — null के समान। यह कोई उत्पन्न UUID नहीं है।

Max UUID

Max UUID ffffffff-ffff-ffff-ffff-ffffffffffff सभी ones (हर byte में 0xFF) है। RFC 9562 में परिभाषित, यह nil UUID का पूरक है और अधिकतम sentinel मान के रूप में काम करता है।

अक्सर पूछे जाने वाले प्रश्न

मैं कैसे बता सकता हूँ कि UUID किस वर्शन का है?
Canonical UUID string में position 14 देखें (तीसरे हाइफ़न-विभाजित समूह का पहला अक्षर)। वह एकल hex अंक version number है: 1, 2, 3, 4, 5, 6, 7, या 8।
क्या मैं मूल डेटा पुनः प्राप्त करने के लिए UUID decode कर सकता हूँ?
यह वर्शन पर निर्भर करता है। UUID v1 और v7 timestamp समाहित करते हैं जो पूरी तरह पुनः प्राप्त किया जा सकता है। UUID v1 MAC address भी समाहित करता है। UUID v3 और v5 एकतरफा hash हैं। UUID v4 पूरी तरह यादृच्छिक है।
UUID में 'variant' का क्या मतलब है?
Variant field UUID के byte विन्यास और व्याख्या नियम को दर्शाता है। आप जो लगभग सभी UUIDs देखेंगे वे RFC 4122 variant (high bits 10) होंगे — position 19 पर hex अंक 8, 9, a, या b के रूप में।
कुछ UUIDs दूसरों से अलग क्यों दिखती हैं?
दृश्य अंतर version nibble (position 14) और variant nibble (position 19) में होता है। UUID v4 हमेशा position 14 पर 4 रखता है, UUID v7 हमेशा 7 रखता है।
क्या nil UUID खाली UUID के समान है?
अर्थ की दृष्टि से हाँ — nil UUID (सभी शून्य) UUID की अनुपस्थिति दर्शाने के लिए उपयोग होता है, null के समान। यह यादृच्छिक रूप से उत्पन्न UUID नहीं है।
क्या UUID अमान्य हो सकता है?
UUID वाक्यात्मक रूप से सही लेकिन अर्थपूर्ण रूप से असामान्य हो सकता है — जैसे version nibble 0 होना या variant 11x (reserved) होना।
UUID और GUID में क्या अंतर है?
GUID (Globally Unique Identifier) उसी अवधारणा के लिए Microsoft का नाम है। GUIDs वही RFC 4122 128-bit प्रारूप अपनाते हैं। व्यावहारिक अंतर यह है कि पुराने Microsoft GUIDs Microsoft variant (high bits 110) उपयोग कर सकते हैं।