MiServe DevTools

Ihre Sticker

Heften Sie hier Tools an. Sie werden in diesem Browser gespeichert.

UUID-, ULID- und Nano-ID-Generator

Generieren Sie UUID v4, zeitlich sortierbare UUID v7, ULIDs und Nano IDs in großer Zahl, und lesen Sie Version und Zeitstempel aus einer ID aus.

Typ
Variante
Zeitstempel (UTC)
Ihre Ortszeit
Unix-Zeit in Millisekunden

Läuft in Ihrem Browser. Nichts, was Sie einfügen, wird hochgeladen.

Über dieses Tool

Welche ID wählen

Eine UUID der Version 4 besteht aus 122 zufälligen Bits. Sie verrät nichts darüber, wann oder wo sie erzeugt wurde, und ist die übliche Wahl, wenn eine ID nur eindeutig sein muss. Eine UUID der Version 7, 2024 in RFC 9562 standardisiert, stellt 74 zufälligen Bits einen 48-Bit-Unix-Zeitstempel in Millisekunden voran. Neue IDs sortieren sich hinter älteren ein, sodass gemeinsam eingefügte Zeilen in einem Datenbankindex beieinander bleiben, um den Preis, dass jeder, der die ID sieht, den Erstellungszeitpunkt erfährt.

Eine ULID folgt derselben Idee in anderer Schreibweise: 48 Bit Zeit und 80 zufällige Bits in 26 Zeichen Crockford Base32, ohne Unterscheidung von Groß- und Kleinschreibung und ohne Bindestriche. Eine Nano ID ist ein zufälliger String, dessen Länge und Alphabet Sie wählen. Der Standard von 21 Zeichen aus 64 URL-sicheren Symbolen enthält 126 Bit, etwas mehr als eine UUID der Version 4, in einem kürzeren String.

Wie eindeutig, und wie geheim

Zufällige IDs können theoretisch kollidieren. Bei Version 4 müssten Sie etwa 2,7 Trillionen (2,7 × 10^18) UUIDs erzeugen, bevor die Wahrscheinlichkeit einer einzigen Wiederholung bei der Hälfte liegt. Deshalb behandeln Anwendungen sie als eindeutig. Eine kürzere Nano ID oder ein kleines Alphabet verringert diesen Spielraum: Die Zeile unter den Optionen zeigt, wie viele zufällige Bits Ihre Wahl ergibt.

Eine ID ist ein Bezeichner, kein Geheimnis. Die Versionen 1, 6 und 7 sowie ULIDs verraten, wann sie erzeugt wurden, und RFC 9562 warnt davor, sich auf eine UUID als Nachweis einer Berechtigung zu verlassen. Für einen Link zum Zurücksetzen des Passworts, eine Session oder einen API-Schlüssel verwenden Sie ein zufälliges Token mit mindestens 128 Bit und speichern auf dem Server nur einen Hash davon.

Eine UUID lesen

In der üblichen Form xxxxxxxx-xxxx-Vxxx-Nxxx-xxxxxxxxxxxx ist die Ziffer V die Version, und die ersten Bits von N sind die Variante: 8, 9, a oder b für das Layout nach RFC 9562, das fast jede UUID verwendet. Die Versionen 1 und 6 enthalten einen 60-Bit-Zähler der 100-Nanosekunden-Schritte seit dem 15. Oktober 1582 zusammen mit einer Node-ID, ursprünglich der MAC-Adresse der Netzwerkkarte. Version 7 enthält Unix-Millisekunden. Die Versionen 3 und 5 sind Hashes eines Namens, Version 4 ist zufällig, sie enthalten also nichts zum Dekodieren.

Die ersten zehn Zeichen einer ULID sind ihr Zeitstempel. Das Analysefeld akzeptiert auch UUIDs ohne Bindestriche, in geschweiften Klammern oder mit dem Präfix urn:uuid:.

Wie dieses Tool sie erzeugt

Jedes zufällige Bit stammt aus crypto.getRandomValues, dem kryptografischen Zufallszahlengenerator des Browsers. Es wird nichts von einem Server abgerufen und nichts gespeichert.

UUIDs der Version 7, die in derselben Millisekunde entstehen, behalten den Zeitstempel und addieren einen zufälligen Schritt zu den 74 zufälligen Bits. Das ist die in RFC 9562 beschriebene monotone Methode, sodass die IDs eines Durchlaufs immer in der Reihenfolge sortiert sind, in der sie erzeugt wurden. Bei ULIDs aus derselben Millisekunde wird der Zufallsteil um eins erhöht, wie es die ULID-Spezifikation beschreibt. Diese Reihenfolge gilt für IDs von dieser Seite. IDs, die auf verschiedenen Rechnern in derselben Millisekunde entstehen, sortieren sich in keiner bestimmten Reihenfolge. Die Zeichen einer Nano ID werden ausgewählt, indem zufällige Bytes außerhalb des Alphabets verworfen werden, sodass jedes Symbol gleich wahrscheinlich ist.

Fragen

Sollte ich UUID v4 oder UUID v7 als Primärschlüssel in der Datenbank verwenden?

Version 7 eignet sich besser als Primärschlüssel, wenn neue Zeilen im Index nebeneinander landen sollen und es Sie nicht stört, dass die ID ihren Erstellungszeitpunkt zeigt. Version 4 ist die Wahl, wenn die ID nichts verraten darf. Beide haben 128 Bit und passen in dieselbe uuid-Spalte.

Können zwei generierte UUIDs gleich sein?

Möglich ist es, aber viel zu unwahrscheinlich, um damit zu planen. Eine UUID der Version 4 hat 122 zufällige Bits, es braucht also etwa 2,7 Trillionen (2,7 × 10^18) davon, bis eine einzige Wiederholung ebenso wahrscheinlich ist wie keine. Das eigentliche Risiko ist eine schwache Zufallsquelle, deshalb verwendet dieses Tool den kryptografischen Generator des Browsers.

Ist eine ULID dasselbe wie eine UUID v7?

Nein, aber die beiden ähneln sich. Beide haben 128 Bit und beginnen mit einem 48-Bit-Zeitstempel in Millisekunden, sodass die Bits einer ULID in eine 128-Bit-UUID-Spalte passen. Eine ULID hat keine Felder für Version und Variante, daher definiert RFC 9562 sie nicht als UUID, und ihre Textform verwendet Crockford Base32, wo eine UUID hexadezimal geschrieben wird.

Kann ich erkennen, wann eine UUID erzeugt wurde?

Ja, bei den UUID-Versionen 1, 6 und 7 und bei ULIDs, die einen Zeitstempel enthalten. Fügen Sie den Wert in das Analysefeld ein, um ihn als Datum zu sehen. Eine UUID der Version 4 ist zufällig und enthält keine Zeitangabe.

Weitere Tools in Hashing