Generátor NanoID

Generujte hodnoty NanoID online: standardně 21 znaků bezpečných pro URL, přibližně 126 bitů náhodnosti, s možností vlastní délky a abecedy.

Formát
Vygenerovaná ID
Připraveno. Generujte hodnoty NanoID přímo ve svém prohlížeči.

Jak se toto ID sestavuje

Formát
Standardně 21 znaků bezpečných pro URL (A-Z, a-z, 0-9, podtržítko a spojovník).
Entropie
Přibližně 126 bitů při výchozí abecedě o 64 znacích a délce 21 znaků.
Čas
Neobsahuje časové razítko; hodnoty NanoID jsou neprůhledné, pokud nedáte význam vlastní abecedě.
Riziko kolize
Riziko kolize se mění s délkou a použitou abecedou. Výchozí nastavení nabízí stejnou úroveň praktické bezpečnosti jako UUID v4.
Příklad
57_5382vUeXWH88_aB2Ml

Vaše ID se generují lokálně pomocí silné náhodnosti v prohlížeči. Do služby BroBroGo se nic neposílá.

Časté dotazy

Proč používat NanoID?

NanoID je kratší než UUID, je standardně bezpečné pro použití v URL a při zachování výchozí délky a abecedy si udržuje vysokou míru náhodnosti.

Mohu změnit abecedu?

Ano. Na vyhrazené stránce pro NanoID jsou k dispozici ovládací prvky pro délku a abecedu. Menší abecedy nebo kratší délky však zvyšují riziko kolize.

Generátor Nano ID: Proč je 21 znaků lepších než 36 a jak si ho přizpůsobit

Tento nástroj generuje unikátní identifikátory ve formátu Nano ID. Na rozdíl od UUID (36 znaků) nebo ULID (26 znaků) používá Nano ID ve výchozím nastavení pouze 21 znaků, přičemž nabízí srovnatelnou odolnost proti kolizím. Hlavní rozdíl oproti pevným formátům je úplná přizpůsobitelnost: délku identifikátoru nastavíte v rozmezí od 2 do 36 znaků, abecedu povolených znaků si definujete sami. Změna libovolného parametru okamžitě regeneruje všechny ID. Generování probíhá čistě lokálně v prohlížeči pomocí crypto.getRandomValues, žádná data neopouštějí váš počítač.

Parametry a jejich chování

Nástroj nabízí tři vstupní parametry, které společně určují výsledné ID:

  • Počet ID – číselná hodnota od 1 do 100. Nástroj vygeneruje přesně tolik unikátních identifikátorů, kolik zadáte.
  • Délka – slider s výchozí hodnotou 21, rozsah 2–36. Každý posuvník změní délku všech právě zobrazených ID.
  • Abeceda – editovatelné textové pole, ve výchozím stavu obsahuje URL‑bezpečné znaky (písmena A–Z, a–z, číslice 0–9 a pomlčku -). Musí obsahovat alespoň 2 různé znaky.

Změna libovolného parametru – ať už posunutím slideru, přepsáním abecedy nebo úpravou počtu – automaticky spustí nové generování. Není potřeba mačkat žádné tlačítko „Generovat“. Stavové hlášky informují o průběhu: „Připraveno.“ (výchozí stav), „Vygenerováno.“ (po úspěšném vygenerování), „Zkopírováno vše!“ (po hromadném zkopírování). Pokud je abeceda neplatná, zobrazí se chybová hláška: „Abeceda musí obsahovat alespoň 2 různé znaky.“ a výsledky se vymažou.

Proč je výchozí délka 21 znaků a co se stane, když ji změníte

Autor Nano ID zvolil výchozí délku 21 znaků jako kompromis mezi délkou identifikátoru a pravděpodobností kolize. Při použití výchozí abecedy (64 URL‑bezpečných znaků) a délky 21 znaků je počet možných kombinací 64²¹, což je zhruba 1,3 × 10³⁸. Pro srovnání: UUID verze 4 (RFC 4122) má 122 bitů náhodných dat, tedy 2¹²² možností – přibližně 5,3 × 10³⁶. Nano ID s 21 znaky tedy nabízí větší prostor než běžné UUID, přitom je o 15 znaků kratší.

Zkrácení délky snižuje počet možných kombinací a zvyšuje riziko kolize. Pokud například zvolíte délku 10 znaků a stejnou abecedu (64 znaků), máte 64¹⁰ ≈ 1,15 × 10¹⁸ možností – to je stále obrovské číslo, ale pro systémy s miliardami záznamů už nemusí být bezpečné. Naopak prodloužení na 36 znaků poskytne 64³⁶ ≈ 1,0 × 10⁶⁵ kombinací, což je zbytečné pro drtivou většinu aplikací a pouze zvětšuje velikost řetězce.

Parametr délky je přizpůsobitelný proto, že různé scénáře vyžadují různé kompromisy mezi délkou a kolizní odolností. QR kódy, URL zkracovače nebo tokeny pro e‑mailové potvrzení často vyžadují co nejkratší ID, zatímco databázové primární klíče snesou delší identifikátory výměnou za vyšší bezpečnost.

Abeceda: proč musí mít alespoň 2 znaky a jak ji využít

Editovatelné pole abecedy je výchozí výhodou Nano ID oproti UUID. Můžete omezit znaky pouze na číslice (např. 0123456789), pouze na velká písmena bez nejednoznačných znaků (např. ABCDEFGHJKLMNPQRSTUVWXYZ), nebo naopak použít všechna písmena a číslice včetně speciálních znaků.

Abeceda musí obsahovat alespoň 2 různé znaky. Pokud ji zúžíte na jediný znak (např. A), nástroj nemůže vygenerovat unikátní ID – každé ID by vypadalo stejně (např. AAAA...). V takovém případě se výsledky vymažou, počet ID se nastaví na 0 a tlačítko „Kopírovat vše“ se deaktivuje. Tato hraniční situace je ošetřena explicitně, protože jinak by generátor produkoval nekonečnou smyčku shodných řetězců.

Velikost abecedy přímo ovlivňuje počet možných ID při dané délce. Vzorec je jednoduchý: počet možných ID = (velikost abecedy)^(délka). Pokud zvolíte abecedu o 10 znacích a délku 5, máte 10⁵ = 100 000 možných ID. Pokud stejnou abecedu zkombinujete s délkou 8, máte 10⁸ = 100 000 000 možností. Při výběru abecedy pro konkrétní aplikaci vždy spočítejte, zda je tento prostor dostatečný pro očekávaný počet záznamů a tolerovatelné riziko kolize.

Jak probíhá generování a proč je bezpečné

Generátor používá JavaScriptové API crypto.getRandomValues, které v prohlížeči zajišťuje kryptograficky bezpečný zdroj náhodných dat. Tento přístup je zásadní pro ID, která slouží jako tokeny, session klíče nebo jiné bezpečnostní prvky. Na rozdíl od Math.random() poskytuje crypto.getRandomValues skutečně nepředvídatelné hodnoty, které nelze spočítat ani odhadnout.

Veškeré zpracování probíhá lokálně v prohlížeči – ID se nikam neodesílají, neukládají na server a nejsou sdílena s třetími stranami. To je důležité pro scénáře, kde je vyžadováno soukromí nebo kde by odeslání ID na server představovalo bezpečnostní riziko (např. při generování resetovacích tokenů).

Algoritmus pro generování konkrétního ID funguje následovně: pro každý znak ID se vygeneruje náhodné číslo v rozsahu 0 až (velikost abecedy - 1), a poté se vybere odpovídající znak z abecedy. Tento proces se opakuje (délka)krát pro každé ID a (počet)krát pro všechny ID. Všechna ID jsou unikátní – generátor kontroluje, že se neopakují.

Srovnání s UUID a ULID

Formát Výchozí délka Znaky Počet možných kombinací (výchozí) Algoritmus
Nano ID 21 URL‑bezpečné (64) 64²¹ ≈ 1,3 × 10³⁸ Náhodný výběr z abecedy
UUID (v4) 36 hexadecimální (16) + pomlčky 2¹²² ≈ 5,3 × 10³⁶ Náhodná 122‑bitová hodnota
ULID 26 base32 (32) 32²⁶ ≈ 1,0 × 10³⁹ Časová značka + náhodná část

Nano ID je kratší než UUID, ale nabízí větší kombinatorický prostor. ULID je ještě o něco větší, ale obsahuje časovou složku, což ho činí předvídatelným v čase (není vhodné pro tokeny, ale pro primární klíče s řazením). Nano ID je čistě náhodné, tedy vhodné pro bezpečnostní účely.

Kdy Nano ID použít – typické scénáře

  • URL zkracovače: 21 znaků je přijatelná délka pro QR kódy i sdílené odkazy. Můžete délku snížit na 10–12 znaků, pokud nečekáte miliardy unikátních odkazů.
  • Webové tokeny: resetovací odkazy, potvrzovací e‑maily, session klíče – kryptograficky bezpečné, lokální generování neexponuje data.
  • Databázové primární klíče: kratší než UUID (8–16 bytů v binární podobě oproti 16 bytům UUID), snazší indexování a ukládání. Umožňují volbu abecedy bez nejednoznačných znaků (např. bez 1, l, I).
  • Identifikátory zboží, objednávek nebo účtenek: možnost omezit se jen na číslice nebo velká písmena pro snadné čtení a ruční zadávání.

FAQ k Nano ID generátoru

Proč je výchozí délka Nano ID 21?

21 znaků poskytuje kombinatorický prostor větší než UUID (verze 4), přitom je o 15 znaků kratší. Je to empiricky nalezený kompromis mezi krátkým identifikátorem a minimálním rizikem kolize při miliardách ID.

Mohu použít pouze číslice jako abecedu?

Ano, do pole abecedy zadejte například 0123456789. Generátor vytvoří ID pouze z těchto znaků. Pamatujte ale, že při délce 21 a 10 znacích je počet možných ID 10²¹, což je 1×10²¹ – pro většinu aplikací dostačující.

Je Nano ID bezpečné pro databázové klíče?

Ano, pokud ho nekombinujete s předvídatelným seedem. Náhodná ID generovaná crypto.getRandomValues jsou bezpečná. Nevýhodou oproti auto‑increment klíčům je možnost kolize (i když extrémně nízká) a nemožnost řazení podle času vytvoření. Pro řazení použijte samostatný timestamp sloupec.

Co se stane, když abeceda obsahuje jen jeden znak?

Generátor zobrazí chybu: „Abeceda musí obsahovat alespoň 2 různé znaky.“, vymaže výsledky a deaktivuje tlačítko „Kopírovat vše“. ID s jedním znakem v abecedě nelze smysluplně vygenerovat – všechna by byla totožná.

Jaký je rozdíl mezi Nano ID a UUID?

Nano ID je kratší (21 vs 36), používá URL‑bezpečný znakový set (lze upravit), je generován lokálně v prohlížeči bez serverové podpory a jeho délku i abecedu si můžete plně přizpůsobit. UUID má pevnou strukturu a standardizovaný formát (RFC 4122), ale je delší a méně flexibilní.

Kolik ID mohu vygenerovat najednou?

Minimálně 1, maximálně 100. Generátor kontroluje unikátnost – při malém kombinatorickém prostoru (např. délka 2 a abeceda 5 znaků = 25 možných ID) by generování 100 ID selhalo, protože by nestačil prostor. V praxi se to projeví tak, že generátor vyprodukuje méně ID, než je požadováno (až do vyčerpání všech možných kombinací).