Fact-checked by Grok 2 weeks ago

Universally unique identifier

A universally unique identifier (UUID) is a 128-bit label designed to uniquely identify objects or entities in computer systems without requiring a central , ensuring uniqueness across space and time. Standardized by the (IETF) in 9562 (obsoleting RFC 4122 in 2024) as a (URN) namespace, a UUID—also known as a globally (GUID) in some contexts—facilitates distributed systems by providing collision-resistant identifiers for resources such as files, transactions, or database records. Its structure consists of 16 octets (128 bits) arranged in a specific : a 32-bit time-low field, a 16-bit time-mid field, a 16-bit time-high-and-version field, an 8-bit clock-sequence-high-and-reserved field, an 8-bit clock-sequence-low field, and a 48-bit node field, typically represented in a canonical string format of eight digits, followed by a , then four, four, four, and twelve digits (e.g., f81d4fae-7dec-11d0-a765-00a0c91e6bf6). The variant field in the eighth octet distinguishes the UUID , with the defined variant using the bit pattern 10xx for compatibility. UUIDs come in eight versions, each with distinct algorithms to guarantee uniqueness (detailed in the dedicated section): Uniqueness is achieved through these methods: time-based versions leverage monotonic clocks and unique node IDs (or random alternatives), while name-based, random, and custom versions use cryptographic hashing, sufficient entropy, or defined procedures to minimize collision probabilities, making UUIDs essential for scalable, decentralized applications like cloud computing and databases.

History

Origins in OSF DCE

The universally unique identifier (UUID) was initially developed as a component of the Open Software Foundation's (OSF) Distributed Computing Environment (DCE), a middleware system aimed at facilitating distributed computing in client-server architectures during the early 1990s. The primary goal was to enable the generation of unique identifiers for objects, such as files, processes, or resources, across networked systems without relying on a central coordinating authority, thereby supporting scalability in heterogeneous environments. This approach addressed the challenges of ensuring global uniqueness in distributed setups where multiple nodes might independently create identifiers, avoiding conflicts through decentralized mechanisms. The concept traces its roots to the Apollo Network Computing System (NCS), developed by , before being formalized and expanded within OSF DCE. Key figures in its specification included Paul J. Leach, then at , and Rich Salz, associated with Certco, who co-authored early drafts building directly on the OSF DCE framework. The first specification appeared in OSF DCE version 1.0, released around 1990–1991, defining the UUID as a fixed 128-bit value to balance compactness with sufficient entropy for uniqueness. This structure incorporated a 60-bit timestamp (representing 100-nanosecond intervals since October 15, 1582), a 14-bit clock sequence to handle potential timestamp collisions, and a 48-bit node identifier typically derived from the machine's MAC address, ensuring both temporal and spatial uniqueness. Early adoption of UUIDs occurred within OSF DCE-based systems for tasks like naming interfaces and binding endpoints in remote procedure calls. Microsoft integrated the OSF DCE remote procedure call (RPC) mechanism, including UUIDs, into its Component Object Model (COM) framework, where they served as globally unique identifiers (GUIDs) for components, interfaces, and classes in distributed applications. This integration marked one of the earliest widespread uses beyond pure DCE environments, influencing subsequent implementations in Windows platforms and other enterprise systems.

Standardization and Evolution

The standardization of universally unique identifiers (UUIDs) originated in the Open Software Foundation's Distributed Computing Environment (OSF DCE) in the early 1990s, providing a foundational specification for generating unique identifiers across distributed systems. This initial framework was subsequently formalized as an international standard through ISO/IEC 11578:1996, which defines UUIDs within the context of Open Systems Interconnection—Remote Procedure Call (RPC), ensuring interoperability in information technology environments. In July 2005, the Internet Engineering Task Force (IETF) published RFC 4122, titled "A Universally Unique IDentifier (UUID) URN Namespace," which codified the DCE-based UUID format as a Uniform Resource Name (URN) namespace while introducing three new versions: version 3 for name-based UUIDs using MD5 hashing, version 4 for random or pseudo-random generation, and version 5 for name-based UUIDs using SHA-1 hashing. This RFC addressed gaps in the earlier DCE and ISO specifications by providing a broader set of generation methods suitable for diverse applications, including those not reliant on distributed time synchronization. Over the years, RFC 4122 underwent refinements through published errata, resolving ambiguities in areas such as variant bit interpretation and byte order to enhance implementation consistency. Advancements continued with the IETF's uuidrev working group, which in 2023 released draft-ietf-uuidrev-rfc4122bis-08, proposing version 7 UUIDs that incorporate a 48-bit Unix for improved chronological sortability without depending on synchronized clocks or identifiers. This draft evolved into 9562, published in May 2024 as "Universally Unique IDentifiers (UUIDs)," which obsoletes RFC 4122 and introduces version 6 (a reordered time-based variant of version 1), version 7, and version 8 for custom or experimental applications where implementers define their own layouts within the UUID framework. 9562 also aligns UUID specifications more closely with ITU-T Recommendation X.667 | ISO/IEC 9834-8, emphasizing best practices for generation and usage. A key aspect of UUID evolution has been the shift away from hardware-dependent generation methods, particularly those using in versions 1 and 2, toward software-only approaches. This transition addresses concerns, as can reveal device identities and enable tracking, compounded by ' implementation of randomization to protect user anonymity in network environments. RFC 9562 explicitly recommends using fixed or random node identifiers instead of actual to maintain uniqueness while mitigating these risks, reflecting broader industry adoption of privacy-preserving identifier strategies.

Standards

Core Specifications

The core specifications for universally unique identifiers (UUIDs) establish a standardized 128-bit format designed to ensure uniqueness across both spatial and temporal dimensions without relying on a . This fixed length allows for an immense of approximately 3.4 × 10^38 possible values, minimizing collision risks in distributed systems. The foundational international standard, ISO/IEC 11578:1996, defines the representation and generation algorithms for UUIDs within the Open Systems Interconnection (OSI) framework, specifically as part of the (DCE) (RPC) bindings. It specifies the canonical string format—32 digits grouped as 8-4-4-4-12 with hyphens—and outlines procedures for creating time-based and name-based identifiers to maintain global uniqueness. Compliance with this standard ensures interoperability in OSI-conformant environments by mandating the use of precise bit layouts for , clock sequence, and node fields. Building on DCE principles, RFC 4122 (published in 2005 by the ) formalizes UUIDs as a (URN) namespace, defining versions 1 through 5 with distinct generation methods while emphasizing collision avoidance through randomized elements like clock sequences and node identifiers. It introduces the variant field, encoded in the high-order bits of the eighth octet as the binary pattern 10xx (where xx are variable), to distinguish UUIDs generated under this specification from other variants and reserve space for future extensions. For interoperability, all compliant UUIDs must adhere to this variant encoding and include a nibble (a 4-bit value in the high-order bits of the seventh octet) that identifies the specific generation algorithm used. Guidelines for collision avoidance include using unique node identifiers, such as MAC addresses, and incrementing a clock sequence on system reboots or clock adjustments to prevent duplicates. RFC 9562 (published in 2024) obsoletes and expands RFC 4122, incorporating versions 6 through 8 to address modern needs like sortable timestamps and custom subtypes, while clarifying and slightly revising the variant rules for enhanced robustness. It reaffirms the 128-bit length and the core requirement for decentralized , with no central coordination needed for or validation. Updated criteria the variant bits (positions 64-65 in the UUID octet stream) be set to 10 for all defined versions, alongside the version nibble (bits 48-51) matching the UUID type (e.g., 0110 for version 6), ensuring seamless integration across systems and networks. These specifications collectively prioritize global by standardizing the layout and fields that signal provenance. In Microsoft Windows environments, the UUID is implemented as a Globally Unique Identifier (GUID), a 16-byte binary structure used extensively in (COM) and Distributed COM (DCOM) to uniquely identify interfaces, classes, and other objects. GUIDs are stored in binary form within the to index configuration information for applications and system components, enabling seamless object resolution across distributed systems. This adaptation maintains compatibility with the core UUID structure while integrating with Windows-specific protocols for remote procedure calls. The Bluetooth specification adopts 128-bit UUIDs for identifying services and profiles, often deriving them from shorter 16-bit or 32-bit forms assigned by the (SIG) to optimize transmission efficiency in low-power devices. These short UUIDs are expanded into full 128-bit equivalents by inserting the assigned value into a fixed base UUID (00000000-0000-1000-8000-00805F9B34FB), ensuring global uniqueness while minimizing on-air bytes in protocols like GATT. Only SIG-assigned short forms are permitted for , with custom 128-bit UUIDs reserved for vendor-specific extensions. In web and data interchange standards, UUIDs are represented in their canonical string lexical form—a sequence of 32 digits grouped as 8-4-4-4-12 and enclosed in braces for some contexts—to ensure consistent parsing within documents, as JSON natively supports strings without requiring special handling. This format promotes interoperability in -based and , where UUIDs serve as keys or identifiers without altering the underlying 128-bit binary value. Emerging standards and drafts extend UUIDs for cloud environments and enhanced privacy. For instance, (AWS) incorporates UUIDs within Amazon Resource Names (ARNs) for certain resource identifiers, such as in AWS Glue transformations that generate unique IDs for data rows, facilitating scalable, distributed resource management. Privacy-enhanced variants, addressed in recent IETF updates, introduce new versions like UUIDv7 (time-ordered with high-entropy random bits) and UUIDv8 (custom subtypes), which avoid exposing hardware identifiers like MAC addresses to mitigate tracking risks in distributed systems. These evolutions, formalized in RFC 9562, prioritize and temporal sorting while preserving .

Structure

Overall Layout

A Universally Unique Identifier (UUID) is a 128-bit value designed to be unique across space and time without centralized coordination. It is typically stored and transmitted in network byte order (big-endian), ensuring consistent interpretation across different systems regardless of local . This fixed 128-bit size provides ample space to avoid collisions while remaining compact for storage and comparison purposes. The UUID is divided into several fixed fields that collectively form its structure: an 8-bit field (indicating the encoding variant), a 4-bit field (specifying the generation algorithm), a 48-bit node (often derived from like a ), a 60-bit or equivalent value (for time-based ), and a clock sequence field (typically 14 bits to handle clock adjustments and prevent duplicates). These fields are not padded with leading zeros in their binary representation; instead, the fixed overall bit length ensures no overflow or alignment issues during generation or parsing. Visually, the 128-bit UUID can be broken down as follows:
UUID = time_low (32 bits) | time_mid (16 bits) | time_hi_and_version (16 bits) | clock_seq_and_variant (16 bits) | node (48 bits)
This layout positions the time_low as the least significant bits, followed by time_mid, then time_hi_and_version (which embeds the in its high 4 bits), clock_seq_and_variant (which embeds the variant in its high bits), and finally the node as the most significant bits. The purpose of these fields is to ensure global uniqueness by integrating temporal information (), spatial identifiers ( ID), and elements of randomness or sequencing (), allowing UUIDs to be generated independently on different systems without coordination. For instance, in time-based versions, the timestamp provides ordering, while the node distinguishes devices; in random versions, the fields incorporate pseudorandom values to achieve the same goal. This field-based design supports multiple UUID versions while maintaining a uniform overall layout.

Variant and Version Fields

The variant field in a UUID occupies the three most significant bits (bits 0 through 2) of the clock_seq_hi_and_reserved octet (octet 8 in the 128-bit layout), determining the overall layout and interpretation of the remaining bits for across systems. This field uses specific bit patterns to distinguish between different UUID encoding schemes: 0xx for Network Computing System (NCS) backward compatibility, 10x for the standard defined in RFC 9562 (providing compatibility with earlier RFC 4122 UUIDs), 110 for GUID backward compatibility, and 111 reserved for future use. The 10x pattern, where the two most significant bits are 10, is the most commonly used in modern implementations to ensure consistent parsing. The version field, a 4-bit , is located in the most significant bits (bits 0 through 3) of the time_hi_and_version octet (octet 6), specifying the UUID generation and thus how the other fields should be interpreted. Versions 1 through 5 represent the original methods: for time-based UUIDs using Gregorian timestamps, version 2 for DCE security UUIDs (largely reserved), version 3 for name-based UUIDs using hashing, version 4 for random or pseudorandom UUIDs, and for name-based UUIDs using hashing. Updated versions 6 through 8 extend this scheme: version 6 for reordered time-based UUIDs (rearranging version 1 fields for better sorting), version 7 for Unix timestamp-based UUIDs with random components for improved monotonicity, and version 8 for custom or application-specific UUIDs. To detect the UUID type, systems parse these fields during decoding: the variant bits first classify the layout, followed by the version bits to identify the exact generation method, enabling validation of compliance with RFC 9562. This dual classification is crucial for preventing misinterpretation; for instance, a variant mismatch (e.g., treating a GUID as an RFC 9562 UUID) can lead to incorrect extraction of timestamps or node identifiers, causing errors in distributed systems. By standardizing these bits, UUIDs maintain uniqueness and portability across diverse environments without requiring additional metadata.

Time and Node Components

In time-based UUIDs, such as versions 1 and 6, the timestamp component provides a measure of the generation time, consisting of a 60-bit value representing the number of 100-nanosecond intervals since the epoch of October 15, 1582, 00:00:00. This starting point deliberately follows the to avoid complications from the earlier transition, ensuring a consistent reference across systems. The is designed to roll over after approximately 3,400 years from the , providing ample longevity for practical use. The timestamp is subdivided and positioned within the 128-bit UUID structure as follows: the least significant 32 bits occupy the time_low field (octets 0-3), the next 16 bits form the time_mid field (octets 4-5), and the most significant 12 bits of the timestamp appear in the time_hi portion of the time_hi_and_version field (octets 6-7, with the remaining 4 bits reserved for the version number). In version 1 UUIDs, this layout preserves the original DCE ordering, while version 6 reorders the fields to place the most significant timestamp bits first for improved chronological sorting in databases. These components collectively ensure that the timestamp contributes to the UUID's uniqueness by embedding precise temporal information. To mitigate risks of duplicate UUIDs arising from clock adjustments, such as regressions or resets on the generating system, a 14-bit clock sequence field is included. This sequence is typically initialized to a random value between 0 and 16,383 and is incremented ( 16,384) whenever the local clock is found to have regressed relative to the last UUID generation time, or upon node ID changes that could otherwise cause collisions. The clock sequence occupies bits 66-79 in the binary representation: for the UUID , it consists of bit 66 ( bit of the 10x variant) followed by the 5 bits in the remainder of octet 8 (bits 67-71), and the 8 bits in octet 9 (bits 72-79). This mechanism guarantees temporal uniqueness even in environments with imperfect clocks, without requiring synchronized time across nodes. The node ID component, a 48-bit field, identifies the or generating the UUID and occupies the final octets (10-15) in the binary layout. It is conventionally set to the of the local node, which uniquely identifies interfaces worldwide. When a true is unavailable or to preserve , a randomly generated 48-bit value is used instead, with the bit (the least significant bit of octet 10) set to 1 to distinguish it from addresses. This node ID, combined with the and clock , ensures by tying the UUID to a specific generating . The variant and version fields are integrated adjacent to these components to classify the UUID type without altering their core roles.

UUID Versions

Time-based with MAC Address (Versions 1 and 6)

UUID , also known as the time-based UUID, generates identifiers using a 60-bit representing the number of 100-nanosecond intervals since 00:00:00.00 UTC on October 15, 1582 (the ), combined with a 14-bit clock sequence and a 48-bit node identifier. The is divided into three fields: time_low (32 bits), time_mid (16 bits), and time_hi_and_version (16 bits, with the 4-bit set to 0001 and the remaining 12 bits for time_hi). The clock sequence prevents duplicates if the system clock is reset or adjusted backward, initialized to a random value between 0 and 16383, while the node field typically holds the of the generating machine's network interface; if no is available, a random 48-bit value is used with the bit (least significant bit of the first octet) set to 1. The generation process for version 1 UUIDs follows a stateful to ensure monotonicity: obtain an exclusive lock to access the UUID generation state, retrieve the current UTC and ID, compare the to the previous one—if it has not advanced, increment the clock (or generate a new one if it overflows) and retry the acquisition up to a system-defined limit, then format the fields into the 128-bit structure and release the lock. This design supports high generation rates, up to approximately 10 million UUIDs per second per , as the 100-nanosecond allows 10^7 intervals per second. is guaranteed globally without central coordination: the and combination ensures no collisions across distinct machines (due to unique addresses), while the clock handles duplicates within the same and time slot. Version 6 UUIDs, introduced as an update in RFC 9562, maintain the core elements of —60-bit , 14-bit clock , and 48-bit node—but reorder the fields for improved lexical sorting when stored as binary or text representations, enhancing locality and query performance in distributed systems. Specifically, the structure places the most significant 48 bits of the first (time_high across octets 0-5, as 32 bits in octets 0-3 and 16 bits in 4-5), followed by the version (0110 in bits 48-51 of octet 6), the least significant 12 bits of the (time_low in bits 52-63 of octet 6-7), (10 in bits 64-65 of octet 8), the clock (14 bits across octets 8-9), and the node (48 bits in octets 10-15). Generation mirrors , including the stateful and clock logic, but with the bytes rearranged post-capture to prioritize higher-order bits for sortability, using the same and node derivation rules. Both versions 1 and 6 provide strong uniqueness guarantees identical to those of the original DCE specification, with one UUID per 100-nanosecond interval per node, enabling collision-free operation across space and time in uncoordinated environments. They are particularly suited for use cases in distributed computing systems, such as the Open Software Foundation's Distributed Computing Environment (DCE), where temporal ordering is beneficial for logging, transaction tracking, or replication without requiring synchronized clocks beyond the node level. Version 6's sorting advantage makes it preferable in modern databases for range queries or partitioning by time.

DCE Security with MAC Address (Version 2)

Version 2 UUIDs, known as DCE security UUIDs, represent a specialized variant of time-based identifiers designed for environments requiring embedded contexts. They extend the core structure of UUIDs by incorporating local identifiers such as user IDs (UIDs) or group IDs (GIDs) to associate UUIDs with specific principals for and auditing purposes. This variant was specified in the DCE 1.1 and Services standard to support privilege management within DCE cells. The layout of a version 2 UUID mirrors that of in its overall 128-bit composition, including a 60-bit split across time_low (32 bits), time_mid (16 bits), and time_hi_and_version (16 bits, with the 4 most significant bits set to 0010 to indicate version 2), a 14-bit clock sequence across clock_seq_hi_and_reserved (8 bits, with variant bits 10 in the 2 most significant bits) and clock_seq_low (8 bits), and a 48-bit node field containing the . However, the time_low field replaces the least significant 32 bits of the with the 32-bit local identifier ( or GID), reducing precision but embedding security information. The clock sequence is effectively shortened to 6 bits in clock_seq_hi_and_reserved (bits 8-13 of the original sequence), while the 8-bit clock_seq_low field holds the value, which differentiates the type of local identifier used. The value in clock_seq_low specifies the security context and supports three defined values: 0 for the domain (using a user ID), 1 for the group domain (using a group ID), and 2 for the domain (using an organizational unit ID). These domains enable DCE systems to map UUIDs to specific entries, such as in privilege attribute certificates, ensuring that identifiers reflect the creating entity's security role within a local cell. Although the field is 8 bits (allowing values up to 255), only these three are standardized, with others left for potential future or implementation-specific use. Generation of a version 2 UUID involves capturing the current UTC in 100-nanosecond intervals since , 1582, incrementing a 6-bit clock sequence (modulo 64) if the timestamp has not advanced, selecting the appropriate and retrieving the corresponding local ID (e.g., via getuid() or getgid()), and combining these with the system's 48-bit node ID (). The local ID and are embedded at creation time to record the principal responsible, aiding in auditing and authorization without requiring centralized coordination. Unlike , no standard DCE directly generates version 2 UUIDs; implementations must customize the uuid_create() routine accordingly. Due to their dependency on POSIX-specific identifiers and limited adoption beyond DCE ecosystems, version 2 UUIDs are largely obsolete today and omitted from many modern libraries and standards. RFC 9562 reserves the version for DCE security but provides no further details, deferring to the original specification, and notes their rarity in contemporary systems except for legacy DCE or certain environments.

Namespace Name-based (Versions 3 and 5)

Namespace name-based UUIDs, designated as versions 3 and 5, are generated by applying a to a combination of a predefined UUID and a unique name string, ensuring deterministic uniqueness within that . These versions provide a to create identifiers from human-readable names that are guaranteed to be unique as long as the name is unique within its specified , making them suitable for applications requiring reproducible UUIDs, such as federated naming systems. Unlike random or time-based UUIDs, the output is always the same for identical inputs, facilitating consistent identification across distributed systems without coordination. The generation process begins with selecting a namespace UUID, which acts as a context for the name, followed by concatenating the namespace UUID—in network byte order—with the name encoded as a sequence of octets (using for strings). For version 3, an hash is computed over this concatenation, yielding a 128-bit digest from which the UUID fields are derived: the first 32 bits form time_low, the next 16 bits time_mid, the following 16 bits populate time_hi_and_version (with the version bits set to 0011 , or 3 ), the subsequent 8 bits fill clock_seq_hi_and_reserved (with variant bits set to 10 ), the next 8 bits clock_seq_low, and the final 48 bits the node field. Version 5 follows an identical structure but uses a hash instead of , with the version bits in time_hi_and_version set to 0101 (or 5 ); this substitution is recommended due to MD5's vulnerabilities, though neither version is intended for security-sensitive applications like credentials. The resulting UUID adheres to the standard (bits 6-7 of octet 6 set to 10) and is converted to the appropriate byte order for representation. RFC 4122 defines several predefined namespace UUIDs to standardize common use cases, including the DNS namespace (6ba7b810-9dad-11d1-80b4-00c04fd430c8) for domain names, the namespace (6ba7b811-9dad-11d1-80b4-00c04fd430c8) for uniform resource locators, and the OID namespace (6ba7b812-9dad-11d1-80b4-00c04fd430c8) for object identifiers. These namespaces enable , allowing different systems to independently generate the same UUID for the same name, thus supporting scenarios like naming resources in distributed directories or registries.

Randomly Generated (Version 4)

Version 4 UUIDs are generated using random or pseudo-random numbers, providing a method for creating unique identifiers without reliance on timestamps or hardware addresses. This approach ensures uniqueness through high-entropy random bits, making it suitable for environments where deterministic generation is undesirable or impractical. The structure of a Version 4 UUID follows the standard 128-bit layout, with specific fixed bits to indicate the version and variant. The version field, consisting of 4 bits (positions 12-15 in the time_hi_and_version octet), is set to the value 0100 to denote Version 4. The variant field, using 2 bits (positions 6-7 in the clock_seq_hi_and_reserved octet), is set to 10 to conform to the RFC 4122 variant specification. The remaining 122 bits are filled with random values, yielding over 2^122 possible unique UUIDs and effectively eliminating collision risks in practical applications. Generation of Version 4 UUIDs requires a source of random numbers, preferably of cryptographic quality to maximize and prevent predictability from poor or algorithmic weaknesses. The process involves setting the fixed and bits, then populating the other s with random data: the 32-bit time_low entirely random; the 16-bit time_mid entirely random; the 12 least significant bits (0-11) of the time_hi_and_version random; the 14-bit clock (6 bits from clock_seq_hi_and_reserved positions 0-5 plus all 8 bits of clock_seq_low) random; and the 48-bit entirely random. This random placement across fields maintains compatibility with the UUID format while distributing evenly. A key advantage of Version 4 UUIDs is their independence from system clocks, avoiding synchronization issues common in time-based variants and enabling generation in offline or distributed systems without coordination. Additionally, by eschewing timestamps and MAC addresses, they enhance privacy by not leaking temporal or hardware-specific information about the generating system. The RFC 4122 standard explicitly recommends this random method for scenarios prioritizing simplicity and security over reproducibility.

Unix Timestamp with Random (Version 7)

UUID Version 7 (UUIDv7) is a time-ordered variant of the Universally Unique Identifier (UUID) standard, defined in RFC 9562, which incorporates a 48-bit Unix timestamp representing milliseconds since the Unix epoch (January 1, 1970, 00:00:00 UTC, excluding leap seconds) into its structure, alongside 4 bits for the version number (set to 0111 binary), a 12-bit field for or a counter, and 62 bits of additional , with the 2-bit variant field set to 10 binary to indicate RFC compliance. The layout of UUIDv7 arranges the 48-bit across the most significant bits—specifically, the 32-bit time_low field, the 16-bit time_mid field, and the low-order 12 bits of the 16-bit time_hi_and_version field—to ensure that UUIDs generated in temporal sequence exhibit lexical sortability when represented as strings or values. The version bits occupy the high-order 4 bits of the time_hi_and_version field, while the variant bits are placed in the high-order 2 bits of the clock_seq_hi_and_reserved field within the 16-bit clock_seq portion, replacing the traditional clock sequence and node identifier fields used in earlier time-based UUIDs. This configuration, illustrated in the following bit-level breakdown, prioritizes temporal ordering in the initial 48 bits followed by randomized bits for uniqueness:
FieldBitsDescription
unix_ts_ms0-4748-bit Unix timestamp (ms)
ver48-51Version (7)
rand_a (or counter/sub-ms)52-6312 bits random or monotonic counter
var64-65Variant (10)
rand_b66-12762 bits random
For generation, the process begins by capturing the current Unix timestamp in milliseconds, which is placed in the high bits; within each millisecond interval, a per-process monotonic counter (up to 4096 increments, fitting the 12-bit field) ensures uniqueness for multiple UUIDs generated sub-millisecond, while the 62 random bits (sourced from a cryptographically secure pseudorandom number generator, similar to those used in Version 4) provide high entropy and replace the node identifier to avoid dependencies on hardware addresses. If the counter overflows within a millisecond, the generator may increment the timestamp or fail to prevent duplicates, promoting robustness in high-throughput scenarios. This design offers lexical sortability akin to UUID Version 6 but achieves clock sequence independence by relying solely on and randomness, resulting in better distribution of across the UUID and reduced collision risk compared to MAC-address-dependent variants. Consequently, UUIDv7 provides enhanced locality over purely random UUIDs like Version 4, as temporally proximate identifiers cluster together, improving query performance in sorted or time-range-based operations without requiring separate fields. Adoption of UUIDv7 is emerging in distributed systems and , where its sortable, time-embedded nature supports efficient indexing for timestamp-driven workloads.

Custom (Version 8)

Version 8 UUIDs provide a flexible framework for custom identifier generation tailored to specific applications or vendors, where the standard layouts of other versions do not suffice. Defined in RFC 9562, this version reserves 122 bits for implementation-specific use while enforcing the version field to 8 (binary 1000 in bits 48-51) and the variant field to 10xx (bits 64-65 set to 10), ensuring basic compatibility with UUID parsing systems. This approach allows embedding domain-specific data, such as numbers, application , or custom hashes, without conflicting with predefined structures in versions 1 through 7. Implementations of version 8 UUIDs must fully document their custom layout to enable understanding and potential interoperability, as the does not prescribe any particular algorithm beyond the fixed fields. The 128-bit structure allocates bits 0-47 (custom_a, 48 bits), bits 52-63 (custom_b, 12 bits), and bits 66-127 (custom_c, 62 bits) for user-defined content, leaving the and bits to signal the custom nature. Uniqueness is the responsibility of the implementer, who must ensure that the method used—whether time-based, random, or otherwise—avoids collisions within the intended scope, and the layout should not mimic patterns from other UUID to prevent misinterpretation. For example, a custom version 8 UUID might incorporate a Unix in the initial bits followed by application-specific counters, as illustrated in 9562 with the identifier 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0, or use a SHA-256 of and name data for deterministic generation, such as 5c146b14-3c52-8afd-938a-375d0df1fbf6. These examples are illustrative only and not recommended for production without modification to suit the domain's needs. The emphasizes that custom formats should prioritize uniqueness guarantees and rigorous testing, avoiding reliance on security properties like those in version 2. A primary of version 8 UUIDs is diminished , as undocumented or layouts may render identifiers unusable across systems or lead to unintended collisions if uniqueness is not properly managed. To mitigate this, the recommends public documentation of algorithms and advises against using version 8 for scenarios requiring broad , reserving it for controlled, application-specific environments.

Encoding

Binary Representation

A universally unique identifier (UUID) is represented in binary form as a fixed-size 16-byte (128-bit) array, providing a compact and efficient means for storage and transmission across systems without introducing variable-length overhead. This format ensures in low-level operations, such as allocation or direct byte in programming languages. The byte for this 16-byte array follows big-endian (most significant byte first, also known as network byte order) as specified in RFC 9562, particularly for timestamp-related fields like time_low, time_mid, and time_hi_and_version, where multi-byte values are serialized with the most significant octet first. The node identifier field is likewise transmitted in the it appears on the network wire, maintaining consistency for cross-platform compatibility. However, implementations in Windows APIs, such as the GUID , store multi-byte fields (Data1, Data2, and Data3) in little-endian on little-endian architectures like x86, requiring to big-endian when interfacing with network protocols or standards-compliant systems. In database systems, UUIDs are commonly stored using a BINARY(16) data type, preserving the exact 16 bytes without additional formatting or padding, which allows for efficient indexing and querying. In C programming environments, a typical representation is a structure like typedef unsigned char uuid_t[16];, treating the UUID as an opaque byte array to avoid endianness assumptions during local operations. For transmission in network protocols, UUIDs are sent as raw 16-byte sequences in big-endian order without byte swapping or transformation, ensuring direct usability in headers or payloads; examples include Server Message Block (SMB) for file sharing and custom HTTP headers in distributed systems. To parse the binary representation and extract components like the field, operations are applied directly to the assuming the big-endian layout. For instance, the UUID is obtained from the high of the seventh byte (octet 6, zero-based indexing), corresponding to bits 12-15 of the time_hi_and_version field:
version = (bytes[6] >> 4) & 0x0F;
This approach enables quick validation and field access in performance-critical code, such as in cryptographic libraries or identifier generators.

Textual Representation

The textual representation of a UUID, as defined in RFC 9562, consists of 32 digits (using lowercase letters a–f) arranged in five groups separated by hyphens in the format 8-4-4-4-12: the first group contains 8 digits for the time-low field, followed by 4 digits each for time-mid, time-high-and-version, clock-seq-and-reserved plus clock-seq-low, and 12 digits for the node field. For example, a typical UUID appears as 123e4567-e89b-12d3-a456-426614174000. This format ensures human readability and across systems. A compact variant omits the hyphens, resulting in a continuous 32-hex-digit string, which is commonly used for storage efficiency or in contexts where brevity is prioritized, though it is not the canonical form specified by the . Uppercase hexadecimal letters are permitted on input for but are not preferred for output, which should use lowercase; the treats hexadecimal values as case-insensitive during processing. When used as a (URN), a UUID is prefixed with urn:uuid:, yielding forms like urn:uuid:123e4567-e89b-12d3-a456-426614174000. Validation of a UUID string typically involves verifying its length (36 characters with hyphens or 32 without), ensuring all characters are valid digits, and checking the and identifiers embedded in specific positions. The nibble, located as the first hexadecimal digit of the third group (position 15 in the hyphenated string), must be 1, 3, 4, 5, 6, 7, or 8 to indicate one of the defined UUID versions. Similarly, the bits, starting with the first digit of the fourth group (position 19), should match the 9562 (binary 10xx, corresponding to hexadecimal 8, 9, a, or b) for compatibility. Beyond format checks, the provides no formal mechanism to confirm a UUID's overall validity, such as whether it is assigned or in the future. Many programming libraries support parsing UUID strings into binary form, often accommodating both hyphenated and compact representations. For instance, the uuid_parse() function in the libuuid library (part of the util-linux package) converts a standard hyphenated string to a 128-bit binary UUID, expecting the exact 36-character format including hyphens and null terminator.

Special Values

Nil UUID

The nil UUID is a special form of universally unique identifier defined in the standards for UUIDs, consisting of 128 bits all set to zero. It serves as a reserved value to represent the absence of a UUID, analogous to a null or uninitialized state in data structures. In textual representation, the nil UUID is expressed as 00000000-0000-0000-0000-000000000000. According to RFC 9562, which obsoletes the earlier RFC 4122, this value is explicitly designated as the "nil UUID" and is not produced by any standard UUID generation algorithm. Its variant field evaluates to 0 (following the NCS scheme due to the all-zero bits), and its field is also 0, distinguishing it from versioned UUIDs. This nil UUID is commonly used in databases to indicate unassigned or optional identifiers, such as in where the UUID type treats the all-zero value as a flag for an unknown or unset UUID, often inserted via functions like uuid_nil(). In programming environments, it represents uninitialized objects; for instance, Python's uuid module provides uuid.NIL as this constant for scenarios requiring a null UUID placeholder. In APIs and data serialization formats like , it denotes optional fields without a valid UUID, avoiding the need for separate null types while maintaining type consistency. Such usage ensures clear signaling of absence without risking collision with generated UUIDs, as the nil value is explicitly reserved for implementation-specific null-like purposes.

Maximum UUID

The maximum UUID, also known as the Max UUID, is a special value consisting of 128 bits all set to 1, represented in hexadecimal as ffffffff-ffff-ffff-ffff-ffffffffffff. This value serves as the theoretical upper bound within the UUID namespace, contrasting with the nil UUID by representing a "full" state rather than an "empty" one. Defined in RFC 9562, the Max UUID adheres to the overall UUID format but features a version number of 15 in its version bits (the first four bits of the third octet set to 1111), which is invalid for standard UUID versions 1 through 8 and reserved for future extensions. Although not explicitly outlined in the earlier RFC 4122, it remains a valid UUID per the structural rules, as the specification does not prohibit all-ones configurations beyond defined variants. In binary form, it is a continuous sequence of 128 ones, making it the largest possible 128-bit value expressible as a UUID. In practice, the Max UUID is rarely generated or encountered, as it is primarily for specific system-level purposes rather than routine . It functions as a in scenarios requiring a 128-bit UUID where no valid identifier applies, such as denoting an invalid or uninitialized state in protocols or data structures. Common contexts include overflow protection in UUID-based counters, where it signals the exhaustion of the identifier space, or as a marker in specifications to avoid conflicts with assignable values. For instance, database systems like provide functions to generate this value explicitly as the counterpart to the nil UUID for such roles. Implementations in programming languages further highlight its specialized role; the Python standard library's uuid module exposes it as uuid.MAX for programmatic use in boundary checks or defaults, while similar constants appear in Rust's uuid crate and Node.js's uuid package to represent the all-ones boundary. Overall, its adoption emphasizes conceptual completeness in UUID ecosystems without implying routine generation, ensuring it does not collide with probabilistically unique identifiers.

Collisions

Probability Calculations

The probability of collisions in UUIDs is analyzed using the birthday paradox approximation, which estimates the likelihood of at least one duplicate among n generated identifiers in a space of size N:
P(\text{collision}) \approx 1 - e^{-n^2 / (2N)}
where N = 2^m and m is the number of effective random bits. This formula provides a practical bound for collision risk across UUID versions, assuming and .
For and version 6 UUIDs, collisions occur only if two identifiers share the exact 60-bit , 14-bit clock sequence, and 48-bit identifier, yielding an effective randomness of 62 bits (m = 62, N \approx 2^{62}) within each slot. The is further ensured by using unique identifiers, such as MAC addresses, reducing the practical collision risk across distributed systems. For collisions within the same , the space is 62 bits, making duplicates extremely unlikely unless generating over $2^{31} UUIDs in the same slot across identical s, which is practically impossible. , is ensured by distinct and IDs. Version 2 UUIDs, a legacy DCE security variant, follow a similar time-based structure to version 1 but replace the 48-bit node field with 32-bit POSIX UID and 32-bit GID fields, resulting in an effective space of 60-bit timestamp + 14-bit clock sequence + 64-bit UID/GID (m \approx 78) within each slot, scoped to specific users or groups on a system. Uniqueness relies on distinct inputs, with collision risks comparable to version 1 but limited to the same system/user context; due to rarity of use, detailed probability analyses are uncommon. Version 4 UUIDs utilize 122 random bits (m = 122, N = 2^{122}), excluding the fixed version and variant fields. Under the birthday approximation, generating approximately $2^{61} (about 2.3 quintillion) UUIDs yields a collision probability of roughly 50%, though smaller sets like $2^{50} UUIDs result in a negligible of about $10^{-15}. This vast space makes collisions extremely unlikely in most applications. Version 3 UUIDs, based on hashing of a and name, inherit MD5's known collision vulnerabilities, where practical attacks can produce distinct inputs with identical 128-bit outputs, though scoping (e.g., DNS or ) confines risks to specific domains and limits global impact. Version 5 UUIDs use hashing, which also suffers from demonstrated collisions (e.g., chosen-prefix attacks requiring feasible computation), but the same constraints mitigate widespread uniqueness failures; both versions assume input uniqueness to avoid hash-based duplicates. NIST has deprecated due to these weaknesses and announced that should be phased out by December 31, 2030, for cryptographic uses. Version 7 UUIDs combine a 48-bit Unix (milliseconds since 1970) with 74 random bits (m = 74, N = 2^{74}), providing slightly reduced effective randomness compared to version 4 due to the fixed time component. Under the birthday approximation, generating approximately $2^{37} version 7 UUIDs within the same would yield about a 50% chance of collision, though such volume in one is practically impossible. For realistic rates (e.g., millions per second), the risk remains negligible, with overall low probability given the time-ordered nature. Version 8 UUIDs are custom, with structure defined by the implementer, typically allocating 122 bits for version-invariant data including random components (e.g., at least 74 random bits recommended). Collision probability depends on the effective random bits used (m up to 122); following RFC 9562 guidelines for sufficient ensures risks similar to version 4, but poor implementations could increase vulnerabilities.

Mitigation Strategies

To minimize the risk of collisions in UUID generation, implementations must adhere to the specifications outlined in relevant standards, particularly for random and time-based variants. For Version 4 and Version 7 UUIDs, which rely heavily on randomness, using a (CSPRNG) is essential to ensure sufficient and unguessability; weak pseudorandom number generators like the standard C rand() function should be avoided, as they can lead to predictable sequences and increased collision probabilities. For Version 8, implementers must ensure adequate random bits and CSPRNG usage to match version 4 security levels. For Version 1 and Version 6 UUIDs, which incorporate timestamps and node identifiers, maintaining stable, monotonically increasing clocks is critical to prevent duplicates from clock rollbacks or low-resolution timing; if the clock regresses, the clock sequence must be incremented or randomized to maintain uniqueness. Unique node IDs, such as MAC addresses, further reduce collision risks, but in their absence, a fallback to a randomly generated 48-bit node ID with the multicast bit set to 1 provides a viable alternative while preserving global uniqueness properties. Version 2 follows similar clock and sequence rules but scopes uniqueness via UID/GID. Version 3 and Version 5 UUIDs, being name-based, mitigate cross-domain collisions by scoping generations to predefined , such as the DNS namespace (UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8), ensuring that identical names in different namespaces produce distinct UUIDs through hashing ( for Version 3, for Version 5). Version 5 is preferred over Version 3 due to MD5's known vulnerabilities, though both rely on the uniqueness of the input name within its namespace to avoid collisions. Beyond version-specific measures, general best practices include generating UUIDs on demand during runtime rather than pre-allocating batches, which can introduce errors if not properly synchronized across distributed systems; in high-volume environments, such as handling millions of insertions, application-level for duplicates—via hashing indexes or periodic scans—is recommended to detect and handle any rare collisions promptly. Standard-compliant libraries facilitate these practices: the OSSP UUID library implements Versions 1, 3, 4, and 5 per RFC 4122 (updated in RFC 9562), using system-appropriate entropy sources for randomness, while Java's java.util.UUID class employs SecureRandom for randomUUID() to generate Version 4 UUIDs with cryptographic strength.

Uses

Filesystems and Storage

In filesystems, universally unique identifiers (UUIDs) serve as persistent, hardware-independent labels for volumes and partitions, enabling reliable identification and mounting without reliance on volatile device paths. This approach facilitates seamless operation across diverse hardware configurations and prevents conflicts arising from device enumeration changes. UUIDs are typically generated randomly during filesystem creation, often adhering to 4 of the UUID for high entropy and . The (GPT), standardized in the specification, employs a 128-bit Disk GUID to uniquely identify the entire disk, including its header and associated storage. This GUID is generated randomly upon GPT initialization and stored in the GPT header at byte offset 56, serving as a disk signature that distinguishes it from other storage devices even if cloned. entries in GPT also use UUIDs for type identification and unique partitioning, ensuring unambiguous recognition in bootloaders and operating systems. Linux filesystems like ext4 and XFS integrate UUIDs directly into their superblocks for volume identification. For ext4, the UUID is automatically generated as a random 128-bit value during filesystem creation with the mkfs.ext4 command, unless explicitly set via the -U option; this identifier is then referenced in /etc/fstab for stable mounting, decoupling the process from device names like /dev/sda1 that may shift due to hardware additions. Similarly, XFS generates a random UUID by default when formatted with mkfs.xfs, storable in the superblock and customizable with the -m uuid=value option, allowing consistent administration and mounting via tools like mount and xfs_admin. These UUIDs enable automated detection and configuration in environments with dynamic storage topologies. Microsoft's NTFS filesystem utilizes 128-bit GUIDs as Object IDs for volumes and files, assigned to metadata structures like the master file table (MFT) records and the volume root. These GUIDs, supported exclusively on NTFS volumes, facilitate secure identification and access, particularly in security descriptors where they link ownership and permissions without depending on file paths. The volume's Object ID acts as a persistent GUID for the entire filesystem, complementing the 64-bit volume serial number and enabling features like volume mount points via the mountvol command, which references volumes as \\?\volume\{GUID}\. Apple File System (APFS) organizes storage into containers, each identified by a unique 128-bit UUID that encapsulates multiple volumes sharing the same physical space. This container UUID plays a critical role in , where keybags are encrypted using the UUID to enable rapid, secure of contents by invalidating keys tied to the identifier. For snapshots, APFS leverages the container structure to manage point-in-time copies across volumes, with the UUID ensuring integrity and isolation during operations like or , as volumes within the container inherit contextual from it. The adoption of UUIDs in these filesystems yields key advantages, including portability across hardware platforms, as identifiers remain constant regardless of port changes or system reconfiguration, thus simplifying migration and . They also mitigate naming conflicts in multi-disk setups by providing globally unique labels, reducing errors in mounting and data access while enhancing resilience in distributed or cloud environments.

Databases and Identification

In relational databases, UUIDs serve as surrogate primary keys, providing globally unique identifiers without relying on sequential values generated by the database. For instance, includes a native uuid that stores 128-bit UUIDs efficiently as binary values, making it suitable for primary keys in distributed environments where uniqueness across systems is essential. This approach avoids the predictability of auto-incrementing integer IDs, which can expose sensitive information through enumeration attacks or reveal database growth patterns. Certain UUID versions enhance database operations involving time. 1 and 6 incorporate , enabling temporal queries by extracting creation times directly from the identifier for filtering or ordering records based on when data was inserted. In contrast, version 7 prioritizes sortability by placing a Unix in the most significant bits, improving index performance in structures for time-ordered data retrieval. In databases, UUIDs offer alternatives to native identifier schemes. defaults to ObjectIds, which are 12-byte values embedding timestamps for efficient indexing and , but UUIDs provide stronger cross-system at the cost of larger when encoded as (16 bytes versus ObjectId's compact form). employs version 4 UUIDs—randomly generated for even data distribution—as partition keys, ensuring balanced load across nodes in clustered setups without hotspots from sequential patterns. For indexing, UUIDs are stored in binary format (16 bytes) in systems like , which is more space-efficient than text representations but doubles the size of 8-byte integers like BIGINT, potentially increasing index bloat in high-volume tables. Despite this, binary storage supports fast comparisons and hashing. In distributed transactions, UUIDs are generated at insert time, ensuring across replicas without central coordination and preventing ID conflicts during merges.

Networking and Distributed Systems

In distributed networking and systems, universally unique identifiers (UUIDs) play a critical role in ensuring unambiguous identification of objects, sessions, and messages across heterogeneous environments, preventing conflicts in transient references without relying on centralized coordination. This is particularly valuable in protocols where objects or data must be referenced remotely, as UUIDs provide a 128-bit space that minimizes collision risks even in high-scale, decentralized scenarios. In the (CORBA) using the Internet Inter-ORB Protocol (IIOP), UUIDs form part of the object key within Interoperable Object References (IORs), enabling unique identification of distributed objects across ORBs. The DCE UUID format is specified for this purpose in IIOP profiles, allowing clients to invoke methods on remote objects without name resolution dependencies. Similarly, Microsoft's (DCOM) employs GUIDs—equivalent to UUIDs—for interface marshaling, where the Interface Identifier (IID) uniquely specifies the COM interface being accessed, and the Causality Identifier (CID) tracks related call chains during remote activation and invocation. For modern web-based protocols, RESTful HTTP APIs frequently incorporate UUIDs in resource URLs to denote specific entities, such as /api/resources/{uuid}, which obscures sequential patterns and supports distributed generation without database coordination. ETags for caching can also leverage UUIDs as opaque validators, ensuring efficient conditional requests by comparing resource versions across distributed caches. In with , UUIDs are typically encoded as fixed-length strings (e.g., 36 characters in hyphenated form) or 16-byte fields within message definitions to identify requests, responses, or session objects, facilitating reliable routing in architectures. Custom UUID variants may be defined in application-specific protocols to incorporate network , such as timestamps or IDs, enhancing in remoting scenarios.

Other Applications

UUIDs find application in software licensing as product keys or identifiers, where a unique value tied to or machine-specific ensures licensed use on designated systems. For instance, employs UUIDs to bind licenses to the compute resource's identifier during , generating a single key that validates the software installation on that specific . Version 5 UUIDs, which are name-based and employ hashing of inputs like machine , support such deterministic generation for reproducible yet unique keys. In systems, UUIDs serve as trace identifiers to correlate events across distributed components in structured logs. OpenTelemetry, a widely adopted framework, uses 128-bit trace IDs generated randomly, often aligning with Version 4 UUIDs for their high and , enabling end-to-end tracing of requests through . UUIDs contribute to by providing unique values for nonces or salts, enhancing security in protocols or hashing schemes, though implementations must prioritize randomness to avoid predictability. Version 4 UUIDs, with their random bit generation, are recommended for such security-sensitive uses due to their suitability for operations requiring unpredictability. For , UUIDs assign unique instance identifiers to containers, facilitating orchestration and isolation in environments like and . In , every object receives a globally unique based on UUID standards (ISO/IEC 9834-8), distinguishing instances across the cluster regardless of names or namespaces. similarly allocates a unique 64-character identifier as the container ID upon creation, ensuring unambiguous reference in commands and APIs. In multimedia applications, UUIDs embed as unique identifiers in standards to track and distinguish . The ImageUniqueID tag, a 128-bit fixed-length string, functions as a UUID-equivalent to assign persistent uniqueness to images, aiding in database cataloging and verification. Similarly, tags in audio files use the UFID frame for unique identifiers, where a UUID can be stored under an owner like a music database to enable cross-system recognition without relying on filenames or other mutable data.

References

  1. [1]
    RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace
    1. Variant The variant field determines the layout of the UUID. · 2. Layout and Byte Order To minimize confusion about bit assignments within octets, the UUID ...
  2. [2]
    draft-leach-uuids-guids-01 - IETF Datatracker
    Network Working Group Paul J. Leach, Microsoft INTERNET-DRAFT Rich Salz, Certco <draft-leach-uuids-guids-01.txt> Category: Standards Track Expires August 4, ...Missing: origins | Show results with:origins
  3. [3]
    [PDF] OSF® DCE Application Development Guide —Core Components ...
    Dec 10, 1998 · ... UUID . . . . . . . . . . . . . . . . . . 157. Naming the Interface ... This revision applies to the OSF® DCE Release 1.2.2 offering and ...
  4. [4]
    DCE 1.1: Remote Procedure Call - Universal Unique Identifier
    This appendix specifies the syntax and semantics of the DCE variant of Universal Unique Identifiers (UUIDs). A UUID is an identifier that is unique across both ...
  5. [5]
    RFC Errata Report » RFC Editor
    RFC 4122, "A Universally Unique IDentifier (UUID) URN Namespace", July 2005. Note: This RFC has been obsoleted by RFC 9562 · Source of RFC: IETF ...
  6. [6]
    draft-ietf-uuidrev-rfc4122bis-08 - Universally Unique IDentifiers (UUID)
    Expires 25 January 2024 [Page 7] Internet-Draft UUID July 2023 * Changed ... UUID Version 7 UUID version 7 features a time-ordered value field derived ...
  7. [7]
    RFC 9562 - Universally Unique IDentifiers (UUIDs) - IETF Datatracker
    UUIDs were originally used in the Apollo Network Computing System (NCS), later in the Open Software Foundation's (OSF's) Distributed Computing Environment ...
  8. [8]
    ISO/IEC 10589:1992/Cor 1:1993
    ### Summary of ISO/IEC 10589:1992/Cor 1:1993
  9. [9]
    [PDF] ISO/IEC 11578:1996 - iTeh Standards
    Dec 15, 1996 · ISO/IEC 11578:1996 is an international standard for open systems interconnection, specifically remote procedure call (RPC) in information ...
  10. [10]
    GUID - Win32 apps - Microsoft Learn
    Feb 22, 2024 · A GUID structure (guiddef.h) identifies an object such as a COM interfaces, or a COM class object, or a manager entry-point vector (EPV).Missing: DCOM | Show results with:DCOM
  11. [11]
    GUIDs and the System Registry | Microsoft Learn
    May 30, 2018 · The system registry is a central repository that contains information about objects. GUIDs are used to index that information.
  12. [12]
    [MS-DCOM]: Standards Assignments - Microsoft Learn
    Oct 29, 2020 · The DCOM Remote Protocol object resolver service either needs to use the same well-known endpoints as the RPC endpoint mapper.
  13. [13]
    [PDF] Assigned Numbers - Bluetooth
    Dec 20, 2023 · This is a regularly updated document listing assigned numbers, codes, and identifiers in the Bluetooth specifications. Bluetooth SIG Proprietary ...
  14. [14]
    Part A Data Types Specification - Bluetooth
    16-bit and 32-bit UUIDs shall only be used if they are assigned by the Bluetooth SIG. The Bluetooth SIG may assign 16-bit and 32-bit UUIDs to member companies ...
  15. [15]
    RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace
    ### Summary of UUID Specifications (RFC 4122)
  16. [16]
    Add a UUID column - AWS Glue
    To add a UUID column, open the Resource panel, choose UUID, add a transform node, and each row will get a unique 36-character string. The default column name ...
  17. [17]
    RFC 9562: Universally Unique IDentifiers (UUIDs)
    The authors gratefully acknowledge the contributions of Rich Salz ... This document draws heavily on the OSF DCE specification (Appendix A of [C309]) for UUIDs.Missing: origins | Show results with:origins
  18. [18]
  19. [19]
  20. [20]
  21. [21]
  22. [22]
  23. [23]
  24. [24]
  25. [25]
  26. [26]
  27. [27]
  28. [28]
  29. [29]
  30. [30]
  31. [31]
  32. [32]
  33. [33]
  34. [34]
  35. [35]
  36. [36]
  37. [37]
  38. [38]
  39. [39]
  40. [40]
    RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace
    ### Summary of RFC 4122 Sections on Textual Representation, String Formats, Canonical Form, Hyphens, Uppercase, urn:uuid:, and Validation
  41. [41]
    uuid_parse(3) - Linux manual page - man7.org
    The uuid_parse() function converts the UUID string given by in into the binary representation. The input UUID is a string of the form 1b4e28ba-2fa1-11d2-883f-b ...
  42. [42]
  43. [43]
  44. [44]
  45. [45]
    Documentation: 18: 9.14. UUID Functions - PostgreSQL
    Extracts the version from a UUID of the variant described by RFC 9562. For other variants, this function returns null. For example, for a UUID generated by ...<|control11|><|separator|>
  46. [46]
    uuid — UUID objects according to RFC 9562 — Python 3.14.0 ...
    Specify the function name to use to generate the uuid. By default uuid4() is used. Changed in version 3.14: Allow generating UUID versions 6, 7 and 8.
  47. [47]
    JSON parsing of empty strings as uuid.Nil · Issue #74 - GitHub
    Jan 28, 2021 · My concern here is that the uuid.Nil is actually a UUID while "" or JSON's nil implies there is no UUID at all. The UUID type has no way to express that.
  48. [48]
    UUID_VX component - Percona Server for MySQL
    This function generates a MAX UUID, which has all 128 bits set to one (FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF). This function result is the opposite of the NIL ...
  49. [49]
    Uuid in uuid - Rust - Docs.rs
    The nil UUID is a special form of UUID that is specified to have all 128 bits set to zero. §References. Nil UUID in RFC 9562. §Examples. Basic usage: let uuid = ...
  50. [50]
    uuid - NPM
    Sep 8, 2025 · [!NOTE] Version 8 (experimental) UUIDs are "for experimental or vendor-specific use cases". The RFC does not define a creation algorithm for them, ...
  51. [51]
    Research Results on SHA-1 Collisions | CSRC
    NIST deprecated the use of SHA-1 in 2011 and disallowed its use for digital signatures at the end of 2013, based on both the Wang, et. al, attack and the ...
  52. [52]
    AppSec Concerns: UUID generation - Coalfire
    Under ordinary conditions, the probability of having two generated UUIDs collide is very small. However, if UUIDs are generated improperly, the probability of a ...
  53. [53]
    Documentation: 18: F.49. uuid-ossp — a UUID generator - PostgreSQL
    The uuid-ossp module provides functions to generate universally unique identifiers (UUIDs) using one of several standard algorithms.
  54. [54]
    UUID (Java Platform SE 8 ) - Oracle Help Center
    For more information including algorithms used to create UUID s, see RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace, section 4.2 "Algorithms for ...<|control11|><|separator|>
  55. [55]
    5. GUID Partition Table (GPT) Disk Layout - UEFI Forum
    The value of Disk GUID is a GUID that uniquely identifies the entire GPT Header and all its associated storage. This value can be used to uniquely identify the ...
  56. [56]
    Chapter 31. Getting started with an ext4 file system | 8
    To create an ext4 file system: For a regular-partition device, an LVM volume, an MD volume, or a similar device, use the following command: mkfs.ext4 /dev/ ...
  57. [57]
    mkfs.xfs(8) - Linux manual page
    ### Summary: XFS UUID Generation and Use During mkfs
  58. [58]
    FILE_OBJECTID_INFORMATION (ntifs.h) - Windows drivers
    Feb 22, 2024 · Remarks · File object IDs are supported only on NTFS volumes. NTFS allows files to be opened by object ID as well as by file reference number.Missing: GUID | Show results with:GUID
  59. [59]
    mountvol | Microsoft Learn
    Feb 3, 2023 · The volume name uses the following syntax, where GUID is a globally unique identifier: \\?\volume\{GUID}\ . The brackets { } are required. /d ...Missing: documentation | Show results with:documentation
  60. [60]
    [PDF] Apple File System Reference
    Jun 22, 2020 · Keybags are encrypted using the UUID of the container or volume, which makes it possible to quickly and securely destroy the contents of an ...
  61. [61]
    Managing storage devices | Red Hat Enterprise Linux | 9
    ... benefits of PNAs is their resilience to changes in hardware configurations ... UUIDs are primarily used to uniquely identify file systems on storage ...
  62. [62]
    Documentation: 18: 8.12. UUID Type - PostgreSQL
    RFC 9562 defines 8 different UUID versions. Each version has specific requirements for generating new UUID values, and each version provides distinct ...
  63. [63]
    The Benefits of Using UUIDs for Unique Identification - TiDB
    Jul 17, 2024 · UUID Version 4: Best for applications requiring high degrees of randomness and uniqueness without relying on timestamps or hardware addresses.
  64. [64]
    UUID and timeuuid types | CQL for Cassandra 3.0 - DataStax Docs
    The UUID (universally unique id) comparator type is used to avoid collisions in column names. Alternatively, you can use the timeuuid.Missing: usage | Show results with:usage
  65. [65]
    [PDF] July 2002 Common Object Request Broker Architecture (CORBA ...
    IIOP 13-17, 13-29, 15-2, 15-51, 17-17, 17-32, 17-33 defined 15-51 · host ... Getting Initial CORBA Object Reference s19-26 · ITypeFactory Interface 19-29.
  66. [66]
    [MS-DCOM]: Glossary - Microsoft Learn
    Oct 12, 2022 · interface identifier (IID): A GUID that identifies an interface. interface pointer identifier (IPID): A 128-bit number that uniquely identifies ...Missing: MSDN | Show results with:MSDN
  67. [67]
    Best practices for RESTful web API design - Azure - Microsoft Learn
    May 8, 2025 · This article describes best practices for designing RESTful web APIs. It also covers common design patterns and considerations for building web APIs that are ...
  68. [68]
    Language Guide (proto 3) | Protocol Buffers Documentation
    This guide describes how to use the protocol buffer language to structure your protocol buffer data, including .proto file syntax and how to generate data ...Missing: UUID | Show results with:UUID
  69. [69]
    Content Identifiers (CIDs) - IPFS Docs
    Oct 30, 2025 · A CID is a label used to point to material in IPFS, based on the content's cryptographic hash, containing the hash and codec of the data.Missing: UUID | Show results with:UUID
  70. [70]
    Activate Licenses for Juniper Software Products with UUID
    License keys for certain Juniper software products are associated with the Universal Unique ID (UUID) of the compute resource that the product license is to be ...
  71. [71]
    Universally Unique IDentifiers (UUID) - IETF
    Nov 6, 2023 · UUID Version 2. UUID version 2 is known as DCE Security UUIDs [C309] ... "DCE 1.1: Authentication and Security Services", Open Group CAE ...
  72. [72]
    Tracing API - OpenTelemetry
    The Tracing API consists of TracerProvider, which provides access to Tracers, Tracers, which create Spans, and Spans, which are used to trace operations.Missing: UUID | Show results with:UUID
  73. [73]
    Object Names and IDs - Kubernetes
    Oct 2, 2025 · Kubernetes UIDs are universally unique identifiers (also known as UUIDs). UUIDs are standardized as ISO/IEC 9834-8 and as ITU-T X.667. What's ...