So benutzt du den Generator
Beim Öffnen der Seite stehen schon 10 UUIDs der Version 4 bereit. Unter UUIDs erzeugen stellst du Folgendes ein:
- Version: „v4 (vollständig zufällig)“ oder „v7 (zeitlich sortierbar)“. Sobald du wechselst, werden neue Werte erzeugt.
- Anzahl: eine ganze Zahl von 1 bis 1000. Liegt deine Eingabe außerhalb, wird sie beim Verlassen des Felds auf 1 oder 1000 gesetzt.
- Großbuchstaben, Ohne Bindestriche, Geschweifte Klammern { }: die Schreibweise der Ergebnisse.
- Erzeugen: neue Werte mit denselben Einstellungen.
- Alle kopieren, Als .txt herunterladen: alle Ergebnisse, eines pro Zeile. Die heruntergeladene Datei heißt uuid.txt. Über den Kopier-Button in jeder Zeile holst du dir einen einzelnen Wert.
Erzeugst du mehr als 100 Stück, zeigt die Seite zunächst nur die ersten 100. Den Rest blendest du mit „Alle anzeigen“ ein. Beim Kopieren und Herunterladen sind auch die nicht angezeigten Werte dabei.
Darunter sitzt der UUID-Prüfer: Fügst du eine einzelne UUID ein, zeigt er „Version“, „Variante“ und „Enthaltener Zeitstempel“.
Worin sich Version 4 und Version 7 unterscheiden
Eine UUID ist ein 128-Bit-Wert. 6 Bit davon sind fest für Version und Variante vergeben. Wie die übrigen 122 Bit gefüllt werden, macht den Unterschied zwischen den Versionen aus.
| Stelle | Version 4 | Version 7 |
|---|---|---|
| Erste 48 Bit | Zufall | Millisekunden seit dem 1. Januar 1970 (UTC) |
| 4 Bit | Version (4) | Version (7) |
| 12 Bit | Zufall | Laut RFC 9562 Zufallsbits, dieses Tool nutzt sie als Zähler |
| 2 Bit | Variante | Variante |
| 62 Bit | Zufall | Zufall |
Einer UUID der Version 4 sieht man nichts an. Dafür hat sie keine Sortierreihenfolge: Als Primärschlüssel in einer Datenbank landen neue Werte quer über den Index verstreut. Das führt zu häufigeren Seitenteilungen im B-Baum und zu einer schlechteren Cache-Trefferquote.
Bei Version 7 steht vorn die Zeit. Sortierst du die Werte als Strings, erhältst du die Reihenfolge ihrer Erzeugung, und als Primärschlüssel reihen sich neue Werte am Ende des Index ein. Der Preis dafür: Der Wert verrät seinen Erzeugungszeitpunkt auf die Millisekunde. Für Kennungen, bei denen niemand von außen auf den Zeitpunkt einer Registrierung oder Bestellung schließen soll, ist Version 4 die richtige Wahl.
Version 4 erzeugt das Tool mit crypto.randomUUID() des Browsers, die Zufallsbits der Version 7 kommen aus crypto.getRandomValues(). Beides sind kryptografisch sichere Zufallszahlen.
Warum UUIDs der Version 7 aus einem Durchgang in Reihenfolge erscheinen
Erzeugst du mehrere UUIDs der Version 7 auf einmal, bekommt der ganze Durchgang dieselbe Millisekunde. Bei gleichem Zeitstempel bestimmt der 12-Bit-Zähler dahinter die Reihenfolge.
- Beim ersten Wert eines Durchgangs startet der Zähler mit einer Zufallszahl von 0 bis 2047. In 12 Bit passen Zahlen bis 4095. Dass nur die untere Hälfte genutzt wird, schafft Luft gegen einen Überlauf.
- Mit jedem weiteren Wert steigt der Zähler um 1. Da höchstens 1000 Werte auf einmal entstehen, endet er selbst beim größten Startwert 2047 bei 3046 und läuft nie über.
- Die hinteren 62 Bit werden für jeden Wert neu gezogen.
Ein Beispiel: Ist der Zeitstempel der 1. Januar 2026, 00:00:00.000 (UTC) und beginnt der Zähler bei 2047, fangen drei aufeinanderfolgende Werte mit 019b76da-a800-77ff, 019b76da-a800-7800 und 019b76da-a800-7801 an. Die 7 am Anfang der dritten Gruppe ist die Version, die drei Stellen danach sind der Zähler.
Von einem Durchgang zum nächsten wird der Zähler nicht weitergeführt. Klickst du erneut auf „Erzeugen“, beginnt alles mit der dann aktuellen Zeit von vorn, und der spätere Durchgang liegt über seinen Zeitstempel hinter dem früheren. Wurde die Geräteuhr dazwischen zurückgestellt, gilt diese Reihenfolge nicht mehr.
Wie wahrscheinlich sind doppelte Werte?
Bei Version 4 sind 122 Bit zufällig. Rechnet man mit dem Geburtstagsparadoxon, muss man etwa 2,7 × 10^18 Werte erzeugen, bis die Wahrscheinlichkeit für mindestens eine Dopplung 50 % erreicht. Selbst bei 1 Milliarde Werten pro Sekunde dauert das rund 86 Jahre.
Bei der Version 7 dieses Tools werden pro Wert 62 Bit neu gezogen. Innerhalb eines Durchgangs unterscheiden sich die Zähler, dort kann sich also nichts doppeln. Zwei Werte, die auf verschiedenen Geräten oder in verschiedenen Tabs in derselben Millisekunde entstehen, sind nur dann gleich, wenn Zähler und alle 62 Zufallsbits übereinstimmen.
Was der Prüfer ausliest
Fügst du 018f4d2e-7c3a-7b21-9e2f-1a2b3c4d5e6f in den Prüfer ein, erhältst du Version 7, die Variante „RFC 9562 (Standard)“ und als enthaltenen Zeitstempel den 6. Mai 2024, 09:14:03 (UTC). Angezeigt wird die Zeit in der Zeitzone dieses Browsers, in einer UTC+9-Zeitzone also 18:14:03.
- Version ist die erste Stelle der dritten Gruppe (die 13. Hex-Stelle), und zwar genau so, wie sie dasteht. Auch Werte, die der Standard nicht kennt, werden unverändert angezeigt.
- Variante ergibt sich aus den Bits der ersten Stelle der vierten Gruppe.
| Anzeige | Erste Stelle der vierten Gruppe | Bedeutung |
|---|---|---|
| NCS (abwärtskompatibel) | 0–7 | Für die Kompatibilität mit dem alten NCS-Verfahren freigehalten |
| RFC 9562 (Standard) | 8, 9, a, b | Die heute üblichen Standard-UUIDs |
| Microsoft (alte GUID) | c, d | Für die Kompatibilität mit alten Microsoft-GUIDs |
| Für zukünftige Verwendung reserviert | e, f | Noch nicht definiert |
- Bestehen alle Stellen aus 0, erscheint die Markierung „Nil-UUID“, bestehen alle aus f, erscheint „Max-UUID“. Laut RFC 9562 kann Nil für „kein Wert“ stehen und Max als Marke dienen, etwa für das Ende einer Liste. Ihren Stellen entsprechend wird Nil als Version 0 mit NCS-Variante angezeigt, Max als Version 15 mit reservierter Variante.
Der Prüfer schaut nur auf die Form. Was aus 32 Hexadezimalstellen besteht, kommt durch. Das heißt nicht, dass diese UUID je irgendwo vergeben wurde. Steht bei einem von Hand veränderten Wert an der Versionsstelle eine 7, liest der Prüfer auch dort einen Zeitstempel aus den entsprechenden Stellen und zeigt ihn an.
