Skip to main content

Wird gesucht…

Tools
Artikel
Alle Ergebnisse anzeigen
Sortierbar ID Generator

ULID Generator - lexikografisch sortierbare Bezeichner

Universally Unique Lexicographically Sortable Identifier: 128 Bit, Crockford-Base32-kodiert, URL-sicher und in 26 Zeichen sortierbar.

ULID Generator
Client-side

Was ist eine ULID?

ULID steht für Universally Unique Lexicographically Sortable Identifier. Wie eine UUID trägt sie 128 Bit, stellt sie aber in 26 Zeichen Crockford-Base32 dar: 01ARZ3NDEKTSV4RRFFQ69G5FAV.

Das Format entstand als Antwort auf zwei praktische Schwächen von UUID v4: die fehlende Sortierbarkeit und die für URLs unnötige Länge von 36 Zeichen.

Der innere Aufbau

Die ersten zehn Zeichen kodieren einen 48-Bit-Zeitstempel in Millisekunden seit dem Unix-Epochenbeginn, die restlichen 16 Zeichen 80 Bit kryptografischen Zufall.

Weil Base32 die Sortierreihenfolge der zugrunde liegenden Bits erhält, entspricht die alphabetische Sortierung der Zeichenkette genau der chronologischen Reihenfolge. Der Zeitstempel reicht bis in das Jahr 10889.

Warum Crockford-Base32 wichtig ist

Das Alphabet umfasst 32 Zeichen und lässt bewusst I, L, O und U aus: die ersten drei werden leicht mit 1 und 0 verwechselt, das U vermeidet unbeabsichtigte Wörter.

Der praktische Nutzen: ULIDs lassen sich am Telefon durchgeben, von Hand abschreiben und ohne Kodierung in URLs, Dateinamen und Kommandozeilen verwenden.

ULID und UUID im Vergleich

ULID ist zehn Zeichen kürzer, sortierbar und URL-sicher ohne Sonderbehandlung. UUID ist dafür in einem RFC standardisiert, hat native Datenbanktypen und wird von jeder Plattform ohne zusätzliche Bibliothek verstanden.

Beide bestehen aus 128 Bit und lassen sich verlustfrei umrechnen - eine ULID kann als UUID gespeichert und für die Anzeige zurückkonvertiert werden.

Monotonie innerhalb einer Millisekunde

Zwei in derselben Millisekunde erzeugte ULIDs teilen den Zeitstempel-Präfix; ihre Reihenfolge ergibt sich dann aus dem Zufallsanteil und ist damit beliebig. Die Spezifikation beschreibt dafür einen monotonen Modus, der den Zufallsanteil bei gleichem Zeitstempel um eins erhöht. Wenn Sie sich auf die Reihenfolge innerhalb einer Millisekunde verlassen wollen, brauchen Sie eine Bibliothek, die diesen Modus unterstützt.

Wann ULID passt

ULID spielt seine Stärken dort aus, wo Bezeichner sichtbar sind und trotzdem sortierbar sein sollen: Auftrags- und Rechnungsnummern, Ereignis-IDs in Logs und Event-Stores, Objektnamen in S3-Buckets, Cursor für Pagination. Für rein interne Datenbankschlüssel ist UUID v7 wegen der nativen Unterstützung meist die pragmatischere Wahl.

ULIDs in Datenbanken speichern

Am effizientesten ist die binäre Ablage in 16 Byte: BINARY(16) in MySQL, bytea oder uuid in PostgreSQL. Als CHAR(26) bleibt die Sortierbarkeit erhalten und die Werte sind in Abfragen direkt lesbar, kosten aber zehn Byte mehr pro Zeile.

Frequently Asked Questions

Eine ULID ist ein 128-Bit-Bezeichner aus einem 48-Bit-Zeitstempel in Millisekunden und 80 Bit Zufall, kodiert in 26 Zeichen Crockford-Base32. Sie ist damit kürzer als eine UUID und sortiert chronologisch.

Der Informationsgehalt ist fast identisch. ULID ist mit 26 statt 36 Zeichen kürzer und angenehmer in URLs, UUID v7 ist dagegen in RFC 9562 standardisiert und passt ohne Schemawechsel in vorhandene UUID-Spalten.

Nicht automatisch. Die ULID-Spezifikation beschreibt dafür einen monotonen Modus, in dem der Zufallsanteil innerhalb derselben Millisekunde hochgezählt wird. Ohne diesen Modus ist die Reihenfolge gleichzeitig erzeugter Werte zufällig.

Weil es die leicht zu verwechselnden Zeichen I, L, O und U auslässt. Das macht ULIDs vorlesbar und weitgehend tippsicher und hält sie gleichzeitig URL-sicher, ohne Kodierung.

Need identifiers in production?

Use our REST API or copy-ready Dev Lab snippets for 25+ languages.