UUID generieren
Der UUID-Generator erzeugt kryptografisch zufällige v4-, zeitlich sortierbare v7- und v1-Kennungen mit gregorianischem Zeitstempel direkt im Browser. Er prüft auch Version, Variante und Zeitstempel vorhandener UUIDs. Keine Kennung wird an einen Server gesendet.
Was ist eine UUID und worin unterscheiden sich v1, v4 und v7?
Ein Universally Unique Identifier (UUID), auch GUID genannt, ist ein 128-Bit-Wert zur Kennzeichnung von Objekten in verteilten Systemen. Verschiedene Rechner können Kennungen erzeugen, ohne eine zentrale Vergabestelle zu kontaktieren.
Die lange maßgebliche Spezifikation RFC 4122 wurde im Mai 2024 durch RFC 9562 abgelöst. Diese Norm beschreibt auch neuere Versionen wie v7, bei der der Zeitstempel am Anfang steht.
Aufbau einer 128-Bit-UUID
Die übliche Textform besteht aus 32 Hexadezimalziffern in fünf Gruppen nach dem Muster 8-4-4-4-12. Mit vier Bindestrichen sind es 36 Zeichen. Ein Nibble kennzeichnet die Version, zwei Bits die Variante.
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
time_low time_mid time_hi clock_seq node
M = 4-Bit-Version (1, 4 oder 7)
N = Variante nach RFC 4122 / RFC 9562 (8, 9, a oder b)
UUID v4: kryptografische Zufälligkeit
Bei v4 sind vier Bits für die Version und zwei für die Variante reserviert. Es bleiben 122 zufällige Bits und 2¹²² ≈ 5,3 × 10³⁶ mögliche Werte. Der Browser nutzt dafür seine kryptografische Zufallsquelle.
Für n erzeugte UUIDs beträgt die ungefähre Wahrscheinlichkeit mindestens einer Kollision p ≈ 1 − exp(−n² / (2 × 2¹²²)). Im üblichen Einsatz ist sie äußerst gering. Zufällige Primärschlüssel können aber die Leistung von Datenbankindizes beeinflussen.
UUID v7 und Datenbankindizes (RFC 9562)
Ein neuer v4-Schlüssel kann an beliebiger Stelle in einem B-Tree-Index landen. Bei großen Indizes können dadurch zufällige Lesezugriffe und Seitenteilungen zunehmen. Zeitlich sortierte Schlüssel halten aufeinanderfolgende Einfügungen eher in benachbarten Seiten.
UUID v7 beginnt mit einem 48-Bit-Unix-Zeitstempel in Millisekunden. Die übrigen variablen Bits können für Zufallswerte oder Zähler genutzt werden. So lassen sich Kennungen ungefähr zeitlich sortieren, ohne einen zentralen Generator zu benötigen.
- 48 Bit: Millisekunden seit der Unix-Epoche; das Feld reicht bis ins Jahr 10889.
- 12 Bit rand_a: Zufall, Submillisekunden-Anteil oder Zähler für Werte innerhalb derselben Millisekunde.
- 62 Bit rand_b: weiterer Zufall oder eine Sequenz; das genaue Verfahren bestimmt der Generator.
UUID v1: das ältere Zeitformat
UUID v1 zählt 100-Nanosekunden-Intervalle seit dem 15. Oktober 1582. Historisch konnten die letzten 48 Bit die MAC-Adresse des Rechners enthalten. Dieses Werkzeug verwendet stattdessen eine zufällige Knotenkennung.
Wegen der Anordnung der Zeitfelder sind v1-Zeichenfolgen ohne Umordnung der Bytes nicht chronologisch sortierbar. Für neue Anwendungen mit Zeitordnung ist v7 meist die passendere Wahl und setzt keine MAC-Adresse voraus.
- Feldreihenfolge: time_low steht vorne, obwohl es die niederwertigen Zeitbits enthält.
- Datenschutz: Ältere Implementierungen konnten eine echte MAC-Adresse einbetten und Geräteinformationen preisgeben.
Welche Tastenkürzel unterstützt der Generator?
Häufige Fragen
Warum v7 statt v4 als Datenbank-Primärschlüssel?
v4 verteilt Einfügungen über den gesamten Index. v7 beginnt mit einem Zeitstempel und erleichtert damit benachbarte Einfügungen. Die Reihenfolge innerhalb einer Millisekunde hängt von der Implementierung ab.
Wie wahrscheinlich ist eine Kollision bei v4?
v4 enthält 122 zufällige Bits. Für n Werte gilt näherungsweise p ≈ 1 − exp(−n² / (2 × 2¹²²)). Erst bei mehr als 103 Billionen Werten nähert sich die Wahrscheinlichkeit einem Milliardstel.
Wie funktioniert das ohne Server?
Der Browser verwendet crypto.randomUUID und crypto.getRandomValues mit der kryptografischen Zufallsquelle des Betriebssystems. Erzeugung und Prüfung finden lokal statt; das Werkzeug überträgt keine UUIDs.
Welchen Zeitstempel enthält v1 und warum wurde es abgelöst?
v1 zählt 100-Nanosekunden-Schritte seit dem 15. Oktober 1582. Ältere Varianten konnten eine MAC-Adresse enthalten; ihre Textform ist nicht chronologisch sortiert. v7 nutzt Unix-Millisekunden und variable Zufallsbits.
Kann ich Tausende UUIDs als Testdaten erzeugen?
Ja, bis zu 5.000 je Durchlauf. Großschreibung, Bindestriche, Anführungszeichen, geschweifte Klammern sowie Zeilen, Kommas oder ein JSON-Array sind wählbar.
Eignen sich UUIDs als Sicherheitstoken?
v4 hat zwar 122 zufällige Bits, aber UUIDs tauchen oft in URLs und Protokollen auf. Für Sitzungen und Passwort-Resets sollte der Server widerrufbare Token ausgeben. v1 und v7 verraten den Erzeugungszeitpunkt.