<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/should-we-replace-guids--kmucam4pv" -->

---
title: Should we replace GUIDs? | daily.dev
description: GUIDs (version 4) are random but not time-ordered, which creates problems for sorting and indexing. .NET 9 introduces GUID version 7, a time-ordered UUID using...
canonical: https://daily.dev/posts/should-we-replace-guids--kmucam4pv
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Should we replace GUIDs? | daily.dev
og:description: GUIDs (version 4) are random but not time-ordered, which creates problems for sorting and indexing. .NET 9 introduces GUID version 7, a time-ordered UUID using...
og:url: https://daily.dev/posts/should-we-replace-guids--kmucam4pv
og:image: https://api.daily.dev/og/posts/KMUCam4pV.png
og:image:alt: Should we replace GUIDs?
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Should we replace GUIDs?

**[NikolaTech](https://daily.dev/sources/nikolatech)** · 3 min read · 0 upvotes · 0 comments

## Summary

GUIDs (version 4) are random but not time-ordered, which creates problems for sorting and indexing. .NET 9 introduces GUID version 7, a time-ordered UUID using a timestamp plus random bits, created via Guid.CreateVersion7(). An alternative, the third-party ULID library (Cysharp/Ulid, 5M+ downloads), already provides sortable, human-readable identifiers and can convert to GUID format. Benchmarks show ULIDs generate faster than both GUID v4 and the new GUID v7, with GUID v7 actually being the slowest of the three in the author's tests.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://nikolatech.net/blogs/guids-vs-ulids>

## Questions this post answers

### What is GUID version 7 and how do I create one in .NET 9?

GUID version 7 is a time-ordered UUID coming with .NET 9, generated using a 48-bit timestamp plus random bits, making GUIDs sortable unlike the random version 4 GUIDs used previously. It is created with Guid.CreateVersion7(), which also has an overload accepting a DateTimeOffset for custom timestamps.

_Developers tracking new .NET 9 identifier APIs can follow upgrade-relevant changes like this on daily.dev._

### Are ULIDs faster than GUIDs in .NET?

Yes, benchmarks show ULIDs generated via the Cysharp/Ulid library (NewUlid) took about 29.9 ns, compared to 45.01 ns for GUID version 4 and 82.69 ns for the new GUID version 7, making ULIDs over twice as fast as GUID v7. Converting a ULID to a GUID format added minimal overhead at 31.12 ns.

_Anyone choosing between identifier formats for performance-sensitive systems can track benchmarks like this via daily.dev._

### What is a ULID and how does it differ from a GUID?

A ULID (Universally Unique Lexicographically Sortable Identifier) is a 128-bit identifier like a GUID, but it is sortable and more human-readable because it uses a different encoding instead of hexadecimal. It can be generated with Ulid.NewUlid() in .NET and converted to standard GUID format using the .ToGuid() method.

_Teams deciding on identifier strategies for distributed systems can keep up with comparisons like this on daily.dev._

## Similar posts on daily.dev

- [Guid.CreateVersion7\(\) is NOT a sequential guid for SQL Server](https://daily.dev/posts/guid-createversion7-is-not-a-sequential-guid-for-sql-server-rlojn9pdl) · The Art of Simplicity · 7 upvotes · 1 comments
- [UUID v4 vs v7, and what's inside a UUID](https://daily.dev/posts/uuid-v4-vs-v7-and-what-s-inside-a-uuid-buf3wbyzk) · Flavio Copes · 2 upvotes · 0 comments
- [Time-based Universally Unique Identifiers \(UUIDs v7\)](https://daily.dev/posts/time-based-universally-unique-identifiers-uuids-v7--wdmbzpve0) · Marius Bancila · 2 upvotes · 0 comments
- [UUID v7 vs. ULID: Which Sortable ID Should You Choose?](https://daily.dev/posts/uuid-v7-vs-ulid-which-sortable-id-should-you-choose--xlgz26hfk) · Ruby Flow · 0 upvotes · 0 comments
- [UUIDs, ULIDs and Sqids: A Practical Deep Dive](https://daily.dev/posts/uuids-ulids-and-sqids-a-practical-deep-dive-79nwblyzu) · W endell Adriel · 16 upvotes · 0 comments

---

Tags: [#performance](https://daily.dev/tags/performance), [#.net](https://daily.dev/tags/.net), [#c#](https://daily.dev/tags/c#)

[View this post on daily.dev](https://daily.dev/posts/should-we-replace-guids--kmucam4pv)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Should we replace GUIDs?","url":"https://daily.dev/posts/should-we-replace-guids--kmucam4pv","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/should-we-replace-guids--kmucam4pv"},"datePublished":"2026-10-04T13:05:48.387Z","dateModified":"2026-10-04T13:13:12.375Z","description":"GUIDs (version 4) are random but not time-ordered, which creates problems for sorting and indexing. .NET 9 introduces GUID version 7, a time-ordered UUID using...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2c2febd259f20ec29f5d2ccb64e22c06?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2c2febd259f20ec29f5d2ccb64e22c06?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"NikolaTech","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"NikolaTech","logo":"https://media.daily.dev/image/upload/s--1h2fO6FL--/f_auto,q_auto/v1791119050/logos/nikolatech?_a=BAMAMicg0","url":"https://daily.dev/sources/nikolatech"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/should-we-replace-guids--kmucam4pv","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"performance,.net,c#","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"NikolaTech","item":"https://daily.dev/sources/nikolatech"},{"@type":"ListItem","position":3,"name":"Should we replace GUIDs?"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/should-we-replace-guids--kmucam4pv#faq","mainEntity":[{"@type":"Question","name":"What is GUID version 7 and how do I create one in .NET 9?","acceptedAnswer":{"@type":"Answer","text":"GUID version 7 is a time-ordered UUID coming with .NET 9, generated using a 48-bit timestamp plus random bits, making GUIDs sortable unlike the random version 4 GUIDs used previously. It is created with Guid.CreateVersion7(), which also has an overload accepting a DateTimeOffset for custom timestamps. Developers tracking new .NET 9 identifier APIs can follow upgrade-relevant changes like this on daily.dev."}},{"@type":"Question","name":"Are ULIDs faster than GUIDs in .NET?","acceptedAnswer":{"@type":"Answer","text":"Yes, benchmarks show ULIDs generated via the Cysharp/Ulid library (NewUlid) took about 29.9 ns, compared to 45.01 ns for GUID version 4 and 82.69 ns for the new GUID version 7, making ULIDs over twice as fast as GUID v7. Converting a ULID to a GUID format added minimal overhead at 31.12 ns. Anyone choosing between identifier formats for performance-sensitive systems can track benchmarks like this via daily.dev."}},{"@type":"Question","name":"What is a ULID and how does it differ from a GUID?","acceptedAnswer":{"@type":"Answer","text":"A ULID (Universally Unique Lexicographically Sortable Identifier) is a 128-bit identifier like a GUID, but it is sortable and more human-readable because it uses a different encoding instead of hexadecimal. It can be generated with Ulid.NewUlid() in .NET and converted to standard GUID format using the .ToGuid() method. Teams deciding on identifier strategies for distributed systems can keep up with comparisons like this on daily.dev."}}]}
```

