UUID-Versionen
Eine UUID ist eine 128-Bit-Kennung, geschrieben als 32 Hex-Ziffern in 8-4-4-4-12-Gruppen, standardisiert in RFC 9562. Das Versions-Nibble verrät, wie sie entstanden ist: v1 und v6 aus einer Uhr, v3 und v5 aus einem Namens-Hash, v4 aus Zufälligkeit, v7 aus einem Unix-Zeitstempel plus Zufälligkeit – jeweils mit unterschiedlichen Abwägungen bei Ordnung und Privatsphäre.
UUID-Versionen erklärt
Zwei Systeme, die sich nie begegnet sind, müssen eine Zeile, eine Anfrage oder eine Datei benennen, ohne irgendwen zu fragen. Das ist das Problem, das UUIDs lösen: Erzeugen Sie eine Kennung aus lokalen Informationen – einer Uhr, Zufallsbits, einem Namen –, und die Wahrscheinlichkeit, dass jemand anders denselben Wert erzeugt, ist klein genug, um damit zu planen. Kein Koordinationsdienst, kein geteilter Zähler, um den konkurriert wird, kein zentrales Verzeichnis zum Nachschlagen.
Der aktuelle Standard ist RFC 9562, veröffentlicht im Mai 2024 als Nachfolger von RFC 4122; seine markanteste Änderung ist der offizielle Status für zwei neuere Versionen: v6 und v7. Die Version steckt im höchstwertigen Nibble der dritten Gruppe – der ersten Hex-Ziffer nach dem zweiten Bindestrich –, und die Varianten-Bits eröffnen die vierte Gruppe. Wer diese beiden Ziffern liest, erkennt die Herkunft einer UUID auf einen Blick.
Dieser Leitfaden erklärt das Bit-Layout jeder Version, worin sie stark ist und wo ihre Ehrlichkeit endet – einschließlich des Privatsphäre-Preises der eingebetteten MAC-Adresse von v1 und der Kollisionsmathematik hinter v4. Der unten verlinkte Generator erzeugt mehrere Versionen lokal, sodass Sie das Muster auf Ihrem eigenen Rechner untersuchen können.
Jedes der folgenden Layouts liest sich an einem echten Exemplar leichter – der UUID-Generator erzeugt v4- und v7-Kennungen in Ihrem Browser, und nichts davon wird protokolliert oder irgendwohin gesendet.
Kennungen reisen auch innerhalb von Token; der Leitfaden zur JWT-Struktur zeigt, wo eine jti-Claim eine UUID trägt und warum das Token um sie herum signiert, aber nicht geheim ist.
Anatomie: 128 Bits in 36 Zeichen
Eine UUID ist 128 Bits, kanonisch geschrieben als 32 kleingeschriebene Hexadezimalziffern in fünf durch Bindestriche getrennten Gruppen zu 8-4-4-4-12 – 36 Zeichen mit den Bindestrichen, 32 ohne. Das Layout ist keine Dekoration: Bestimmte Bitbereiche tragen Bedeutung. Das vier Bit große Versionsfeld nimmt das höchste Nibble der dritten Gruppe ein, und die zwei Bit große Variante – die RFC-artige UUIDs von älteren Microsoft- und Legacy-Layouts unterscheidet – nimmt die oberen Bits der vierten Gruppe ein und liest sich hexadezimal immer als 8, 9, a oder b.
| Gruppe | Beispielziffern | Inhalt (gezeigt für eine v1) |
|---|---|---|
| 1 | 614e4000 | time_low – die niederwertigsten Zeitstempel-Bits |
| 2 | 26bc | time_mid – die mittleren Zeitstempel-Bits |
| 3 | 11ef | 12 Zeitstempel-Bits, dann die 4-Bit-Version – die 1 steht für v1 |
| 4 | b17d | 2-Bit-Variante (binär 10), dann 14 Clock-Sequence-Bits |
| 5 | 0242ac120002 | 48 Node-Bits – bei v1 die MAC-Adresse der erzeugenden Maschine |
Vier Versionen, ein Blick
v1 614e4000-26bc-11ef-b17d-0242ac120002 v4 f7b17bde-5a0c-4174-8c95-407558615543 v6 1ec9414c-232a-6b00-b3c8-9e6bdeced846 v7 019b76da-a800-7c3e-8f2a-5b6c7d8e9f0a
Wo Sie hinschauen
3rd group, 1st hex digit = version (1, 4, 6, 7 here) 4th group, 1st hex digit = variant (b, 8, b, 8 here)
v1 und v6: eine Uhr und eine MAC-Adresse
v1 baut die Kennung aus einem 60-Bit-Zeitstempel auf, der 100-Nanosekunden-Intervalle seit dem 15. Oktober 1582 zählt – dem Beginn des Gregorianischen Kalenders –, plus einem Clock-Sequence-Zähler und der 48-Bit-MAC-Adresse der Maschine. Der Zeitstempel wird unschön aufgeteilt in time_low, time_mid, time_high – eine Feldreihenfolge, gewählt aus einem Bit-Packing-Komfort der 1990er Jahre und später bereut. Die MAC-Adresse ist die Privatsphäre-Mine: Jede v1-UUID verrät, welche Hardware sie erzeugt hat; deshalb erlaubte RFC 4122 schon den Ersatz durch einen zufälligen Multicast-Node.
v6 ist v1 mit korrigierter Feldreihenfolge: Die höchstwertigen Zeitstempel-Bits rücken nach vorn, sodass v6-UUIDs chronologisch sortieren, wenn man sie als Zeichenketten sortiert. Gleiche Uhr, gleiches Node-Feld, gleiche Privatsphäre-Einschränkungen – aber deutlich besseres Datenbankverhalten, und genau das ist der Sinn der Umordnung.
Derselbe Zeitstempel, zwei Feldreihenfolgen
v1: 614e4000-26bc-11ef-b17d-0242ac120002 v6: 1ec9414c-232a-6b00-b3c8-9e6bdeced846
Was sich in einem String-Index korrekt sortiert
v6 – das Feld timeHigh steht vorn, daher ist die lexikografische Ordnung die chronologische. v1 beginnt mit den niedrigstwertigen Bits und streut stattdessen.
v3 und v5: Identität aus einem Namen
v3 und v5 leiten die Kennung aus einer Namespace-UUID und einem Namen ab, gehasht mit MD5 (v3) oder SHA-1 (v5). Gleicher Namespace, gleicher Name, gleiche UUID – auf jeder Maschine, für immer. Dieser Determinismus ist das Merkmal: Stabile Kennungen lassen sich aus URLs, Benutzernamen oder Domainnamen ableiten, ohne eine Zuordnungstabelle zu speichern, und jederzeit auf jedem System neu erzeugen.
Der Preis ist die Kehrseite des Determinismus: Die Kennung verrät Informationen über den Namen. Eine v5 eines Namens mit niedriger Entropie lässt sich durch simples Raten bestätigen, und identische Namen erzeugen absichtlich identische Kennungen. v5 löst v3 ab – SHA-1 statt MD5 –, und obwohl RFC 9562 keine neue namensbasierte Version benennt, weichen neue Entwürfe, die sowohl Determinismus als auch Zeitordnung wollen, meist zu v7 aus und speichern den Namen daneben.
Deterministisch: gleiche Eingabe, gleiche Ausgabe
namespace: DNS 6ba7b810-9dad-11d1-80b4-00c04fd430c8 name: python.org v3 6fa459ea-ee8a-3ca4-894e-db77e160355e v5 886313e1-3b8a-5372-9b90-0c9aee199e5d
Warum sie sich überall reproduziert
hash(namespace bytes || "python.org") mit Version (3 oder 5) und Variante (binär 10) an festen Bitpositionen – dieselbe Berechnung, Bit für Bit.
v4: 122 zufällige Bits und was sie bringen
v4 setzt 122 Bits aus einem kryptografisch sicheren Zufallsgenerator; nur die Versions- und Varianten-Nibbles sind festgelegt. Die Kollisionswahrscheinlichkeit folgt der Geburtstags-Schranke: Nach dem Erzeugen von n Werten liegt die Chance auf irgendeinen Duplikat bei etwa n²/2¹²³. Sie bräuchten rund 2^61 UUIDs – etwa 2,3 Trillionen –, um eine Münzwurf-Chance auf eine einzige Kollision zu haben. Wenn in der Praxis doch Duplikate auftauchen, liegt die Ursache fast immer an gebrochener Zufälligkeit – ein schwacher Seed, wiederverwendeter PRNG-Zustand, ein Hardwarefehler –, nie an den Wahrscheinlichkeiten selbst.
Zufälligkeit ist zugleich v4s Schwäche als Datenbankschlüssel: Vollständig ungeordnete Werte landen in zufälligen B-Tree-Seiten, fragmentieren Indexe und erschöpfen Schreib-Caches bei großen Datenmengen. Genau diese Beschwerde sollte die Standardisierung von v6 und v7 beheben, und deshalb steuern viele ORMs und verteilte Datenbanken neue Tabellen heute Richtung v7.
v7: Unix-Millisekunden plus Zufälligkeit
v7 ist der moderne Standard-Kandidat: 48 Bits Unix-Zeitstempel in Millisekunden, dann 12 plus 62 Bits zufälliger Payload. Der führende Zeitstempel macht v7-UUIDs als Zeichenketten sortierbar – indexfreundlich ausgerechnet in den Datenbanken, die sie speichern –, während die 74 zufälligen Bits die Kollisionswahrscheinlichkeit praktisch auf v4-Niveau halten. Er braucht keine MAC-Adresse, keine Epoche von 1582 und keine Kalenderumrechnungen.
Innerhalb derselben Millisekunde beschreibt RFC 9562 einen monotonen Zähler im Feld rand_a, sodass Kennungen in schneller Folge trotzdem weiter steigen – eine Eigenschaft, die Primärschlüssel noch mehr interessiert als rohe Eindeutigkeit. Der Zeitstempel ist auch lesbar: Er liest sich als 2026, nicht als Zählwerk von 100-Nanosekunden-Ticks seit 1582, was v7 in Logs und Abfrageergebnissen angenehm für den Blick macht.
Zeitlich geordnet von Grund auf
2026-01-01T00:00:00Z 019b76da-a800-7c3e-8f2a-5b6c7d8e9f0a 2026-01-01T00:00:01Z 019b76da-abe8-9d41-8c2f-4a5b6c7d8e9f
Als Strings sortiert, zeitlich sortiert
019b76da-a800-… < 019b76da-abe8-… die lexikografische Ordnung entspricht der zeitlichen, und die oberen 48 Bits sind ein Unix-Zeitstempel in ms.
Eine Version wählen – ehrlich
Für neue Projekte: v7, wenn Kennungen zeitlich sortieren sollen oder in einem Datenbankindex leben; sonst v4 – beide brauchen keine Koordination und verraten nichts über ihren Ursprung. v5 zahlt sich aus, wenn die Kennung aus einem Namen reproduzierbar sein muss. v1 und v6 bleiben unterstützt, geben aber Hardware-Identität preis, sofern der Generator das Node-Feld nicht randomisiert; v3 ist MD5-Erbe, das aus Kompatibilitätsgründen mitgeschleppt wird. Keine der Versionen ist geheim, und keine anonymisiert Daten: Eine UUID ist ein Name, kein Nachweis.
| Version | Quelle der Bits | Als String sortierbar | Achtung bei |
|---|---|---|---|
| v1 | Gregorianischer Zeitstempel + Clock Sequence + MAC-Node | Nein | Preisgabe der MAC-Adresse |
| v3 | MD5 aus Namespace + Name | Nein | MD5-Erbe; Namen sind ratbar |
| v4 | 122 zufällige Bits | Nein | Zufällige Einfügereihenfolge fragmentiert Indexe |
| v5 | SHA-1 aus Namespace + Name | Nein | Deterministisch – Namen durch Raten bestätigbar |
| v6 | v1, umgeordnet für Sortierbarkeit | Ja | Dieselbe MAC-Einschränkung wie bei v1 |
| v7 | Unix-Zeitstempel in ms + 74 zufällige Bits | Ja | Gleiche Millisekunde ohne monotonen Zähler |
Häufig gestellte Fragen
Werden die auf dieser Website erzeugten UUIDs irgendwo aufgezeichnet?
Nein. Der Generator erzeugt Kennungen mit der eigenen Zufalls-API Ihres Browsers innerhalb des Tabs – es gibt keinen Upload-Schritt und kein serverseitiges Protokoll, denn der Code sendet nie eine Anfrage. Sie können zusehen, wie das Netzwerk-Panel still bleibt, während er arbeitet, und die Content-Security-Policy der Website blockiert ausgehende Verbindungen während der gesamten Lebensdauer der Seite.
Können zwei UUIDs in der Praxis kollidieren?
Bei v4 setzt die Geburtstags-Schranke die Münzwurf-Wahrscheinlichkeit für einen Duplikat bei rund 2^61 erzeugten Werten an – etwa 2,3 Trillionen. Echte Kollisionen deuten fast immer auf gebrochene Zufälligkeit hin, nicht auf Pech: ein schwacher Seed, wiederverwendeter PRNG-Zustand oder ein Hardwarefehler im Zufallsgenerator. v3 und v5 „kollidieren“ absichtlich – derselbe Name im selben Namespace ergibt konstruktionsgemäß dieselbe UUID.
Warum sortieren manche UUIDs schlecht als Datenbank-Primärschlüssel?
Zufällige Versionen (v4) verstreuen neue Zeilen über einen B-Tree-Index, schreiben auf unvorhersehbare Seiten und wirbeln den Cache auf, während die Tabelle wächst. Zeitlich geordnete Versionen (v6, v7) hängen stattdessen nahe der rechten Kante des Index an. Wenn Sie an v4-Schlüsseln festhalten, sind die üblichen Abhilfen eine separate zeitlich geordnete Clustering-Spalte oder das Umstellen neuer Zeilen auf v7.
Ist eine UUID geheim oder anonym?
Weder noch. Eine UUID ist eine Kennung, kein Nachweis: Sie trägt keinen Beweis darüber, wer sie besitzt, und eine v1 sendet sogar die MAC-Adresse der erzeugenden Maschine hinaus, sofern das Node-Feld nicht randomisiert wurde. Behandeln Sie UUIDs als Namen – gefahrlos zu protokollieren, nützlich zum Korrelieren –, und legen Sie Authentifizierung und Autorisierung in Mechanismen, die tatsächlich etwas verifizieren können.
Was ist der Unterschied zwischen einer GUID und einer UUID?
Sie bezeichnen dieselbe Familie von 128-Bit-Kennungen; GUID ist Microsofts Begriff. Der technische Unterschied liegt in den Varianten-Bits am Anfang der vierten Gruppe, die RFC-artige UUIDs (binär 10 – erste Hex-Ziffer 8, 9, a oder b) von älteren Microsoft- und Legacy-Layouts unterscheiden. Moderne GUIDs werden als RFC-Varianten erzeugt, weshalb beide Begriffe in den meisten Dokumentationen austauschbar verwendet werden.
Warum beginnt der v1-Zeitstempel im Jahr 1582?
Der 60-Bit-Zähler tickt in 100-Nanosekunden-Intervallen ab der Gregorianischen Kalenderreform am 15. Oktober 1582 – gewählt, damit der Zähler weit genug in der Vergangenheit begann und für Jahrtausende nicht überläuft. Der Preis ist die Lesbarkeit: Ein v1-Zeitstempel ist ohne Umrechner bedeutungslos. Die Unix-Millisekunden von v7 wählte man auch deshalb, weil sie sich direkt als Datum lesen.
Wo kann ich die hier zitierten Standards nachlesen?
Welche verwandten Tools sollten Sie als Nächstes nutzen?
- UUID generierenv4-, v7- und v1-UUIDs in Serie erzeugen und vorhandene prüfenÖffnen
- JWT-StrukturLeitfaden in verständlicher SpracheÖffnen
- Wie funktioniert Base64Leitfaden in verständlicher SpracheÖffnen
- Was ist JSONLeitfaden in verständlicher SpracheÖffnen
- JSON-ToolsJSON-Dokumente vergleichen, formatieren, validieren und erkunden.Öffnen
- JSON formatierenEinrückung und Sortierung einstellen, Kommentare entfernenÖffnen