Kennungen erzeugen
Erzeuge UUIDs der Versionen 1, 3, 4, 5, 6 und 7 oder ULIDs, einzeln oder in Paketen von bis zu tausend, und analysiere beliebige Kennungen, um Version, Variante und enthaltenes Datum zu erfahren. Die Berechnung erfolgt in deinem Browser mit dem kryptografischen Zufallsgenerator des Systems.
122 zufällige Bits. Die übliche Wahl, wenn du nur eine eindeutige Kennung brauchst.
Format
Ergebnis
UUID oder ULID analysieren
Akzeptiert Bindestriche, Klammern, das Präfix urn:uuid: oder eine 26-stellige ULID
Typ
Version 7: sortierbares Unix-Datum
Variante
RFC 9562 (früher RFC 4122)
Erstellungsdatum
22.02.2022, 16:22:22 2022-02-22T19:22:22.000Z · 1645557742000 ms
Kanonisch017f22e2-79b0-7cc3-98c4-dc0c0c07398f
Großbuchstaben017F22E2-79B0-7CC3-98C4-DC0C0C07398F
GUID mit Klammern{017F22E2-79B0-7CC3-98C4-DC0C0C07398F}
URNurn:uuid:017f22e2-79b0-7cc3-98c4-dc0c0c07398f
Als ULID01FWHE4YDGFK1SHH6W1G60EECF
Hexadezimal017f22e279b07cc398c4dc0c0c07398f
Dezimale Ganzzahl1989357241971137676463954034883508623
Base64AX8i4nmwfMOYxNwMDAc5jw==

So funktioniert es

Eine UUID ist eine 128-Bit-Zahl, geschrieben als 32 Hexadezimalziffern in fünf Gruppen (8-4-4-4-12). Sie kennzeichnet einen Datensatz, ohne dass jemand gefragt werden muss, ob der Wert schon vergeben ist: Zwei Server, zwei mobile Apps oder zwei Prozesse können gleichzeitig Kennungen erzeugen, ohne sich abzustimmen und ohne zu kollidieren. Das Format ist in RFC 9562 definiert, die 2024 RFC 4122 ersetzt und die Versionen 6, 7 und 8 ergänzt hat.

Die Ziffer am Anfang der dritten Gruppe gibt die Version an, und jede Version ordnet die Bits anders an. Version 4 ist reiner Zufall. Version 7 beginnt mit dem Datum in Millisekunden, sodass die Kennungen nach Erstellung sortiert sind. Die Versionen 3 und 5 enthalten nichts Zufälliges: Sie entstehen aus dem Hash eines Namensraums und eines Namens und ergeben daher immer dasselbe Ergebnis. Version 1 und 6 enthalten ein Datum mit 100-Nanosekunden-Genauigkeit und einen Knoten, der früher die MAC-Adresse des Rechners war.

Der Analysator geht den umgekehrten Weg: Er liest Version und Variante, gewinnt das Datum aus UUIDs der Versionen 1, 6 und 7 sowie aus ULIDs zurück und zeigt denselben Wert als GUID, URN, Hexadezimal, Ganzzahl oder Base64. Alles wird in deinem Browser berechnet; keine Kennung wird an einen Server gesendet.

Beispiele

v5 · DNS · www.example.com2ed6657d-e927-568b-95e1-2665a8aea6a2Das ist der Testvektor aus RFC 9562. Jede Bibliothek, die Version 5 korrekt implementiert, muss für diesen Namen im DNS-Namensraum genau diesen Wert liefern.
017F22E2-79B0-7CC3-98C4-DC0C0C07398F2022-02-22T19:22:22.000ZDie ersten 12 Ziffern einer v7-UUID sind die Unix-Millisekunden in Hexadezimal: 0x017F22E279B0 ist 1645557742000.
C232AB00-9414-11EC-B3C8-9F6BDECED8461EC9414C-232A-6B00-B3C8-9F6BDECED846Derselbe Zeitpunkt als Version 1 und als Version 6. Version 6 ordnet die Datumsbits vom höchst- zum niedrigstwertigen, damit der Text chronologisch sortiert; Taktsequenz und Knoten bleiben gleich.
01ARZ3NDEKTSV4RRFFQ69G5FAV01563e3a-b5d3-d676-4c61-efb99302bd5bEine ULID belegt dieselben 128 Bits wie eine UUID und passt daher in eine uuid-Spalte. Sie hat aber weder Version noch Variante: Als UUID gelesen sind diese Ziffern Teil des Zufalls.

Anwendungsfälle

  • Den Primärschlüssel im Client oder in mehreren Diensten gleichzeitig erzeugen, ohne auf einen Autoincrement-Wert der Datenbank zu warten.
  • Idempotenzschlüssel erzeugen, damit eine wiederholte Zahlung oder Bestellung nicht doppelt verarbeitet wird.
  • Jede Anfrage mit einer Korrelations-ID versehen, um sie durch die Logs mehrerer Microservices zu verfolgen.
  • Mit v5 eine stabile Kennung aus einem natürlichen Schlüssel (E-Mail, URL, SKU) ableiten, damit zwei Systeme ohne gemeinsame Tabelle zum selben Wert kommen.
  • Herausfinden, wann ein Datensatz erstellt wurde, anhand seiner v7-UUID oder ULID, wenn sie in einem Log oder Fehlerbericht auftaucht.
  • Testdaten mit Hunderten gültiger Kennungen auf einmal befüllen.

Häufige Fragen

v4 oder v7 als Primärschlüssel?

v7, außer du hast einen Grund, das Erstellungsdatum zu verbergen. B-Baum-Indizes speichern Schlüssel sortiert, und eine v4 landet irgendwo im Index: Jede Einfügung trifft eine andere Seite, Seiten werden geteilt und der Cache arbeitet schlechter. Eine v7 landet immer am Ende, wie ein Autoincrement. Vorsicht bei SQL Server: Der Typ uniqueidentifier sortiert beginnend mit den letzten sechs Bytes, dort ist also auch eine v7 nicht sequenziell.

Können sich zwei v4-UUIDs wiederholen?

Theoretisch ja, praktisch nein. Eine v4 hat 122 zufällige Bits, und für eine 50-%-Wahrscheinlichkeit, dass mindestens eine Wiederholung auftritt, müsstest du etwa 2,7 × 10¹⁸ erzeugen, also eine Milliarde pro Sekunde über mehr als 85 Jahre. Voraussetzung ist ein kryptografischer Generator: Die echten Duplikate, von denen berichtet wird, stammen von schlecht initialisierten Seeds, nicht von der Mathematik.

Sind UUID und GUID dasselbe?

Ja, GUID ist der Name, den Microsoft verwendet, und der Text ist identisch; unter Windows erscheint er meist in Großbuchstaben und in geschweiften Klammern. Der Unterschied liegt im Binärformat: Guid.ToByteArray in .NET speichert die ersten drei Gruppen in Little-Endian. Liest du diese Rohbytes aus einer anderen Sprache, erscheinen die ersten Ziffern vertauscht.

Kann ich eine UUID als geheimes Token verwenden?

Eine gut erzeugte v4 hat 122 unvorhersehbare Bits, was für einen schwer zu erratenden Link reicht. RFC 9562 stellt aber klar, dass UUIDs nicht als Zugangsdaten gedacht sind: Viele Bibliotheken garantieren keinen kryptografischen Generator, und die Versionen 1, 6 und 7 verraten das Erstellungsdatum. Für Sitzungs- oder Passwort-Reset-Tokens erzeugst du besser eigene Zufallsbytes.

ULID oder UUID v7?

Sie enthalten fast dieselben Informationen: 48 Bits Millisekunden und der Rest zufällig. Eine ULID wird in 26 Zeichen ohne Bindestriche oder mehrdeutige Buchstaben geschrieben und ist in einer URL praktischer. Eine v7 ist eine Standard-UUID und passt daher ohne Umwandlung in uuid-Spalten von PostgreSQL und in jeden Validator. Wenn du bei null anfängst und deine Datenbank einen uuid-Typ hat: v7.

Warum ist der Knoten meiner v1-UUIDs nicht meine MAC?

Weil die MAC der Netzwerkkarte verrät, welcher Rechner jede Kennung erzeugt hat – so wurde 1999 der Autor des Melissa-Virus identifiziert. RFC 9562 empfiehlt einen zufälligen Knoten mit gesetztem Multicast-Bit, und genau das macht dieses Tool; der Analysator weist dich darauf hin, wenn eine v1-UUID eine echte MAC enthält.