ULID- en Nano ID-generator
Genereer ULID’s (ook monotoon) of Nano ID’s met eigen alfabet en lengte, in bulk, decodeer de tijdstempel van een ULID en bekijk de kans op botsingen.
Kans op een botsing
- Grootte van het alfabet
- —
- Entropie per ID
- —
- Mogelijke ID’s
- —
- ID’s voor 1% kans op een duplicaat
- —
- Tijd tot dat risico van 1%
- —
Een ULID decoderen
- Tijdstempel (UTC, ISO 8601)
- Lokale datum en tijd
- Unix-tijd (ms)
- Willekeurig deel (80 bits, hex)
Zo genereer je ULID’s of Nano ID’s
- Kies onder Soort ID voor ULID (sorteerbaar) of Nano ID (kort).
- Stel het Aantal in (1 tot 1.000). Zodra de pagina geladen is, worden er al tien ID’s gegenereerd.
- Laat bij ULID’s Monotoon (strikt oplopend) aangevinkt, zodat ID’s die in dezelfde milliseconde zijn gemaakt toch in de juiste volgorde sorteren, en vink Kleine letters aan als je systeem dat liever heeft.
- Kies bij Nano ID’s een Alfabet (of Eigen alfabet… en typ je eigen tekens) en een Lengte.
- Klik op Genereren en daarna op Kopiëren voor de lijst of op Downloaden voor een .txt-bestand (één ID per regel).
Wil je de datum lezen die in een ULID verborgen zit, plak hem dan onder Een ULID decoderen of klik op De eerste ID decoderen. De tool toont de tijdstempel in UTC (ISO 8601), in je lokale tijd en als Unix-milliseconden, plus het willekeurige deel van 80 bits in hex.
Wat is een ULID?
Een ULID (Universally Unique Lexicographically Sortable Identifier) is een identifier van 128 bits, geschreven als 26 tekens Crockford Base32, bijvoorbeeld 01ARZ3NDEKTSV4RRFFQ69G5FAV. De eerste 10 tekens bevatten een tijdstempel van 48 bits in milliseconden (genoeg tot het jaar 10889); de laatste 16 tekens zijn 80 willekeurige bits. Crockford Base32 laat I, L, O en U weg om verwarring te voorkomen, en bij het decoderen maakt hoofdletter of kleine letter niet uit.
Omdat de tijd vooraan staat, sorteren ULID’s alfabetisch in de volgorde waarin ze zijn gemaakt. Dat maakt ze geschikt als primaire sleutel: nieuwe rijen komen achteraan in een B-tree-index terecht in plaats van verspreid zoals bij willekeurige UUID’s, en je kunt op ID sorteren in plaats van op een aparte datumkolom.
Monotone modus. Binnen één milliseconde zouden willekeurige ULID’s in willekeurige volgorde sorteren. Met de monotone optie volgt de tool de ULID-specificatie: worden er meerdere ID’s in dezelfde milliseconde gemaakt, dan blijft de tijdstempel gelijk en wordt het vorige willekeurige deel met 1 verhoogd. Loopt de klok terug, dan houdt de tool de laatste tijdstempel aan, zodat de reeks nooit daalt.
Bedenk wel dat een ULID verraadt wanneer hij is gemaakt. Gebruik er geen waar die informatie gevoelig is.
Wat is een Nano ID?
Nano ID is een compacte, willekeurige identifier. Standaard is hij 21 tekens lang, uit een URL-veilig alfabet van 64 tekens (A–Z a–z 0–9 _ -), wat 126 willekeurige bits geeft: vergelijkbaar met een UUID v4 (122 bits), maar met minder tekens. Je kunt kiezen voor hexadecimaal, alleen cijfers, kleine letters en cijfers, alfanumeriek, een set zonder lijkende tekens (geen 0/O, 1/l/I, 5/S…) voor codes die mensen overtypen, of je eigen alfabet van 2 tot 256 tekens. Dubbele tekens in een eigen alfabet worden verwijderd, omdat ze sommige tekens waarschijnlijker zouden maken.
Elk teken wordt getrokken met crypto.getRandomValues en rejection sampling, dus er is geen modulo-bias.
Kans op een botsing
Het paneel Kans op een botsing past de verjaardagsgrens toe. Met een alfabet van grootte A en een lengte L zijn er N = A^L mogelijke ID’s. Na k ID’s is de kans op minstens één duplicaat ongeveer 1 − e^(−k²/2N), dus een risico van 1% wordt bereikt na k ≈ √(2N · ln(1/0,99)) ID’s. Vul de Gegenereerde ID’s per uur in om te zien hoelang dat zou duren. Met de standaardinstellingen en 1.000 ID’s per uur duurt het ongeveer 149 miljard jaar voordat het risico 1% is; met 8 hexadecimale tekens is dat al na zo’n 9.300 ID’s het geval.
Veelgestelde vragen
ULID of UUID?
Beide zijn 128 bits. Een ULID is korter om te schrijven (26 tekens in plaats van 36) en sorteert op tijd. UUID versie 7 biedt nu dezelfde tijdsordening in het standaard-UUID-formaat, dat databases vaak native opslaan. Kies UUID v7 als je stack het ondersteunt, en ULID als je een compacte, leesbare string wilt.
Zijn ULID’s en Nano ID’s veilig genoeg voor tokens?
Nano ID’s met het standaardalfabet en de standaardlengte hebben 126 willekeurige bits uit een cryptografische generator, genoeg voor links die niet te raden zijn. ULID’s hebben maar 80 willekeurige bits, en in de monotone modus verschillen opeenvolgende ID’s één, dus gebruik ULID’s niet als geheim.
Kan ik een Nano ID korter maken?
Ja, maar de kans op botsingen groeit dan heel snel. Controleer de waarde ID’s voor 1% kans op een duplicaat voor je lengte en alfabet voordat je op een korte ID vertrouwt.
Waarom weigert de decoder mijn ULID?
Een ULID moet precies 26 tekens hebben, alleen Crockford Base32-tekens gebruiken en beginnen met 0 tot 7 (een groter eerste teken zou boven de 128 bits uitkomen).
Worden de ID’s ergens opgeslagen of naartoe gestuurd?
Nee. Ze worden in je browser gegenereerd en verdwijnen als je de pagina verlaat.
Vergelijkbare tools
- UUID-generator Gratis UUID-generator voor UUID’s van versie 4 en versie 7. Maak er tot 1.000 tegelijk, in hoofdletters of zonder streepjes, en kopieer of download als .txt.
- Wachtwoord generator Gratis wachtwoord generator die in je browser sterke, willekeurige wachtwoorden van 4 tot 128 tekens maakt. Er wordt niets opgeslagen of verzonden.
- Unix-timestamp omrekenen Reken Unix-timestamps in seconden of milliseconden om naar een leesbare datum in lokale tijd, UTC en ISO 8601, en zet elke datum terug om naar epochtijd.