ULID- und Nano-ID-Generator
ULIDs (auch monoton) oder Nano IDs mit eigenem Alphabet und eigener Länge in großer Zahl erzeugen, ULID-Zeitstempel dekodieren und das Kollisionsrisiko prüfen.
Kollisionswahrscheinlichkeit
- Alphabetgröße
- —
- Entropie pro ID
- —
- Mögliche IDs
- —
- IDs für 1 % Duplikatrisiko
- —
- Zeit bis zu diesem Risiko von 1 %
- —
ULID dekodieren
- Zeitstempel (UTC, ISO 8601)
- Lokales Datum und Uhrzeit
- Unix-Zeit (ms)
- Zufallsteil (80 Bit, hex)
So erzeugen Sie ULIDs oder Nano IDs
- Wählen Sie unter ID-Typ „ULID (sortierbar)“ oder „Nano ID (kurz)“.
- Legen Sie die Anzahl fest (1 bis 1.000). Schon beim Laden der Seite werden zehn IDs erzeugt.
- Lassen Sie bei ULIDs „Monoton (streng steigend)“ aktiviert, damit auch IDs aus derselben Millisekunde richtig sortiert bleiben, und aktivieren Sie „Kleinbuchstaben“, wenn Ihr System das bevorzugt.
- Wählen Sie bei Nano IDs ein Alphabet (oder „Eigenes …“ und geben Sie Ihre eigenen Zeichen ein) sowie eine Länge.
- Klicken Sie auf „Erzeugen“ und dann auf „Kopieren“ für die Liste oder laden Sie sie als .txt-Datei herunter (eine ID pro Zeile).
Um das in einer ULID versteckte Datum zu lesen, fügen Sie sie unter ULID dekodieren ein oder klicken Sie auf „Erste ID dekodieren“. Das Tool zeigt den Zeitstempel in UTC (ISO 8601), in Ihrer Ortszeit und als Unix-Millisekunden sowie den 80-Bit-Zufallsteil in Hexadezimalschreibweise.
Was ist eine ULID?
Eine ULID (Universally Unique Lexicographically Sortable Identifier) ist ein 128-Bit-Bezeichner, geschrieben als 26 Zeichen Crockford-Base32, zum Beispiel 01ARZ3NDEKTSV4RRFFQ69G5FAV. Die ersten 10 Zeichen kodieren einen 48-Bit-Zeitstempel in Millisekunden (ausreichend bis zum Jahr 10889), die letzten 16 Zeichen sind 80 Zufallsbits. Crockford-Base32 lässt I, L, O und U weg, um Verwechslungen zu vermeiden; beim Dekodieren spielt die Groß- und Kleinschreibung keine Rolle.
Da die Zeit vorne steht, lassen sich ULIDs alphabetisch in der Reihenfolge ihrer Erzeugung sortieren. Das macht sie zu guten Primärschlüsseln: Neue Zeilen landen am Ende eines B-Baum-Index, statt wie bei zufälligen UUIDs verstreut zu werden, und Sie können nach der ID statt nach einer eigenen Datumsspalte sortieren.
Monotoner Modus. Innerhalb einer Millisekunde wären zufällige ULIDs in zufälliger Reihenfolge sortiert. Mit der monotonen Option folgt das Tool der ULID-Spezifikation: Entstehen mehrere IDs in derselben Millisekunde, bleibt der Zeitstempel gleich und der vorherige Zufallsteil wird um 1 erhöht. Läuft die Uhr rückwärts, behält das Tool den letzten Zeitstempel bei, sodass die Folge nie kleiner wird.
Bedenken Sie, dass eine ULID ihren Erstellungszeitpunkt verrät. Verwenden Sie sie nicht, wo diese Information sensibel ist.
Was ist eine Nano ID?
Nano ID ist ein kompakter zufälliger Bezeichner. Standard sind 21 Zeichen aus einem URL-sicheren Alphabet mit 64 Zeichen (A–Z a–z 0–9 _ -). Das ergibt 126 Zufallsbits – ähnlich einer UUID v4 (122 Bit), aber mit weniger Zeichen. Sie können hexadezimal, nur Ziffern, Kleinbuchstaben und Ziffern, alphanumerisch, eine Auswahl ohne verwechselbare Zeichen (kein 0/O, 1/l/I, 5/S …) für Codes, die Menschen abtippen, oder ein eigenes Alphabet mit 2 bis 256 Zeichen wählen. Doppelte Zeichen in einem eigenen Alphabet werden entfernt, weil sie manche Zeichen wahrscheinlicher machen würden.
Jedes Zeichen wird mit crypto.getRandomValues und Verwerfungsmethode (Rejection Sampling) gezogen, es gibt also keine Modulo-Verzerrung.
Kollisionswahrscheinlichkeit
Das Feld Kollisionswahrscheinlichkeit wendet die Geburtstagsschranke an. Bei einem Alphabet der Größe A und einer Länge L gibt es N = A^L mögliche IDs. Nach k IDs liegt die Wahrscheinlichkeit für mindestens ein Duplikat bei etwa 1 − e^(−k²/2N); ein Risiko von 1 % ist also nach k ≈ √(2N · ln(1/0,99)) IDs erreicht. Geben Sie die Erzeugten IDs pro Stunde ein, um zu sehen, wie lange das dauert. Mit den Standardeinstellungen und 1.000 IDs pro Stunde dauert es rund 149 Milliarden Jahre bis zu einem Risiko von 1 %, mit 8 Hexadezimalzeichen reichen dagegen schon etwa 9.300 IDs.
Häufige Fragen
ULID oder UUID?
Beide haben 128 Bit. Eine ULID ist kürzer (26 statt 36 Zeichen) und nach Zeit sortierbar. UUID Version 7 bietet inzwischen dieselbe zeitliche Sortierung im Standard-UUID-Format, das Datenbanken oft nativ speichern. Nehmen Sie UUID v7, wenn Ihr Stack sie unterstützt, und ULID, wenn Sie eine kompakte, lesbare Zeichenkette möchten.
Sind ULIDs und Nano IDs sicher genug für Tokens?
Nano IDs mit Standardalphabet und -länge haben 126 Zufallsbits aus einem kryptografischen Generator – genug für nicht erratbare Links. ULIDs haben nur 80 Zufallsbits, und im monotonen Modus unterscheiden sich aufeinanderfolgende IDs um eins. Verwenden Sie ULIDs deshalb nicht als Geheimnisse.
Kann ich eine Nano ID kürzen?
Ja, aber das Kollisionsrisiko steigt sehr schnell. Prüfen Sie den Wert IDs für 1 % Duplikatrisiko für Ihre Länge und Ihr Alphabet, bevor Sie sich auf eine kurze ID verlassen.
Warum lehnt der Decoder meine ULID ab?
Eine ULID muss genau 26 Zeichen lang sein, darf nur Crockford-Base32-Zeichen enthalten und muss mit 0 bis 7 beginnen (ein größeres erstes Zeichen würde 128 Bit überschreiten).
Werden die IDs gespeichert oder gesendet?
Nein. Sie werden in Ihrem Browser erzeugt und verschwinden, wenn Sie die Seite verlassen.
Ähnliche Tools
- UUID-Generator Kostenloser UUID-Generator für Version 4 und Version 7: bis zu 1.000 UUIDs auf einmal, in Großbuchstaben oder ohne Bindestriche, als .txt herunterladen.
- Passwort-Generator Kostenloser Passwort-Generator: sichere Zufallspasswörter mit 4 bis 128 Zeichen direkt im Browser erstellen. Nichts wird gespeichert oder gesendet.
- Unix-Timestamp-Umrechner Unix-Timestamps in Sekunden oder Millisekunden in lesbare Daten umrechnen – Ortszeit, UTC und ISO 8601 – und jedes Datum zurück in Epoch-Zeit verwandeln.