{"id":4776,"date":"2025-10-24T11:57:14","date_gmt":"2025-10-24T09:57:14","guid":{"rendered":"https:\/\/mariusbancila.ro\/blog\/?p=4776"},"modified":"2025-10-24T11:57:17","modified_gmt":"2025-10-24T09:57:17","slug":"time-based-universally-unique-identifiers-uuids-v7","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/","title":{"rendered":"Time-based Universally Unique Identifiers (UUIDs v7)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Universally Unique Identifiers (UUID for short) are 128-bit numbers with a high degree of unicity so that the possibility of collision is extremely low. They are used for various purposes such as identifying resources, correlation IDs in logging and tracing, primary keys in databases, and more. UUIDs are known as GUIDs (Globally Unique Identifiers) on Windows systems. Several version have been defined over time, version 7 being the latest of them, designed to solve some problems present in the other version.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is a UUID<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A UUID is a 128-bit number that is typically formatted as 36 character hexadecimal string with hyphens. It&#8217;s defined by the <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc4122\" target=\"_blank\" rel=\"noopener\" title=\"RFC 4122\">RFC 4122<\/a> standard (which overseeded the now obsolete <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9562\" target=\"_blank\" rel=\"noopener\" title=\"RFC 9562\">RFC 9562<\/a>). A formatted UUID looks like this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">D5501097-8306-4009-8532-715DB2C65607<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The general format is<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">xxxxxxxx-xxxx-Vxxx-Rxxxx-xxxxxxxxxxxx<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this representation<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>x<\/code> is a hexadecimal character<\/li><li><code>V<\/code> is the version<\/li><li><code>R<\/code> is the variant (<code>10xx<\/code> for RFC 4122 compliant UUIDs)<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">UUID variants<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There are multiple variants for UUIDs. He is a table with a short description:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Variant<\/th><th>Method<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>Timestamp + MAC address<\/td><td>Reveals device information (MAC address)<\/td><\/tr><tr><td>3<\/td><td>Name-based (MD5 hash)<\/td><td>Generated by hashing a namespace + name pair, using MD5 which is cryptographically broken.<\/td><\/tr><tr><td>4<\/td><td>Random<\/td><td>122 random bits<\/td><\/tr><tr><td>5<\/td><td>Name-based (SHA-1 hash)<\/td><td>Generated by hashing a namespace + name pair, using SHA-1 is considered obsolete<\/td><\/tr><tr><td>7<\/td><td>Time-based + random<\/td><td>Optimized for use in databases<\/td><\/tr><tr><td>8<\/td><td>Custom<\/td><td>Experimental, reserved for application-specific formats<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The older versions of UUID had different problems:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>versions 3 and 5 rely on cryptographically broken or obsolete hashes, and shouldn&#8217;t be used where uniqueness or secrecy depend of cryptographical strength<\/li><li>version 1 embeds the MAC address of the device on which it was created as well as the timestamp when it was created which means the location and time of creating can be tracked; moreover, UUIDs may collide because VM or contains may share the same MAC address<\/li><li>version 4 are purely random, which means they are completely out of order, which makes them inappropriate for indexed database columns; however, they are very good for cases where you need simple unique IDs without carrying about ordering or readability<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Enter version 7<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The UUID v7 was designed to provide better performance when using UUIDs in databases (especially for primary keys). It consists of two main parts:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>the most significant 48 bits are the Unix timestamp of the moment when it was created, with millisecond resolution<\/li><li>the rest of the bits (except the 4 bit for version and 2 for the variant) are completely random (just like for version 4)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This means this UUIDs are ordered chronologically while still retaining a high degree of uniqueness, which makes them more index-friendly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is, for instance, <a href=\"https:\/\/dev.to\/umangsinha12\/postgresql-uuid-performance-benchmarking-random-v4-and-time-based-v7-uuids-n9b\" target=\"_blank\" rel=\"noopener\" title=\"\">an article<\/a> that attempts to answer the question &#8220;<em>Is UUIDv7 actually better than UUIDv4 in PostgreSQL?<\/em>&#8220;. The conclusion, reproduced below, is that both insert times and index size are significantly better:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2025\/10\/uuidv7postgressperf.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"291\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2025\/10\/uuidv7postgressperf-700x291.jpg\" alt=\"\" class=\"wp-image-4779\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2025\/10\/uuidv7postgressperf-700x291.jpg 700w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2025\/10\/uuidv7postgressperf-300x125.jpg 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2025\/10\/uuidv7postgressperf-768x320.jpg 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2025\/10\/uuidv7postgressperf.jpg 800w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><figcaption>Results for benchmarking UUID v4 and v7 for PostgresSQL.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Generating UUIDs v7<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Windows API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There is no support in the native API for creating v7 UUIDs. <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/rpcdce\/nf-rpcdce-uuidcreate\" target=\"_blank\" rel=\"noopener\" title=\"\">UuidCreate()<\/a>, as well as <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/combaseapi\/nf-combaseapi-cocreateguid\" target=\"_blank\" rel=\"noopener\" title=\"\">CoCreateGui()<\/a> that is basically just a wrapper over <code>UuidCreate<\/code>, still generate only v4 UUIDs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Linux<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s the same situation, the <code>uuid_generate()<\/code> API (from <code>&lt;uuid\/uuid.h><\/code>) only generates v4 (although <code>libuuid<\/code> also supports creating v1 UUIDs).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C++<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There is no standard library function for creating UUIDs, but we can write such an implementation, that works on all platforms.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using uuid_t = std::array&lt;uint8_t, 16>;\n\nuuid_t generate_uuidv7()\n{\n   uuid_t bytes{};\n\n   \/\/ get current Unix timestamp in milliseconds\n   auto now = std::chrono::system_clock::now();\n   uint64_t ms_since_epoch =\n      std::chrono::duration_cast&lt;std::chrono::milliseconds>(now.time_since_epoch()).count();\n\n   \/\/ fill with random bytes\n   std::random_device rd;\n   std::mt19937_64 gen(rd());\n   std::uniform_int_distribution&lt;uint64_t> dist;\n   uint64_t rand_hi = dist(gen);\n   uint64_t rand_lo = dist(gen);\n\n   for (int i = 0; i &lt; 8; ++i) bytes[i] = (rand_hi >> ((7 - i) * 8)) &amp; 0xFF;\n   for (int i = 0; i &lt; 8; ++i) bytes[8 + i] = (rand_lo >> ((7 - i) * 8)) &amp; 0xFF;\n\n   \/\/ overwrite the first 6 bytes with timestamp (big-endian)\n   bytes[0] = (ms_since_epoch >> 40) &amp; 0xFF;\n   bytes[1] = (ms_since_epoch >> 32) &amp; 0xFF;\n   bytes[2] = (ms_since_epoch >> 24) &amp; 0xFF;\n   bytes[3] = (ms_since_epoch >> 16) &amp; 0xFF;\n   bytes[4] = (ms_since_epoch >> 8) &amp; 0xFF;\n   bytes[5] = (ms_since_epoch) &amp; 0xFF;\n\n   \/\/ set version (UUIDv7 = 0b0111)\n   bytes[6] = (bytes[6] &amp; 0x0F) | 0x70;\n\n   \/\/ set variant (RFC 4122)\n   bytes[8] = (bytes[8] &amp; 0x3F) | 0x80;\n\n   return bytes;\n}\n\nstd::string to_string(const uuid_t&amp; uuid)\n{\n   return std::format(\n      \"{:02x}{:02x}{:02x}{:02x}-\"\n      \"{:02x}{:02x}-\"\n      \"{:02x}{:02x}-\"\n      \"{:02x}{:02x}-\"\n      \"{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}\",\n      uuid[0], uuid[1], uuid[2], uuid[3],\n      uuid[4], uuid[5],\n      uuid[6], uuid[7],\n      uuid[8], uuid[9],\n      uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]\n   );\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This could be used as follows:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int main()\n{\n   for (int i = 0; i &lt; 5; ++i)\n   {\n      auto uuid = generate_uuidv7();\n      std::println(\"{}\", to_string(uuid));\n   }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">.NET<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Starting with .NET 9, you can use the <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/api\/system.guid.createversion7?view=net-9.0\" target=\"_blank\" rel=\"noopener\" title=\"\">Guid.CreateVersion7()<\/a> method, as shown below:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var guid = Guid.CreateVersion7();\nConsole.WriteLine(guid);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This function has an overload and you can also pass a <code>DateTimeOffset<\/code> to it:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var guid = Guid.CreateVersion7(TimeProvider.System.GetUtcNow());<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For previous versions of .NET, you&#8217;d have to rely on 3rd party NuGet package.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Read more<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can read more about UUIDs v7 on this articles:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/buildkite.com\/resources\/blog\/goodbye-integers-hello-uuids\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Goodbye integers. Hello UUIDv7!<\/a><\/li><li><a href=\"https:\/\/corner.buka.sh\/why-uuidv7-is-revolutionizing-time-ordered-identifiers-for-modern-systems\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Why UUIDv7 is Revolutionizing Time-Ordered Identifiers for Modern Systems<\/a><\/li><li><a href=\"https:\/\/medium.com\/@anderson.buenogod\/uuid-v7-vs-uuid-v8-choosing-the-ideal-identifier-for-scalable-distributed-system-fa8efc0550f7\" target=\"_blank\" rel=\"noopener\" title=\"\">UUID v7 vs UUID v8: Choosing the Ideal Identifier for Scalable Distributed System<\/a><\/li><li><a href=\"https:\/\/dev.to\/umangsinha12\/postgresql-uuid-performance-benchmarking-random-v4-and-time-based-v7-uuids-n9b\" target=\"_blank\" rel=\"noopener\" title=\"\">PostgreSQL UUID Performance: Benchmarking Random (v4) and Time-based (v7) UUIDs<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Universally Unique Identifiers (UUID for short) are 128-bit numbers with a high degree of unicity so that the possibility of collision is extremely low. They are used for various purposes such as identifying resources, correlation IDs in logging and tracing, primary keys in databases, and more. UUIDs are known as GUIDs (Globally Unique Identifiers) on &#8230; <a title=\"Time-based Universally Unique Identifiers (UUIDs v7)\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/\" aria-label=\"Read more about Time-based Universally Unique Identifiers (UUIDs v7)\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[13,7,4],"tags":[454,451,651,537,650],"class_list":["post-4776","post","type-post","status-publish","format-standard","hentry","category-net","category-c","category-software","tag-net","tag-c","tag-csharp","tag-uuid","tag-uuid7"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\".net,c++,csharp,uuid,uuid7\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Time-based Universally Unique Identifiers (UUIDs v7)\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-10-24T09:57:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-10-24T09:57:17+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Time-based Universally Unique Identifiers (UUIDs v7)\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#article\",\"name\":\"Time-based Universally Unique Identifiers (UUIDs v7)\",\"headline\":\"Time-based Universally Unique Identifiers (UUIDs v7)\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/uuidv7postgressperf.jpg\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#articleImage\",\"width\":800,\"height\":333},\"datePublished\":\"2025-10-24T11:57:14+02:00\",\"dateModified\":\"2025-10-24T11:57:17+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#webpage\"},\"articleSection\":\".NET, C++, Software, .NET, C++, csharp, uuid, uuid7\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"position\":4,\"name\":\"C++\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#listItem\",\"name\":\"Time-based Universally Unique Identifiers (UUIDs v7)\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#listItem\",\"position\":5,\"name\":\"Time-based Universally Unique Identifiers (UUIDs v7)\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/\",\"name\":\"Time-based Universally Unique Identifiers (UUIDs v7)\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2025\\\/10\\\/24\\\/time-based-universally-unique-identifiers-uuids-v7\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2025-10-24T11:57:14+02:00\",\"dateModified\":\"2025-10-24T11:57:17+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Time-based Universally Unique Identifiers (UUIDs v7)","description":"","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/","robots":"max-image-preview:large","keywords":".net,c++,csharp,uuid,uuid7","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#article","name":"Time-based Universally Unique Identifiers (UUIDs v7)","headline":"Time-based Universally Unique Identifiers (UUIDs v7)","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2025\/10\/uuidv7postgressperf.jpg","@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#articleImage","width":800,"height":333},"datePublished":"2025-10-24T11:57:14+02:00","dateModified":"2025-10-24T11:57:17+02:00","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#webpage"},"articleSection":".NET, C++, Software, .NET, C++, csharp, uuid, uuid7"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","position":4,"name":"C++","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#listItem","name":"Time-based Universally Unique Identifiers (UUIDs v7)"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#listItem","position":5,"name":"Time-based Universally Unique Identifiers (UUIDs v7)","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/","name":"Time-based Universally Unique Identifiers (UUIDs v7)","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2025-10-24T11:57:14+02:00","dateModified":"2025-10-24T11:57:17+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"Time-based Universally Unique Identifiers (UUIDs v7)","og:url":"https:\/\/mariusbancila.ro\/blog\/2025\/10\/24\/time-based-universally-unique-identifiers-uuids-v7\/","article:published_time":"2025-10-24T09:57:14+00:00","article:modified_time":"2025-10-24T09:57:17+00:00","twitter:card":"summary","twitter:title":"Time-based Universally Unique Identifiers (UUIDs v7)"},"aioseo_meta_data":{"post_id":"4776","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2025-10-19 18:04:31","updated":"2025-12-12 07:59:22","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":1,"uagb_excerpt":"Universally Unique Identifiers (UUID for short) are 128-bit numbers with a high degree of unicity so that the possibility of collision is extremely low. They are used for various purposes such as identifying resources, correlation IDs in logging and tracing, primary keys in databases, and more. UUIDs are known as GUIDs (Globally Unique Identifiers) on&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/\" class=\"advgb-post-tax-term\">.NET<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/\" class=\"advgb-post-tax-term\">Software<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">.NET<\/span>","<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">Software<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/\" class=\"advgb-post-tax-term\">.NET<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/\" class=\"advgb-post-tax-term\">csharp<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/\" class=\"advgb-post-tax-term\">uuid<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/\" class=\"advgb-post-tax-term\">uuid7<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">.NET<\/span>","<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">csharp<\/span>","<span class=\"advgb-post-tax-term\">uuid<\/span>","<span class=\"advgb-post-tax-term\">uuid7<\/span>"]}},"comment_count":"1","relative_dates":{"created":"Posted 11 months ago","modified":"Updated 11 months ago"},"absolute_dates":{"created":"Posted on October 24, 2025","modified":"Updated on October 24, 2025"},"absolute_dates_time":{"created":"Posted on October 24, 2025 11:57 am","modified":"Updated on October 24, 2025 11:57 am"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-1f2","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=4776"}],"version-history":[{"count":8,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4776\/revisions"}],"predecessor-version":[{"id":4785,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4776\/revisions\/4785"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=4776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=4776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=4776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}