UUID-Generator

UUID v4 und zeitlich sortierte v7 in großer Zahl erzeugen.

Über dieses Tool

Erzeuge zufällige UUID-v4- oder zeitlich sortierte UUID-v7-Kennungen, eine oder hundert auf einmal, mit dem kryptografisch sicheren Zufallsgenerator des Browsers.

So verwendest du es

  1. Wähle v4 für komplett zufällige IDs oder v7 für IDs, die sich nach Erstellungszeit sortieren lassen.
  2. Lege fest, wie viele du brauchst, bis zu 100.
  3. Wähle Großbuchstaben oder ohne Bindestriche, wenn dein System das erwartet.
  4. Kopiere eine oder alle.

Fragen

Sollte ich UUID v4 oder v7 verwenden?
v7 beginnt mit einem Zeitstempel, daher werden neue IDs nach älteren einsortiert. Das hält Datenbankindizes kompakt und schnell und macht v7 zu einer guten Standardwahl für Primärschlüssel. Nimm v4, wenn die Erstellungszeit nicht sichtbar sein soll.
Können zwei UUIDs kollidieren?
In der Praxis nicht. Eine v4-UUID hat 122 zufällige Bits; du müsstest viele Jahre lang Milliarden pro Sekunde erzeugen, bevor eine Kollision wahrscheinlich würde.
Sind diese UUIDs sicher genug als Tokens?
Sie werden mit dem kryptografisch sicheren Zufallsgenerator des Browsers erzeugt, aber eine UUID ist eine Kennung, kein Geheimnis. Für Session-Tokens oder API-Schlüssel nimm einen längeren Zufallswert.
Wie erzeuge ich eine UUID in JavaScript, Python oder der Shell?
In Browsern und Node.js liefert crypto.randomUUID() eine v4. In Python nimmst du uuid.uuid4() oder ab Python 3.14 uuid.uuid7(). Unter macOS und Linux gibt uuidgen eine zufällige UUID aus; macOS gibt sie in Großbuchstaben aus. Für einen schnellen Schwung v7-IDs oder bis zu 100 auf einmal nutze diese Seite.
Sortieren sich UUID-v7-Schlüssel in SQL Server korrekt?
Nicht standardmäßig. Der Typ uniqueidentifier in SQL Server vergleicht zuerst die letzten sechs Bytes, zeitlich geordnete UUIDs landen also nicht am Ende eines Clustered Index. NEWSEQUENTIALID() ist die eigene sequenzielle Option von SQL Server. PostgreSQL und MySQL mit BINARY(16) vergleichen Bytes von vorn, dort sortiert sich v7 also korrekt.
Was ist die Nil-UUID?
Das ist der Wert aus lauter Nullen, 00000000-0000-0000-0000-000000000000, der als Platzhalter für „keine ID“ dient. RFC 9562 definiert außerdem eine Max-UUID, bei der jede Ziffer f ist. Keine von beiden ist zufällig, verwende sie also nie als echte Bezeichner und lehne sie ab, wo eine echte ID erwartet wird.

Was ist eine UUID und wie ist sie aufgebaut?

Eine UUID ist ein 128-Bit-Bezeichner, geschrieben als 32 Hexadezimalziffern in fünf Gruppen: 8-4-4-4-12. Die erste Ziffer der dritten Gruppe ist die Version, eine v4-UUID hat dort also immer eine 4 und eine v7 eine 7. Die erste Ziffer der vierten Gruppe ist 8, 9, a oder b und kennzeichnet die Standardvariante. GUID ist Microsofts Name für dasselbe Format.

Bei einer UUID v7 sind die ersten 48 Bit die Unix-Zeit in Millisekunden, die ersten 12 Hex-Ziffern verraten also, wann sie erzeugt wurde; wandle sie mit dem Zahlensystem-Konverter in Dezimal um und füge das Ergebnis in den Unix-Zeitstempel-Konverter ein. Die übrigen 74 Bit sind zufällig. Innerhalb derselben Millisekunde erzeugte IDs sind hier untereinander nicht geordnet, IDs aus verschiedenen Millisekunden sortieren sich aber immer nach Zeit.

UUIDs in einer Datenbank speichern: so geht’s

Nutze einen nativen Typ, wenn es einen gibt. PostgreSQL hat uuid, das 16 Bytes belegt und Groß- wie Kleinschreibung akzeptiert, mit oder ohne Bindestriche. gen_random_uuid() erzeugt eine v4 direkt in der Datenbank, und PostgreSQL 18 bringt uuidv7() mit. In MySQL speicherst du BINARY(16) mit UUID_TO_BIN() und BIN_TO_UUID() statt CHAR(36), das mehr als doppelt so viel Platz braucht und jeden Index größer macht.

Die Standard-Textform ist kleingeschrieben mit Bindestrichen, und laut RFC 9562 sollten Leser auch Großbuchstaben akzeptieren. Manche Systeme erwarten Großbuchstaben oder 32 Ziffern ohne Bindestriche, deshalb gibt es hier beide Optionen; der Wert bleibt in jedem Fall derselbe. Vergleichst du UUIDs als Strings im Code oder in Logs, normalisiere zuerst die Schreibweise, sonst passt eine GUID aus einem Windows-Tool nicht zur selben ID in Kleinbuchstaben.

UUID vs. Auto-Increment-ID

Auto-Increment-Ganzzahlen sind klein, schnell und gut lesbar, aber die Datenbank vergibt sie, du kennst die ID also erst nach dem Insert. Außerdem verraten sie, wie viele Zeilen du hast, und lassen jeden benachbarte Datensätze in einer URL erraten. UUIDs lassen sich überall erzeugen, im Browser, auf mehreren Servern oder offline, und später ohne Konflikte zusammenführen.

Der Nachteil ist die Größe: 16 Bytes statt 4 oder 8, in jedem Index und Fremdschlüssel. UUID v7 beseitigt das Hauptproblem zufälliger Schlüssel bei der Performance, weil neue Werte am Ende des Index landen. ULID ist eine ähnliche Idee, ein Zeitstempel gefolgt von Zufallsbits in einer 26-stelligen Textform, aber UUID v7 hat ein standardisiertes Format und native Spaltentypen in vielen Datenbanken.

Funktioniert etwas nicht, oder sieht ein Ergebnis falsch aus? Ein Problem mit diesem Tool melden