Generator NanoID
Krótkie, losowe i URL-safe identyfikatory z podaną entropią w bitach.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator NanoID — krótkie losowe identyfikatory bezpieczne w adresie URL
Generator NanoID tworzy krótkie identyfikatory losowane kryptograficznym generatorem systemu. Ustawiasz długość, liczbę sztuk i zestaw znaków, a narzędzie pokazuje gotowe identyfikatory razem z entropią w bitach. Domyślne 21 znaków z alfabetu URL-safe daje około 126 bitów losowości, czyli więcej niż UUID v4, przy zapisie krótszym o 15 znaków.
Czym jest NanoID i skąd bierze się 21 znaków
NanoID nie jest standardem opisanym w dokumencie RFC, tylko konwencją: bierzemy alfabet, losujemy z niego znaki i sklejamy ciąg o zadanej długości. Domyślne 21 znaków z 64-znakowego zestawu A-Z a-z 0-9 _ - wybrano tak, aby entropia przebiła UUID v4: 21 znaków po 6 bitów to 126 bitów, wobec 122 bitów losowych w UUID v4, gdzie sześć bitów zajmują pola wersji i wariantu.
Entropia, czyli ile bitów naprawdę dostajesz
Każdy znak wnosi tyle bitów, ile wynosi logarytm dwójkowy rozmiaru alfabetu: dla zestawu URL-safe dokładnie 6, dla alfanumerycznego około 5,95, dla małych liter z cyframi około 5,17, a dla szesnastkowego równe 4. Narzędzie liczy to za Ciebie i wypisuje wynik nad listą identyfikatorów. Praktyczny próg: identyfikator pełniący funkcję sekretu w publicznym adresie URL powinien mieć co najmniej 120 bitów, a taki, który zapewnia tylko unikalność rekordu, zmieści się w 60–80 bitach.
NanoID, UUID v4, ULID i CUID2 — czym się różnią
| Format | Długość zapisu | Alfabet | Sortowalny po czasie | Losowość |
|---|---|---|---|---|
| NanoID (21) | 21 znaków | 64 znaki: A-Z, a-z, 0-9, _, - | nie | 126 bitów |
| UUID v4 | 36 znaków z myślnikami | 16 znaków hex plus myślniki | nie | 122 bity |
| ULID | 26 znaków | 32 znaki, Crockford base32 | tak, 48-bitowy znacznik czasu | 80 bitów |
| CUID2 (24) | 24 znaki | litery i cyfry | nie | ok. 120 bitów |
Jeśli potrzebujesz identyfikatora zgodnego ze standardem, bo wymaga tego typ kolumny w bazie albo cudze API, sięgnij po generator UUID. Jeżeli identyfikatory mają dać się sortować w kolejności powstawania, właściwym wyborem jest generator ULID.
Jak wygenerować identyfikatory krok po kroku
- Ustaw długość od 4 do 128 znaków. Domyślne 21 odpowiada klasycznemu NanoID.
- Podaj, ile sztuk chcesz otrzymać — od 1 do 200. Narzędzie pilnuje, żeby na jednej liście nie powtórzył się ten sam identyfikator.
- Wybierz alfabet. Liczba w nawiasie to rozmiar zestawu, bo razem z długością decyduje on o entropii.
- Kliknij Generuj, sprawdź entropię nad listą i skopiuj wszystko jednym przyciskiem.
Który alfabet wybrać
Zestaw URL-safe zawiera tylko znaki, które nie wymagają kodowania procentowego w adresie ani w nazwie pliku. Alfanumeryczny odrzuca podkreślenie i myślnik, więc identyfikator przejdzie przez systemy traktujące myślnik jako separator. Małe litery z cyframi pasują do nazw poddomen i wszędzie tam, gdzie wielkość liter nie jest rozróżniana. Szesnastkowy przydaje się przy integracjach oczekujących wyłącznie cyfr i liter od a do f.
Zestaw bez znaków mylących pomija zero razem z literą O oraz jedynkę razem z I i L — pary, które ludzie mylą przy przepisywaniu z ekranu albo z wydruku. Zostaje 31 znaków, około 4,95 bita na znak, więc taki kod musi być trochę dłuższy, żeby dać tę samą entropię. To dobry wybór na kody odbioru i numery zgłoszeń dyktowane przez telefon.
Kiedy realnie grozi kolizja
Kolizje rządzą się paradoksem urodzin: prawdopodobieństwo trafienia dwóch identycznych wartości rośnie z kwadratem ich liczby, a nie liniowo. Przy 126 bitach entropii i miliardzie wygenerowanych identyfikatorów szansa na jakąkolwiek kolizję jest mniejsza niż jedna na 10²⁰. W drugą stronę ta sama arytmetyka bywa bezlitosna: cztery znaki szesnastkowe to zaledwie 65 536 możliwości, więc już przy dwustu sztukach kolizja jest bardziej prawdopodobna niż jej brak. Dlatego generator odrzuca powtórzenia w obrębie jednej listy, a gdy wybrana długość i alfabet nie dają tylu różnych wartości, mówi o tym wprost, zamiast po cichu skracać wynik.
Dlaczego NanoID nie sortuje się po czasie
W identyfikatorze nie ma znacznika czasu ani licznika — wszystkie znaki są losowe. Sortowanie po takim kluczu daje kolejność alfabetyczną, bez związku z kolejnością powstawania rekordów. Jeżeli klucz główny ma być zarazem naturalnym porządkiem danych, wybierz ULID albo UUID v7. NanoID świeci tam, gdzie identyfikator ma być krótki i nieodgadywalny: w publicznych linkach do udostępnianych zasobów, w kodach zaproszeń, w nazwach plików w magazynie obiektowym.
Najczęściej zadawane pytania
Czy 21 znaków to nie za mało?
Nie. Przy 64-znakowym alfabecie 21 znaków daje 126 bitów entropii, o cztery bity więcej niż UUID v4. Żeby ryzyko kolizji dobiło do jednego procenta, trzeba by wygenerować rzędu 10¹⁸ identyfikatorów.
Czy identyfikatory powstają w przeglądarce?
Nie. Losowanie odbywa się na serwerze, funkcją random_int() PHP, która pobiera bajty z systemowego generatora kryptograficznego. Wynik wraca do przeglądarki i nie jest nigdzie zapisywany — w historii narzędzi ląduje wyłącznie użyty alfabet i liczba sztuk, bez samych identyfikatorów.
Czy NanoID nadaje się na klucz główny w bazie danych?
Tak, przy dwóch zastrzeżeniach. Trzymaj go w kolumnie o stałej długości, na przykład CHAR(21) z porównywaniem binarnym, żeby indeks nie puchł. I pamiętaj, że losowy klucz rozprasza wstawienia po całym indeksie, co przy setkach milionów rekordów obniża wydajność zapisu. Typowe rozwiązanie to rosnący klucz techniczny plus NanoID jako publiczny identyfikator w adresach URL.
Czy mogę użyć NanoID jako hasła?
Nie polecamy. Alfabet URL-safe nie zawiera znaków specjalnych, więc identyfikator nie przejdzie części reguł złożoności. Do kont użytkowników użyj generatora haseł, który świadomie miesza wielkie i małe litery, cyfry oraz symbole.
Jak dobrać długość identyfikatora do zastosowania?
Policz, ile wartości powstanie w całym życiu systemu, i dodaj zapas na paradoks urodzin. Dla identyfikatorów wewnętrznych w skali milionów rekordów wystarcza 12 znaków URL-safe, czyli 72 bity. Dla publicznych linków zostań przy 21 znakach, a dla jednorazowych tokenów resetu hasła weź 32 znaki i krótki termin ważności.