ULID-Generator
Erzeugen Sie in großer Zahl ULIDs — chronologisch sortierbare Kennungen, die sich als Alternative zu UUIDs eignen.
Was das Erzeugen von ULIDs bedeutet
ULIDs zu erzeugen heißt, in einem Zug global eindeutige Bezeichner auszugeben, die sich nach der Zeit sortieren lassen – den Universally Unique Lexicographically Sortable Identifier. Eine ULID ist eine 26 Zeichen lange Crockford-Base32-Zeichenkette, deren erste 10 Zeichen den Zeitpunkt der Erzeugung kodieren und deren übrige 16 aus einer kryptografisch sicheren Zufallsquelle stammen. Anders als ein durchweg zufälliger Bezeichner wie UUID v4 hat sie den großen Vorzug, dass ein alphabetisches Sortieren der Zeichenketten sie zugleich in die Reihenfolge ihrer Entstehung bringt.
Dieses Werkzeug bezieht den Zufallsteil aus crypto.getRandomValues() der Web Crypto API, die Quelle ist also kryptografisch sicher und kein bloßer Pseudozufallsgenerator. Alles geschieht im Browser: Weder die eingegebene Anzahl noch die erzeugten Bezeichner werden an einen Server gesendet. Bis zu 1.000 lassen sich auf einmal erzeugen, und die Ausgabe steht wahlweise in Großbuchstaben – der kanonischen Form der Spezifikation – oder in Kleinbuchstaben bereit.
So erzeugen Sie ULIDs
- Anzahl eingeben Tragen Sie ein, wie viele ULIDs auf einmal ausgegeben werden sollen – zwischen 1 und 1.000.
- Über Kleinschreibung entscheiden Setzen Sie das Häkchen für Kleinbuchstaben, wenn Sie sie in einer URL oder einem Protokoll einheitlich halten wollen. Beide Schreibweisen sind laut Spezifikation gültig.
- Auf „Erzeugen“ klicken Die gewünschte Zahl an ULIDs, mit der aktuellen Zeit im Zeitstempelteil, wird zusammen aufgelistet.
- Ergebnisse kopieren Kopieren Sie sie einzeln oder übernehmen Sie mit „Alle kopieren“ die gesamte, durch Zeilenumbrüche getrennte Liste.
Tipps für die Nutzung
- Die ersten 10 Zeichen einer ULID kodieren einen Zeitstempel (den Erzeugungszeitpunkt), die restlichen 16 Zeichen sind zufällig. Außer wenn zwei ULIDs innerhalb derselben Millisekunde erzeugt werden, genügt eine einfache Sortierung als Zeichenkette, um die Erzeugungsreihenfolge wiederherzustellen.
- Wird als Primärschlüssel einer Datenbank ein vollständig zufälliger UUID v4 verwendet, führt dies dazu, dass neue Zeilen an zufälligen Positionen im Index eingefügt werden, was leicht zur Fragmentierung von B-Tree-Indizes führt. Da ULIDs annähernd zeitlich sortiert sind, werden neue Zeilen meist nahe dem Ende des Index eingefügt, was dieses Problem abmildert.
- Eine ULID wird als 26 Zeichen in Crockfords Base32 dargestellt (das 32-Zeichen-Alphabet `0`-`9` und `A`-`Z`, aus dem die leicht zu verwechselnden Buchstaben I, L, O und U entfernt wurden). Damit ist sie kürzer als eine UUID (36 Zeichen inklusive Bindestriche) und lässt sich auch in Umgebungen ohne Unterscheidung von Groß- und Kleinschreibung sicher verwenden.
- Einen Formatvergleich mit Nano ID und UUID v4 finden Sie in der Vergleichstabelle auf unserem Schwestertool, der Nano-ID-Generator-Seite.
Wofür sich ULIDs eignen
Primärschlüssel und Datensatzkennungen in einer Datenbank
Wenn Sie ULIDs als Primärschlüssel einer neuen Tabelle vorsehen, können Sie früh in der Entwicklung einen Stapel Kennungen für Testdatensätze und Seed-Daten bereitstellen.
Ereigniskennungen in einem ereignisgetriebenen System
Wo jedes Ereignis in einer Nachrichtenwarteschlange oder einem verteilten System eine eindeutige Kennung braucht, sortieren ULIDs nach Zeit – was das chronologische Verfolgen der Protokolle erheblich erleichtert.
Beispielhafte Protokoll- und Ablaufkennungen
Erzeugen Sie im echten Format Kennungen, um eine Protokollplattform oder ein Tracing-Werkzeug zu prüfen oder vorzuführen.
Vergleich mit anderen Kennungsformaten
Wenn Sie zwischen ULID, UUID v4, UUID v7 oder Nano ID für Kurz-URLs abwägen, vergleichen Sie zuerst Aussehen und Länge. Siehe auch UUID-Erzeugung, UUID-v7-Erzeugung und Nano-ID-Erzeugung.
Begriffe rund um ULIDs
- ULID
- Kurz für Universally Unique Lexicographically Sortable Identifier. Ein 128-Bit-Bezeichner, dessen führende 48 Bit den Erzeugungszeitpunkt tragen, sodass allein das Sortieren der Zeichenketten die chronologische Reihenfolge herstellt.
- Crockford Base32
- Eine Kodierung mit 32 Zeichen: den Ziffern 0–9 und den Buchstaben A–Z ohne die leicht verwechselbaren I, L, O und U. Eine ULID wird auf diese Weise in 26 Zeichen kodiert.
- Monotonie
- Die Eigenschaft eines Wertes, im Zeitverlauf stets zu wachsen. Eine ULID sichert keine Reihenfolge, wenn mehrere in derselben Millisekunde entstehen; die in der Spezifikation vorgesehene monotone Erzeugung erhält das Wachstum auch dann.
- UUID
- Kurz für Universally Unique Identifier. Der in RFC 4122 festgelegte Standard für 128-Bit-Bezeichner, gewöhnlich als 36 hexadezimale Zeichen samt Bindestrichen geschrieben. Ein von ULID unabhängiger Standard.
- Eindeutige Kennungen in verteilten Systemen
- Die Anordnung, bei der mehrere Server oder Prozesse unabhängig voneinander kollisionsfreie Kennungen erzeugen, ohne eine zentrale Vergabestelle zu fragen. ULID und UUID verbinden dazu Erzeugungszeit und Zufall, sodass die Kollisionswahrscheinlichkeit verschwindend klein wird.
- Zeitstempelteil
- Die ersten 10 Zeichen einer ULID: ein 48-Bit-Wert, der die Erzeugungszeit in Millisekunden als Crockford Base32 kodiert. Er ist der Kern des Mechanismus, der die Erzeugungsreihenfolge allein aus dem Zeichenkettenvergleich erkennbar macht.
Häufig gestellte Fragen
Übrigens – wie ULID die chronologische Ordnung in die Welt der IDs brachte
Die ULID-Spezifikation wurde 2016 von Alizain Feerasta veröffentlicht. Zu dieser Zeit war UUID bereits der Standard zur Erzeugung eindeutiger IDs in verteilten Systemen, doch seine vollständig zufällige Natur — die eine Sortierung unmöglich machte — galt als unpraktisch für die Effizienz von Datenbankindizes und für die zeitliche Analyse von Logs. Genau dieses Problem sollte ULID lösen.
Tatsächlich besitzt auch UUID zeitbasierte Varianten: Version 1 (MAC-Adresse plus Zeitstempel) und Version 7 (2024 standardisiert, eine Kombination aus Zeitstempel und Zufallswerten). ULID ist jedoch eine eigenständige Spezifikation, unabhängig vom UUID-Standard (RFC 4122), und zeichnet sich durch ein einfacheres Design sowie eine kompakte Base32-Darstellung aus.
Heute existieren für nahezu alle wichtigen Programmiersprachen Implementierungsbibliotheken für ULID, und es wird überall dort eingesetzt, wo die Erzeugungsreihenfolge erhalten bleiben soll: bei Ereignis-IDs in verteilten Systemen, Trace-IDs in Logs und Primärschlüsseln in Datenbanken. In der Designphilosophie überschneidet es sich stark mit dem etwa zeitgleich entstandenen UUID v7, und beide existieren nebeneinander als unterschiedliche Ansätze für dasselbe Ziel: eine sortierbare, UUID-ähnliche Kennung.