NanoID generator

Generišite NanoID vrijednosti na mreži: standardno 21 znak siguran za URL, oko 126 bita nasumičnosti, sa prilagođenom dužinom i abecedom.

Format
Generisani ID-jevi
Spremno. Generišite NanoID vrijednosti u Vašem pregledniku.

Kako se ovaj ID gradi

Izgled (Layout)
Zadano 21 znak siguran za URL iz skupova A-Z, a-z, 0-9, donje crte i crtice.
Entropija
Oko 126 bita sa zadanom abecedom od 64 znaka i dužinom od 21 znaka.
Vrijeme
Nema vremenske oznake; NanoID vrijednosti su neprozirne osim ako sami ne unesete značenje u prilagođenu abecedu.
Rizik od kolizije
Rizik od kolizije se mijenja u zavisnosti od dužine i abecede. Zadana postavka je u istom praktičnom sigurnosnom opsegu kao i UUID v4.
Primjer
Ldj75qkPvQDEYRUjYV3H-

Vaši ID-jevi se generišu lokalno pomoću jake nasumičnosti preglednika. Ništa se ne šalje na BroBroGo.

Često postavljana pitanja (FAQ)

Zašto koristiti NanoID?

NanoID je kraći od UUID-a, standardno je siguran za URL i zadržava visoku nasumičnost kada koristite zadanu dužinu i abecedu.

Mogu li promijeniti abecedu?

Da. Zaključana NanoID stranica zadržava kontrole za dužinu i abecedu. Manje abecede ili kraće dužine povećavaju rizik od kolizije.

Nano ID Generator – Generisanje kratkih, sigurnih identifikatora

Ova stranica generiše jedinstvene identifikatore koristeći Nano ID format. Za razliku od UUID (36 znakova) ili ULID (26 znakova), Nano ID podrazumevano koristi samo 21 znak – dovoljno kratko za efikasno skladištenje i prenos, a istovremeno dovoljno dugačko za veoma nisku vjerovatnoću kolizije. Ključna prednost je potpuna prilagodljivost: dužina, dozvoljeni znakovi i broj ID‑ova mogu se mijenjati po želji, a sve se izvršava lokalno u pretraživaču, bez slanja podataka na server.

Kako funkcioniše generator

Generator koristi kriptografski siguran generator slučajnih brojeva (crypto.getRandomValues) koji je ugrađen u moderne pregledače. Svaki znak u ID‑u bira se nezavisno iz korisnički definisane abecede (alfabeta). Proces je sledeći:

  1. Korisnik podešava parametre: dužinu, abecedu i broj ID‑ova.
  2. Za svaki ID, program uzima onoliko slučajnih bajtova koliko je potrebno da se dobije dužina znakova, koristeći algoritam koji efektivno mapira slučajne brojeve u znakove abecede.
  3. Generisani ID‑ovi su jedinstveni u okviru jedne sesije (ako se ponovi isti skup parametara, dobiće se različiti ID‑ovi, jer se svaki put koristi nova slučajnost).
  4. Rezultati se prikazuju odmah – promjena bilo kog parametra (dužina, abeceda, broj) pokreće trenutno regenerisanje.

Abeceda mora sadržati najmanje 2 različita znaka. Ako korisnik obriše abecedu tako da ostane samo jedan znak (ili nijedan), rezultati se brišu, broj ID‑ova postaje 0, a dugme “Kopiraj sve” se onemogućava. Ovo je namjerna sigurnosna mjera: sa samo jednim znakom u abecedi, svaki ID bi bio niz istog znaka (npr. “aaaaa…”), što nema smisla za jedinstvene identifikatore.

Parametri: dužina, abeceda i broj ID‑ova

Dužina (Length)

Podrazumijevana dužina je 21 znak. Moguće je podesiti vrednosti između 2 i 36 pomoću klizača. Kraći ID‑ovi (npr. 8–10 znakova) su korisni za QR kodove ili kratke linkove, ali imaju veću vjerovatnoću kolizije (vidi sledeći odjeljak). Duži ID‑ovi (30+) su gotovo sigurni čak i pri velikom broju generisanih instanci, ali zauzimaju više prostora.

Abeceda (Alphabet)

Podrazumijevana abeceda sadrži URL‑sigurne znakove: velika i mala slova engleske abecede, brojeve, te znake - i _. Ovo su znakovi koji se ne moraju enkodirati u URL‑ovima, što ih čini idealnim za web linkove. Korisnik može unijeti bilo koju kombinaciju znakova, uključujući samo brojeve, samo slova, ili čak posebne simbole. Važno je da abeceda bude dovoljno velika da osigura dovoljnu entropiju; sa manje od 2 znaka generisanje je onemogućeno.

Broj ID‑ova (Count)

Može se generisati između 1 i 100 ID‑ova istovremeno. Svaki ID je jedinstven u okviru datog seta (ne ponavlja se unutar istog generisanja). Ako je potrebno više od 100 ID‑ova, korisnik može ponoviti generisanje više puta.

Zašto je podrazumijevana dužina baš 21?

Nano ID je dizajniran da pruži sličnu otpornost na koliziju kao UUID v4 (122 bita slučajnosti) uz kraću reprezentaciju. Podrazumijevana abeceda ima 64 znaka (A‑Z, a‑z, 0‑9, -, _). Sa 21 znakom, broj mogućih kombinacija je 64^21 = 2^126. To je otprilike 126 bita entropije, nešto više od UUID‑ovih 122 bita. Dužina 21 je izabrana jer daje dobru ravnotežu između sigurnosti i kratkoće.

Ako se dužina smanji na 10, broj mogućnosti postaje 64^10 ≈ 2^60, što je za većinu aplikacija i dalje dovoljno (vjerovatnoća kolizije pri 1 milion ID‑ova je oko 0.0004). Za kritične sisteme preporučuje se 21 ili više.

Poređenje sa UUID i ULID formatom

Format Dužina (znakovi) Abeceda Entropija (biti) Prednosti
UUID v4 36 heksadecimalna (0‑9, a‑f) 122 Standard, široko podržan
ULID 26 Crockford Base32 (0‑9, A‑Z, bez I, L, O, U) 128 (vremenski dio + slučajni) Sortivno po vremenu
Nano ID (podraz.) 21 URL‑sigurna (64 znaka) 126 Kraći, prilagodljiv, URL‑siguran

Nano ID je znatno kraći od UUID‑a (21 umesto 36 znakova) i nema fiksni format kao ULID (koji uključuje vremensku oznaku). Ako vam nije potrebna vremenska sortivnost, Nano ID je često bolji izbor zbog manje veličine.

Kolizija: vjerovatnoća i sigurnost

Vjerovatnoća kolizije između dva slučajno generisana Nano ID‑a zavisi od dužine i veličine abecede. Za podrazumevane parametre (21 znak, 64‑znakovna abeceda), vjerovatnoća kolizije je:

P ≈ N² / (2 * A^L)

gdje je N broj generisanih ID‑ova, A veličina abecede, a L dužina. Čak i za 10 milijardi ID‑ova (N = 10^10), vjerovatnoća kolizije je zanemarljiva: N² / (2 * 64^21) ≈ 10^20 / 2^127 ≈ 10^20 / 1.7×10^38 ≈ 6×10^-19.

Ako koristite kraću dužinu (npr. 8) i malu abecedu (npr. samo brojevi, 10 znakova), vjerovatnoća kolizije raste. Zato generator ne dozvoljava abecedu sa manje od 2 znaka – to bi dovelo do apsolutne sigurnosti kolizije (svi ID‑ovi bi bili identični).

Privatnost i lokalno generisanje

Svi ID‑ovi se generišu isključivo u pregledaču korisnika. Ni jedan podatak (dužina, abeceda, broj ID‑ova, generisani ID‑ovi) ne napušta vaš računar. Ovo je važno za aplikacije koje zahtevaju privatnost, npr. generisanje tokena za autentifikaciju ili jedinstvenih ključeva bez izlaganja serveru.

Generisanje koristi crypto.getRandomValues, metod koji je kriptografski siguran i podržan u svim modernim pregledačima. Nema oslanjanja na Math.random koji može biti predvidiv.

Praktične primjene

  • Web API‑ji: Kratki ID‑ovi za resurse (npr. /users/abc123_xyz).
  • QR kodovi: Kraći ID‑ovi znače manje podataka u kodu, lakše skeniranje.
  • Jedinstveni tokeni: Za verifikacione linkove, sesije ili CSRF zaštitu, bez potrebe za čuvanjem na serveru.
  • Ključevi u bazi podataka: Za NoSQL baze (MongoDB, DynamoDB) gde je veličina ključa bitna za performanse indeksa.
  • Kratki linkovi: Servisi poput bit.ly često koriste slične formate.

Često postavljana pitanja (FAQ)

1. Da li mogu da generišem ID‑ove sa samo brojevima? Da, unesite 0123456789 u polje za abecedu. Tada će ID‑ovi sadržati samo cifre. Dužina se i dalje može podesiti, ali imajte na umu da je entropija tada mnogo manja (10^L umesto 64^L).

2. Zašto se ID‑ovi ne ponavljaju u istom setu? Generator proverava da li je svaki novo‑generisani ID već postojeći u trenutnom setu; ako jeste, generiše novi. Ovo garantuje jedinstvenost unutar jednog generisanja, ali ne garantuje globalnu jedinstvenost (za to je potreban centralni registar).

3. Mogu li da kopiram samo jedan ID? Da, klikom na bilo koji pojedinačni ID on se automatski kopira u clipboard.

4. Šta znači poruka “Alphabet needs at least 2 different characters”? Abeceda mora sadržati bar dva različita znaka da bi generisanje bilo moguće. Ako unesete samo “a” ili ispraznite polje, generator se zaustavlja.

5. Da li je Nano ID standardizovan? Nano ID nije formalni standard poput RFC‑a za UUID, ali je široko prihvaćen u open‑source zajednici (NPM paket, biblioteke za više jezika). Ovaj generator implementira istu logiku.

6. Mogu li da koristim ove ID‑ove u produkciji? Da, generisanje se vrši lokalno sa kriptografski sigurnom slučajnošću. Međutim, za kritične sisteme gde je globalna jedinstvenost neophodna, preporučuje se kombinacija sa vremenskom oznakom ili drugim identifikatorom.