Was ist eine UUID? Aufbau, Versionen und UUID vs. GUID

Eine UUID (Universally Unique Identifier) ist eine 128-Bit-Zahl, mit der Daten gekennzeichnet werden, ohne dass ein zentraler Server die nächste freie ID vergeben muss. Meist wird sie mit 36 Zeichen geschrieben: 32 Hexadezimalziffern in fünf Gruppen nach dem Muster 8-4-4-4-12, etwa f47ac10b-58cc-4372-a567-0e02b2c3d479. Das Format ist in RFC 9562 (Mai 2024) festgelegt, der RFC 4122 abgelöst hat.

Kostenlos ausprobieren: UUID-Generator Kostenlos und ohne Anmeldung nutzbar.

Was ist eine UUID also im Alltag wert? Jedes System kann sie selbstständig und offline erzeugen und dabei praktisch sicher sein, dass niemand sonst jemals denselben Wert erzeugt. Deshalb sind UUIDs als Datenbankschlüssel, Dateinamen, Request-IDs und Nachrichten-IDs beliebt. Dieser Leitfaden erklärt den Aufbau, die Versionen, die tatsächliche Kollisionswahrscheinlichkeit, UUID vs. GUID und die Wahl zwischen v4 und v7. Zum Ausprobieren öffnen Sie den kostenlosen UUID-Generator in einem zweiten Tab.

Was ist eine UUID genau? Aufbau im Format 8-4-4-4-12

Die 128 Bit entsprechen 16 Bytes. Jedes Byte sind zwei Hexziffern, also 32 Ziffern, und vier Bindestriche ergeben 36 Zeichen. Zwei Stellen haben eine feste Bedeutung:

f47ac10b-58cc-4372-a567-0e02b2c3d479
              ^    ^
              |    +-- 17. Ziffer "a": Variante (8, 9, a oder b = RFC 9562)
              +------- 13. Ziffer "4": Version 4 (zufällig)

Weil diese 6 Bits festliegen, hat eine zufällige UUID der Version 4 genau 128 − 6 = 122 Zufallsbits. Die Hexbuchstaben dürfen groß, klein oder gemischt geschrieben werden, F47AC10B-… und f47ac10b-… sind also dieselbe UUID; Kleinschreibung ist die übliche Konvention.

UUID-Versionen: v1 bis v8, Nil und Max

RFC 9562 definiert acht Versionen und zwei Sonderwerte:

Version Aufbau Typischer Einsatz
v1 60-Bit-Zeitstempel (100-ns-Schritte seit 1582) + Clock Sequence + Knoten-ID, traditionell die MAC-Adresse Altsysteme
v2 DCE Security, im RFC nicht näher beschrieben Kaum verwendet
v3 MD5-Hash aus Namespace-UUID und Name Reproduzierbare IDs (besser v5)
v4 122 Zufallsbits Standard für allgemeine Zwecke
v5 SHA-1-Hash aus Namespace-UUID und Name Reproduzierbare IDs aus Namen
v6 Felder wie v1, so umsortiert, dass der Zeitstempel sortierbar ist Umstieg von v1
v7 48-Bit-Unix-Zeitstempel in Millisekunden + Zufallsbits Datenbankschlüssel, sortierbare IDs
v8 Eigenes Layout; nur Version und Variante sind fest Herstellerspezifische Formate
Nil 00000000-0000-0000-0000-000000000000 Platzhalter für „kein Wert“
Max ffffffff-ffff-ffff-ffff-ffffffffffff Sentinel oder Obergrenze

Namensbasierte Versionen sind deterministisch. Der DNS-Namespace mit dem Namen example.com ergibt immer die v5-UUID cfbff0d1-9375-5685-968c-48ce8b15ae17, auf jedem Rechner und in jeder Programmiersprache. Sie eignen sich, wenn dieselbe Eingabe immer zur selben ID führen muss.

Eine UUID der Version 7 stellt die Zeit an den Anfang. Dieses Beispiel entstand am 24.09.2026 um 12:00:00 UTC, also 1.790.251.200.000 Millisekunden nach der Unix-Epoche, hexadezimal 0x01a0d3496e00:

01a0d349-6e00-7c3f-9d21-4b6e8a1f0c57
^^^^^^^^^^^^^ ^    ^
|             |    +-- Variantenziffer "9"
|             +------- Version 7
+--------------------- 48-Bit-Zeitstempel in ms

Die restlichen 74 Bits sind zufällig (oder je nach Bibliothek teilweise ein Zähler).

Sind UUIDs eindeutig? Kollisionswahrscheinlichkeit bei v4

UUIDs sind nicht garantiert eindeutig, sondern mit überwältigender Wahrscheinlichkeit. Mit 122 Zufallsbits gibt es 2^122 ≈ 5,3 × 10^36 mögliche v4-Werte. Die Geburtstagsnäherung liefert die Anzahl n an UUIDs, ab der die Chance, dass mindestens zwei gleich sind, bei 50 % liegt:

n ≈ √(2 · ln 2 · 2^122) ≈ 2,71 × 10^18

Das sind 2,71 Trillionen UUIDs. Bei einer Milliarde pro Sekunde bräuchten Sie dafür rund 86 Jahre. Bei realistischen Mengen ist das Risiko vernachlässigbar:

Erzeugte v4-UUIDs Wahrscheinlichkeit einer Kollision
1 Milliarde (10^9) etwa 9,4 × 10^-20
1 Billion (10^12) etwa 9,4 × 10^-14
103 Billionen (1,03 × 10^14) etwa 1 zu 1 Milliarde
2,71 × 10^18 etwa 50 %

Diese Werte setzen einen guten Zufallsgenerator voraus. In der Praxis entstehen Kollisionen durch Fehler: einen schlecht initialisierten Generator, geklonte virtuelle Maschinen mit gleichem Zustand oder Code, der eine ID kopiert statt eine neue zu erzeugen. Ein Unique-Constraint in der Datenbank lohnt sich deshalb trotzdem.

UUID vs. GUID: Was ist der Unterschied?

Praktisch keiner. GUID (Globally Unique Identifier) ist Microsofts Name für denselben 128-Bit-Wert, verwendet in Windows, COM, .NET und SQL Server. Guid.NewGuid() in .NET erzeugt zum Beispiel eine ganz normale UUID der Version 4. Die Unterschiede betreffen Darstellung und Speicherung:

Textform:        f47ac10b-58cc-4372-a567-0e02b2c3d479
RFC-Reihenfolge: f4 7a c1 0b | 58 cc | 43 72 | a5 67 0e 02 b2 c3 d4 79
Microsoft:       0b c1 7a f4 | cc 58 | 72 43 | a5 67 0e 02 b2 c3 d4 79

Der Text ist identisch, nur die 16 Rohbytes unterscheiden sich. Kopieren Sie binäre GUIDs zwischen einem Microsoft-System und einem System, das die RFC-Reihenfolge erwartet, kommt ein verdrehter Wert heraus. Wandeln Sie über die Textform um oder verwenden Sie ab .NET 8 ToByteArray(bigEndian: true). Microsoft beschreibt die umgekehrten Gruppen in der Referenz zu Guid.ToByteArray.

„UUID vs. GUID“ ist also eine Frage der Benennung, keine Entscheidung, die Sie treffen müssen.

UUID v4 vs. v7 als Primärschlüssel

Beide sind 128-Bit-UUIDs, verhalten sich in einem Index aber sehr unterschiedlich.

Mit v7 können Sie außerdem nach ID sortieren, um die Erstellungsreihenfolge zu erhalten, und die Erstellungszeit aus der ID ablesen. Genau das ist auch der Nachteil: Wer eine v7-ID sieht, erfährt auf die Millisekunde genau, wann der Datensatz angelegt wurde. Nehmen Sie v4 für öffentliche Kennungen, deren Zeitpunkt privat bleiben soll, und v7 für interne Schlüssel in großen Tabellen mit vielen Schreibzugriffen.

UUIDs effizient speichern

Speichern Sie die 16 Bytes, nicht den 36-stelligen Text. Eine Textspalte braucht mindestens 36 Bytes pro Wert, also mehr als doppelt so viel, und jeder Index, der den Schlüssel enthält, wächst mit.

Wandeln Sie nur an den Rändern Ihres Systems in Text um, etwa in APIs und Logs.

UUID im Code erzeugen

Die meisten Sprachen bringen einen Generator mit:

import uuid
uuid.uuid4()                                   # random v4
uuid.uuid7()                                   # v7, Python 3.14+
uuid.uuid5(uuid.NAMESPACE_DNS, "example.com")  # cfbff0d1-9375-5685-968c-48ce8b15ae17
crypto.randomUUID(); // v4, in browsers (HTTPS pages) and Node.js
SELECT gen_random_uuid();  -- v4, built in since PostgreSQL 13
SELECT uuidv7();           -- v7, PostgreSQL 18+
Guid.NewGuid();         // v4
Guid.CreateVersion7();  // v7, .NET 9+

crypto.randomUUID() ist auf MDN dokumentiert. Im Browser funktioniert es nur auf sicheren Seiten (HTTPS).

UUID mit einer Regex prüfen

Dieses Muster akzeptiert die kanonische Form der Versionen 1–8 mit der Standardvariante (Groß-/Kleinschreibung ignorieren):

^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

[1-8] prüft die Versionsziffer, [89ab] die Variante. Wenn Sie auch die Nil- und Max-UUID, geschweifte Klammern oder das Präfix urn:uuid: zulassen möchten, ergänzen Sie eigene Prüfungen.

UUIDs sind keine Geheimnisse

Eine UUID kennzeichnet etwas, sie schützt es nicht. RFC 9562 sagt, dass Implementierungen nicht annehmen sollen, UUIDs seien schwer zu erraten, und sie nicht als Sicherheitsmerkmal verwenden dürfen. v1 verrät die Erstellungszeit und traditionell die MAC-Adresse des erzeugenden Rechners, v7 die Erstellungszeit. Selbst eine v4 aus einem sicheren Generator ist nicht als Token zum Zurücksetzen von Passwörtern oder als API-Schlüssel gedacht. Verwenden Sie dafür ein eigenes Zufallstoken, zum Beispiel aus dem Token-Generator, und prüfen Sie trotzdem bei jeder Anfrage die Berechtigungen.

Alternativen zur UUID

ULID ist eine verbreitete Alternative mit ähnlichen Zielen: 128 Bit, ein 48-Bit-Zeitstempel in Millisekunden und 80 Zufallsbits, geschrieben als 26 Zeichen in Crockford-Base32, sodass die ID auch als Text sortierbar ist. Wenn Sie dieses Format brauchen, erzeugt und dekodiert der ULID-Generator ULIDs und wandelt sie in UUIDs um. Für neue Projekte bietet UUID v7 dieselbe zeitliche Sortierung im Standardformat, das Datenbanken nativ verstehen.

UUIDs online erzeugen und prüfen

Der kostenlose UUID-Generator läuft vollständig im Browser. Er erzeugt UUIDs der Versionen v1, v3, v4, v5 und v7 sowie die Nil- und Max-Werte, bis zu 500 auf einmal. Sie können Kleinbuchstaben, Großbuchstaben oder geschweifte Klammern wählen, die Bindestriche entfernen und die Liste durch Zeilenumbrüche, Kommas, Leerzeichen oder als JSON-Array trennen und sie dann kopieren oder als .txt oder .json herunterladen. Für v3 und v5 wählen Sie den DNS-, URL-, OID- oder X.500-Namespace oder fügen einen eigenen ein.

Der integrierte Validator akzeptiert kanonische Eingaben, Klammern, urn:uuid: und Eingaben ohne Bindestriche und zeigt Version, Variante und kanonische Form. Er dekodiert den Zeitstempel von v1- und v7-UUIDs sowie Clock Sequence und Knoten von v1. Einige Grenzen: v6 und v8 werden nicht erzeugt, v1 verwendet einen zufälligen Knoten statt Ihrer MAC-Adresse, und v7-IDs aus derselben Millisekunde sind nicht garantiert in Erstellungsreihenfolge sortiert, weil die Bits nach dem Zeitstempel zufällig sind und kein Zähler.

FAQ

Ist eine UUID dasselbe wie eine GUID?

Ja. GUID ist Microsofts Name für eine UUID. Wert und Textformat sind gleich; Microsoft-Werkzeuge zeigen GUIDs oft in Großbuchstaben mit geschweiften Klammern, und manche Microsoft-APIs speichern die ersten drei Felder binär in Little-Endian-Reihenfolge.

Können zwei UUIDs jemals gleich sein?

Theoretisch ja, praktisch fast nie. Bei v4 bräuchten Sie etwa 2,71 × 10^18 UUIDs für eine 50-prozentige Chance auf ein Duplikat. Echte Duplikate entstehen meist durch Softwarefehler oder einen defekten Zufallsgenerator, halten Sie also einen Unique-Constraint auf Schlüsselspalten.

Soll ich UUID v4 oder v7 verwenden?

Nehmen Sie v7 für Primärschlüssel in Tabellen mit vielen Einfügungen, weil zeitlich geordnete IDs Indizes kompakt halten und nach Erstellungszeit sortieren. Nehmen Sie v4, wenn die ID öffentlich ist und nichts über den Erstellungszeitpunkt verraten soll.

Wie lang ist eine UUID?

Eine UUID hat 128 Bit, also 16 Bytes. Die Standard-Textform hat 36 Zeichen: 32 Hexziffern und 4 Bindestriche. Ohne Bindestriche sind es 32 Zeichen, mit geschweiften Klammern 38.

Sind UUIDs in URLs sicher?

Man darf sie zeigen, aber sie sind keine Zugriffskontrolle. Eine zufällige v4 ist schwer zu erraten, kann aber über Logs, den Browserverlauf oder Referrer-Header nach außen gelangen, und v1 und v7 verraten ihren Erstellungszeitpunkt. Prüfen Sie immer, ob der Nutzer auf die Ressource zugreifen darf.

Kostenlos ausprobieren: UUID-Generator Kostenlos und ohne Anmeldung nutzbar.