Generátor NanoID

Generujte hodnoty NanoID online: predvolene 21 znakov bezpečných pre URL, približne 126 bitov náhodnosti s možnosťou prispôsobiť dĺžku a abecedu.

Formát
Vygenerované ID
Pripravené. Generujte hodnoty NanoID priamo vo vašom prehliadači.

Ako sa tento identifikátor tvorí

Formát
Predvolene 21 znakov bezpečných pre URL, ktoré tvoria písmená A-Z, a-z, čísla 0-9, podčiarkovník a spojovník.
Entropia
Približne 126 bitov pri predvolenej 64-znakovej abecede a dĺžke 21 znakov.
Čas
Bez časovej pečiatky; hodnoty NanoID sú nepriehľadné (opaque), pokiaľ nevložíte vlastný význam do vlastnej abecedy.
Riziko kolízie
Riziko kolízie sa mení v závislosti od dĺžky a použitej abecedy. Predvolené nastavenie ponúka rovnakú úroveň bezpečnosti ako UUID v4.
Príklad
II8FTRC05o8X7Ga7YADnr

Vaše ID sa generujú lokálne pomocou bezpečnej náhodnosti prehliadača. Do služby BroBroGo sa nič neodosiela.

Často kladené otázky

Prečo používať NanoID?

NanoID je kratší ako UUID, je predvolene bezpečný pre použitie v URL a pri zachovaní štandardnej dĺžky a abecedy si udržiava mimoriadne vysokú náhodnosť.

Môžem zmeniť abecedu?

Áno. Stránka pre generovanie NanoID obsahuje ovládacie prvky pre dĺžku a abecedu. Menšie abecedy alebo kratšie dĺžky však zvyšujú riziko kolízie.

Čo je Nano ID a prečo ho generovať práve tu

Táto stránka generuje jedinečné identifikátory vo formáte Nano ID. Na rozdiel od UUID, ktoré má pevne danú dĺžku 36 znakov (s pomlčkami, reálne 32 hexadecimálnych znakov), alebo ULID s dĺžkou 26 znakov, ponúka Nano ID predvolenú dĺžku 21 znakov. Táto dĺžka je výrazne kratšia ako UUID, pričom si zachováva porovnateľnú odolnosť voči kolíziám. Hlavný rozdiel oproti bežným generátorom ID je v tom, že obe parametre – dĺžku aj abecedu – si môžete plne prispôsobiť. Dĺžku je možné nastaviť v rozsahu 2 až 36 znakov (sliderom, predvolene 21). Abeceda je editovateľné textové pole, ktoré štandardne obsahuje URL-bezpečné znaky. Zmena ktoréhokoľvek parametra okamžite spustí nové generovanie ID, takže výsledky vidíte v reálnom čase.

Ako nástroj funguje – vstupné parametre a pravidlá

Vstupné parametre sú štyri: formát (vždy Nano ID), počet ID, dĺžka a abeceda. Počet ID môže byť 1 až 100, dĺžka 2 až 36. Abeceda musí obsahovať aspoň 2 rôzne znaky. Ak zmeníte abecedu na jediný znak, stane sa niekoľko vecí naraz: všetky vygenerované ID sa vymažú, počet ID sa zmení na 0 a tlačidlo „Kopírovať všetky“ sa zakáže. Táto logika je zámerná – s jedným znakom nie je možné vygenerovať rôzne ID, takže nástroj predchádza chybovému stavu.

Generovanie prebieha výhradne lokálne v prehliadači pomocou crypto.getRandomValues(). Nič sa neposiela na server BroBroGo, čo je dôležité pre súkromie a bezpečnosť. Stavové správy sú štyri:

  • Ready. (nečinný stav)
  • Generated. (po úspešnom vygenerovaní)
  • Copied all! (po skopírovaní všetkých ID)
  • Alphabet needs at least 2 different characters. (chyba pri neplatnej abecede)

Každé jednotlivé ID je možné skopírovať kliknutím naň. Tlačidlo „Kopírovať všetky“ funguje len vtedy, keď je počet ID väčší ako 0. Všetky ID sú pri každej zmene parametrov okamžite regenerované. Môžete si tak vyskúšať rôzne kombinácie dĺžky a abecedy a okamžite vidieť výsledok.

Ako sa generujú ID – lokálne a bezpečne

Nano ID nepoužíva náhodné čísla z JavaScriptu (Math.random), ktoré sú predvídateľné, ale crypto.getRandomValues(). Táto metóda poskytuje kryptograficky bezpečný náhodný generátor, čo znamená, že ID sú neuhádnuteľné aj pri veľkom počte vygenerovaných hodnôt. Pretože celý proces beží v prehliadači, žiadny server nemá prístup k vygenerovaným ID – ani k ich počtu, ani k nastaveniam. Je to dôležité napríklad pri generovaní tokenov na resetovanie hesla alebo pri vytváraní unikátnych kľúčov, ktoré nesmú byť odhalené tretej strane.

Odolnosť voči kolíziám je daná dvoma faktormi: dĺžkou ID a veľkosťou abecedy. Predvolená URL-bezpečná abeceda obsahuje 64 znakov: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_. Počet možných ID pri dĺžke 21 a abecede 64 znakov je 64^21, čo je približne 1,5 × 10^38. Pre porovnanie, UUID verzie 4 (náhodné) má 2^122 možných hodnôt (približne 5,3 × 10^36). Nano ID s predvoleným nastavením teda poskytuje takmer o dva rády viac možných kombinácií ako UUID v4. Pri dĺžke 36 a rovnakej abecede je to už 64^36 ≈ 1,7 × 10^65, čo je prakticky nemožné prekonať.

Porovnanie Nano ID s UUID a ULID

Nižšie uvedená tabuľka sumarizuje kľúčové rozdiely:

Vlastnosť Nano ID UUID (verzia 4) ULID
Predvolená dĺžka 21 znakov 36 znakov (s pomlčkami) 26 znakov
Prispôsobiteľná dĺžka Áno (2–36) Nie (pevná) Nie (pevná)
Prispôsobiteľná abeceda Áno (min. 2 znaky) Nie (pevná hexadecimálna) Nie (Crockford base32)
URL-bezpečnosť Áno (predvolene znaky bez pomlčiek) Nie (obsahuje pomlčky) Áno (len veľké písmená a číslice)
Počet možných hodnôt (predvolene) 64^21 ≈ 1,5×10^38 2^122 ≈ 5,3×10^36 32^26 ≈ 2,6×10^39
Časová zložka Nie Nie (v4 je čisto náhodné) Áno (prvých 10 znakov je timestamp)

Pre webové API, QR kódy alebo databázové kľúče je dôležitá kompaktnosť. Nano ID s 21 znakmi zaberá menej miesta v URL, v databáze aj pri prenose. ULID (26 znakov) je dlhší, ale obsahuje časovú zložku, čo umožňuje zoradenie podľa času. UUID (36 znakov) je najdlhší a bez prispôsobenia abecedy nie je URL-bezpečný. Nano ID je jediné z týchto troch, ktoré umožňuje meniť dĺžku aj abecedu, čím ho môžete prispôsobiť presným požiadavkám vašej aplikácie.

Ako si zvoliť správnu dĺžku a abecedu

Pri výbere dĺžky a abecedy treba zvážiť kompromis medzi kompaktnosťou a odolnosťou voči kolíziám. Vzorec na výpočet počtu možných ID je jednoduchý: počet možností = (veľkosť abecedy)^(dĺžka). Napríklad:

  • Abeceda s 10 znakmi (číslicami 0–9) a dĺžka 6 dáva len 10^6 = 1 milión možností. Pre databázu s miliónmi záznamov by hrozila kolízia.
  • Predvolená URL-bezpečná abeceda (64 znakov) a dĺžka 10 dáva 64^10 ≈ 1,2×10^18 možností – to je už pre väčšinu aplikácií viac než dosť.
  • Maximálne nastavenie: 36 znakov a 64 znakov abecedy dáva 64^36 ≈ 1,7×10^65, čo je prakticky nekonečné.

Praktické odporúčania:

  • Pre krátke odkazy (napr. URL skracovač) stačí dĺžka 6–8 znakov a URL-bezpečná abeceda. Ak používate len číslice, dĺžka musí byť dlhšia.
  • Pre databázové primárne kľúče je bezpečná dĺžka 12–16 znakov s URL-bezpečnou abecedou. Vyhnete sa tak kolíziám aj pri miliardách záznamov.
  • Pre tokeny na resetovanie hesla alebo iné bezpečnostné tokeny použite dĺžku aspoň 21 znakov. Kryptografická náhodnosť v prehliadači je postačujúca.
  • Vlastnú abecedu môžete upraviť tak, aby neobsahovala znaky, ktoré sa ľahko zamieňajú (napr. veľké O a nula, malé l a jednotka). Stačí z textového poľa odstrániť problematické znaky.

Dôležité upozornenie: Ak abecedu zmenšíte na veľmi malý počet znakov, kolízna odolnosť rapídne klesá. Pri dĺžke 2 a abecede len s 2 znakmi máte len 4 možné ID. To je vhodné len na demonštráciu, nie do produkcie.

Časté chyby a hraničné prípady

Najčastejšia chyba: zmena abecedy na jediný znak. Ako bolo uvedené, nástroj na to reaguje vymazaním výsledkov a zakázaním tlačidla „Kopírovať všetky“. Prečo to nie je povolené? Pretože s jedným znakom by všetky ID boli rovnaké – napríklad ak abeceda obsahuje len „A“, vygenerovalo by sa ID „AAAA...“ (podľa dĺžky). Nástroj by produkoval identické ID, čo by bolo zavádzajúce. Preto je nastavené pravidlo aspoň 2 rôzne znaky.

Druhá častá chyba: príliš krátka dĺžka v kombinácii s malou abecedou. Dĺžka 2 a 3-znaková abeceda dáva len 9 možných ID. Ak generujete 10 ID, kolízia je prakticky istá. Nástroj vás na túto skutočnosť neupozorní, preto je zodpovednosť na vás. Vždy zvážte, koľko ID plánujete vygenerovať a akú dĺžku (a abecedu) na to potrebujete.

Tretia chyba: zabudnutie na URL-bezpečnosť. Predvolená abeceda je URL-bezpečná, ale ak ju zmeníte napríklad na všetky ASCII znaky vrátane medzier, lomítok, bodiek atď., ID môže obsahovať znaky, ktoré v URL vyžadujú percentuálne kódovanie. Tým sa ID predĺži a stratí zmysel. Ak potrebujete ID do URL, vždy nechajte predvolenú abecedu alebo ju upravte len na URL-bezpečné znaky.

Štvrtá chyba: domnienka, že Nano ID je vhodné pre číselné typy. Niektoré databázové systémy (napr. MySQL) nepracujú dobre s reťazcami ako primárnymi kľúčmi. Preto je vhodné zvoliť abecedu len z číslic, prípadne použiť celočíselné ID. Nano ID s číselnou abecedou (10 znakov) a dĺžkou 12 generuje 10^12 = 1 bilión možností, čo je pre väčšinu aplikácií dostačujúce.

FAQ

Môžem použiť Nano ID pre primárne kľúče v databáze? Áno, je to bežná prax. Výhody: kratšie UUID (21 oproti 36), URL-bezpečnosť, možnosť prispôsobiť abecedu (napr. len číslice). Nevýhody: reťazcový typ, ktorý môže byť pomalší pri indexovaní ako celé čísla.

Je Nano ID bezpečné pre tokeny na resetovanie hesla? Áno, ak je dĺžka aspoň 21 znakov a používa sa URL-bezpečná abeceda. Generovanie pomocou crypto.getRandomValues() je kryptograficky bezpečné. Dôležité: token nesmie byť predvídateľný, a toto je splnené.

Ako sa Nano ID líši od UUID v4? Nano ID je kratšie, prispôsobiteľné a URL-bezpečné. UUID v4 má pevnú dĺžku 36 znakov a neobsahuje URL-bezpečné znaky vždy. Nano ID s predvoleným nastavením má viac možných kombinácií (64^21 ≈ 1,5×10^38) ako UUID v4 (2^122 ≈ 5,3×10^36).

Prečo je predvolená dĺžka 21 znakov? Autor Nano ID, Andrey Sitnik, zvolil 21 znakov pretože to je minimálna dĺžka, ktorá pri URL-bezpečnej abecede (64 znakov) poskytuje odolnosť voči kolíziám porovnateľnú s UUID. Zároveň je dostatočne krátka na to, aby bola praktická v URL a databázach.

Môžem generovať len číslice? Áno, stačí do textového poľa abecedy zadať 0123456789 (prípadne bez nuly). Pri číselnej abecede odporúčame dĺžku aspoň 12–15 znakov, aby ste predišli kolíziám pri veľkom počte ID.

Je generovanie naozaj len v prehliadači? Áno. Celý JavaScriptový kód beží lokálne vo vašom prehliadači. Nič sa neposiela na server BroBroGo. Môžete si to overiť vypnutím internetového pripojenia – nástroj bude fungovať naďalej.