Generator ULID i Nano ID
Generuj hurtowo ULID (także monotoniczne) lub Nano ID z własnym alfabetem i długością, dekoduj znacznik czasu ULID i sprawdzaj ryzyko kolizji.
Prawdopodobieństwo kolizji
- Rozmiar alfabetu
- —
- Entropia jednego ID
- —
- Możliwe identyfikatory
- —
- Liczba ID dla 1% szansy na duplikat
- —
- Czas do osiągnięcia ryzyka 1%
- —
Dekoduj ULID
- Znacznik czasu (UTC, ISO 8601)
- Lokalna data i godzina
- Czas Unix (ms)
- Część losowa (80 bitów, hex)
Jak generować ULID lub Nano ID
- W polu Rodzaj identyfikatora wybierz ULID (sortowalny) lub Nano ID (krótki).
- Ustaw Ile (od 1 do 1000). Dziesięć identyfikatorów powstaje od razu po wczytaniu strony.
- Dla ULID zostaw zaznaczone Monotoniczny (ściśle rosnący), aby identyfikatory utworzone w tej samej milisekundzie nadal sortowały się po kolei, i zaznacz Małe litery, jeśli twój system tak woli.
- Dla Nano ID wybierz Alfabet (albo Własny… i wpisz własne znaki) oraz Długość.
- Kliknij Generuj, a potem Kopiuj listę lub Pobierz ją jako plik .txt (jeden identyfikator w linii).
Aby odczytać datę ukrytą w ULID, wklej go w sekcji Dekoduj ULID albo kliknij Dekoduj pierwszy ID. Narzędzie pokaże znacznik czasu w UTC (ISO 8601), w twoim czasie lokalnym, jako milisekundy Unix oraz 80-bitową część losową w hex.
Czym jest ULID?
ULID (Universally Unique Lexicographically Sortable Identifier) to 128-bitowy identyfikator zapisywany jako 26 znaków Crockford Base32, np. 01ARZ3NDEKTSV4RRFFQ69G5FAV. Pierwsze 10 znaków koduje 48-bitowy znacznik czasu w milisekundach (wystarczy do roku 10889), a ostatnie 16 znaków to 80 losowych bitów. Crockford Base32 pomija I, L, O i U, aby uniknąć pomyłek, a dekodowanie nie rozróżnia wielkości liter.
Ponieważ czas jest na początku, ULID sortują się alfabetycznie w kolejności utworzenia. To czyni je dobrymi kluczami głównymi: nowe wiersze trafiają na koniec indeksu B-drzewa, zamiast rozpraszać się jak losowe UUID, a sortować można po ID zamiast po osobnej kolumnie z datą.
Tryb monotoniczny. W obrębie jednej milisekundy losowe ULID sortowałyby się w przypadkowej kolejności. Z opcją monotoniczną narzędzie postępuje zgodnie ze specyfikacją ULID: gdy w tej samej milisekundzie powstaje kilka identyfikatorów, zachowuje znacznik czasu i dodaje 1 do poprzedniej części losowej. Jeśli zegar cofnie się, zachowuje ostatni znacznik czasu, więc sekwencja nigdy nie maleje.
Pamiętaj, że ULID zdradza moment swojego utworzenia. Nie używaj go tam, gdzie ta informacja jest wrażliwa.
Czym jest Nano ID?
Nano ID to zwięzły losowy identyfikator. Domyślnie ma 21 znaków z 64-znakowego alfabetu bezpiecznego w URL (A–Z a–z 0–9 _ -), co daje 126 losowych bitów – podobnie jak UUID v4 (122 bity), ale w mniejszej liczbie znaków. Możesz wybrać alfabet szesnastkowy, same cyfry, małe litery i cyfry, alfanumeryczny, zestaw bez podobnych do siebie znaków (bez 0/O, 1/l/I, 5/S…) dla kodów przepisywanych przez ludzi albo własny alfabet od 2 do 256 znaków. Powtarzające się znaki we własnym alfabecie są usuwane, bo zwiększałyby prawdopodobieństwo niektórych znaków.
Każdy znak jest losowany przez crypto.getRandomValues metodą odrzucania (rejection sampling), więc nie ma obciążenia wynikającego z operacji modulo.
Prawdopodobieństwo kolizji
Panel Prawdopodobieństwo kolizji stosuje ograniczenie z paradoksu urodzin. Przy alfabecie o rozmiarze A i długości L istnieje N = A^L możliwych identyfikatorów. Po wygenerowaniu k identyfikatorów szansa na co najmniej jeden duplikat wynosi około 1 − e^(−k²/2N), więc ryzyko 1% pojawia się po k ≈ √(2N · ln(1/0,99)) identyfikatorach. Wpisz wartość w polu Identyfikatory generowane na godzinę, aby zobaczyć, ile by to trwało. Przy ustawieniach domyślnych i 1000 identyfikatorach na godzinę ryzyko 1% osiągniesz po ok. 149 miliardach lat; przy 8 znakach szesnastkowych – już po ok. 9300 identyfikatorach.
Najczęściej zadawane pytania
ULID czy UUID?
Oba mają 128 bitów. ULID jest krótszy w zapisie (26 znaków zamiast 36) i sortuje się według czasu. UUID w wersji 7 oferuje teraz to samo uporządkowanie czasowe w standardowym formacie UUID, który bazy danych często przechowują natywnie. Wybierz UUID v7, jeśli twój stos technologiczny go obsługuje, a ULID, jeśli chcesz zwięzłego, czytelnego ciągu.
Czy ULID i Nano ID są wystarczająco bezpieczne jako tokeny?
Nano ID z domyślnym alfabetem i długością ma 126 losowych bitów z generatora kryptograficznego, co wystarcza dla linków niemożliwych do odgadnięcia. ULID ma tylko 80 losowych bitów, a w trybie monotonicznym kolejne identyfikatory różnią się o jeden, więc nie używaj ULID jako sekretów.
Czy mogę skrócić Nano ID?
Tak, ale ryzyko kolizji rośnie bardzo szybko. Zanim zaczniesz polegać na krótkim identyfikatorze, sprawdź wartość Liczba ID dla 1% szansy na duplikat dla swojej długości i alfabetu.
Dlaczego dekoder odrzuca mój ULID?
ULID musi mieć dokładnie 26 znaków, składać się wyłącznie ze znaków Crockford Base32 i zaczynać się od cyfry od 0 do 7 (większy pierwszy znak przekroczyłby 128 bitów).
Czy identyfikatory są gdzieś zapisywane lub wysyłane?
Nie. Powstają w twojej przeglądarce i znikają, gdy opuścisz stronę.
Podobne narzędzia
- Generator UUID Darmowy generator UUID w wersji 4 i 7. Twórz do 1000 identyfikatorów naraz, wielkimi literami lub bez myślników, i kopiuj albo pobieraj je jako plik .txt.
- Generator haseł Darmowy generator haseł, który tworzy silne, losowe hasła od 4 do 128 znaków w twojej przeglądarce. Nic nie jest zapisywane ani wysyłane.
- Konwerter timestampów Unix Zamieniaj timestampy Unix w sekundach lub milisekundach na czytelne daty w czasie lokalnym, UTC i ISO 8601 oraz dowolną datę z powrotem na czas epoch.