Generatore NanoID

Generi valori NanoID online: 21 caratteri URL-safe per impostazione predefinita, circa 126 bit di casualità, con lunghezza e alfabeto personalizzabili.

Formato
ID generati
Pronto. Generi valori NanoID direttamente nel Suo browser.

Come viene generato questo ID

Struttura
21 caratteri URL-safe per impostazione predefinita, scelti tra A-Z, a-z, 0-9, trattino basso (_) e trattino (-).
Entropia
Circa 126 bit con l'alfabeto predefinito a 64 caratteri e una lunghezza di 21 caratteri.
Data/Ora
Nessuna marcatura temporale; i valori NanoID sono opachi a meno che non si attribuisca un significato specifico a un alfabeto personalizzato.
Rischio di collisione
Il rischio di collisione varia in base alla lunghezza e all'alfabeto scelti. La configurazione predefinita offre lo stesso livello di sicurezza pratica di un UUID v4.
Esempio
HLQEljsOtEfJNuMDxcGau

I Suoi ID vengono generati localmente tramite funzioni di generazione casuale sicure del browser. Nessun dato viene inviato a BroBroGo.

Domande frequenti

Perché utilizzare NanoID?

NanoID è più breve di un UUID, è URL-safe per impostazione predefinita e mantiene un'elevata casualità quando si utilizzano la lunghezza e l'alfabeto standard.

Posso modificare l'alfabeto?

Sì. La pagina dedicata a NanoID include i controlli per personalizzare la lunghezza e l'alfabeto. Alfabeti più ristretti o lunghezze inferiori aumentano il rischio di collisione.

Che cos'è Nano ID e perché è diverso dagli UUID

Nano ID è un formato di identificatore univoco progettato per essere compatto, sicuro per gli URL e resistente alle collisioni. A differenza degli UUID, che hanno una lunghezza fissa di 36 caratteri (inclusi i trattini), Nano ID ha una lunghezza predefinita di soli 21 caratteri – un risparmio del 42% in termini di spazio. La pagina del generatore permette di regolare sia la lunghezza (da 2 a 36 caratteri) sia l’alfabeto utilizzato, rendendolo estremamente flessibile per contesti diversi.

Il punto di forza principale rispetto ad altri formati è la possibilità di scegliere l’alfabeto: l’utente può inserire manualmente i caratteri consentiti, purché siano almeno due diversi. L’alfabeto predefinito comprende solo caratteri URL‑safe (lettere, cifre, trattini bassi e trattini), evitando problemi di encoding. La lunghezza regolabile consente di bilanciare compattezza e probabilità di collisione: più caratteri e più caratteri nell’alfabeto riducono il rischio di duplicati, ma aumentano la dimensione dell’identificatore.

Parametri personalizzabili: lunghezza, alfabeto e conteggio

Il generatore mette a disposizione tre controlli principali, oltre al selettore del formato (che in questa pagina è fissato a Nano ID).

  • Lunghezza (Length): un cursore che va da 2 a 36, con valore predefinito 21. Ogni modifica rigenera immediatamente gli ID.
  • Alfabeto (Alphabet): un campo di testo editabile, inizialmente popolato con i caratteri URL‑safe. Deve contenere almeno due caratteri diversi. Se l’utente riduce l’alfabeto a un solo carattere, i risultati vengono cancellati, il conteggio degli ID diventa 0 e il pulsante “Copia tutto” viene disabilitato.
  • Conteggio (Count): un numero compreso tra 1 e 100 (inclusi). Il generatore produce esattamente quel numero di ID unici, tutti diversi tra loro.

Il cambiamento di qualsiasi parametro (lunghezza, alfabeto, conteggio) o del formato provoca la rigenerazione automatica degli ID. Non è necessario cliccare su alcun pulsante “Genera”: tutto avviene istantaneamente lato client.

Regole e casi limite: cosa succede quando l’alfabeto è valido o invalido

La pagina gestisce in modo esplicito i casi limite per evitare errori di generazione.

  • Alfabeto con almeno 2 caratteri diversi: la generazione procede normalmente. Se l’alfabeto viene modificato, gli ID vengono rigenerati con la nuova stringa di caratteri.
  • Alfabeto ridotto a un singolo carattere: il sistema rileva automaticamente che non è possibile generare ID unici (ogni ID sarebbe composto dalla stessa lettera ripetuta, ma la richiesta di unicità non potrebbe essere soddisfatta). I risultati correnti vengono cancellati, il contatore mostra 0 ID e il pulsante “Copia tutto” viene disattivato. Viene visualizzato il messaggio di stato “L’alfabeto deve contenere almeno due caratteri diversi.”.
  • Generazione di ID duplicati? Il generatore produce ID unici all’interno dello stesso lotto, ma non garantisce la global uniqueness al di fuori di esso. Per applicazioni distribuite, la probabilità di collisione dipende dalla lunghezza e dall’alfabeto scelti (vedi sezione successiva).
  • Stati di output: la pagina mostra messaggi di stato chiari: “Pronto.” (inattivo), “Generato.” (dopo ogni rigenerazione), “Copiato tutto!” (dopo aver copiato tutti gli ID), e l’errore sull’alfabeto. Questi messaggi aiutano l’utente a capire lo stato corrente senza ambiguità.

Confronto con UUID e ULID: lunghezza, collisioni e flessibilità

Formato Lunghezza predefinita Alfabeto Spazio di indirizzi (approssimativo)
UUID v4 36 caratteri (con trattini) Esadecimale + trattini ~5.3×10^36
ULID 26 caratteri (Crockford Base32) Crockford Base32 ~1.2×10^36
Nano ID (default) 21 caratteri URL‑safe (64 caratteri) ~5.1×10^37
Nano ID (lunghezza 21) 21 64 ~5.1×10^37
Nano ID (lunghezza massima 36) 36 64 ~2.7×10^64

Il confronto mostra che Nano ID con impostazioni predefinite offre uno spazio di indirizzi paragonabile o superiore a UUID e ULID, pur essendo più corto. La formula per calcolare il numero di ID possibili è alfabeto^lunghezza. Con 64 caratteri e lunghezza 21 si hanno 64^21 ≈ 5,1×10^37 combinazioni – contro le 16^32 ≈ 3,4×10^38 di UUID (ma UUID è più lungo). La probabilità di collisione per 1000 ID generati è trascurabile.

Se si desiderano ID ancora più compatti, si può ridurre la lunghezza (es. 10 caratteri) a patto di accettare una probabilità di collisione maggiore. Viceversa, per applicazioni critiche si può aumentare fino a 36, ottenendo uno spazio enorme.

Sicurezza e generazione lato client: nessun dato inviato a BroBroGo

Tutti gli ID vengono generati localmente nel browser dell’utente, utilizzando l’API crypto.getRandomValues() (una fonte di casualità crittograficamente forte supportata da tutti i browser moderni). Nessuna informazione – né gli ID generati, né i parametri inseriti – viene trasmessa a BroBroGo o a server esterni. Questo è fondamentale per utenti attenti alla privacy: non esiste alcun round‑trip di rete, né logging lato server.

L’uso di crypto.getRandomValues() garantisce che gli ID siano imprevedibili e adatti per token di sicurezza, link di conferma o chiavi di sessione. Non è possibile prevedere il prossimo ID generato, a differenza di generatori basati su timestamp (come ULID) o su sequenze deterministiche.

Casi d’uso reali per Nano ID

Il formato è particolarmente utile in contesti dove ogni byte conta e la leggibilità umana non è essenziale:

  • Chiavi primarie in database NoSQL: identificatori più corti riducono lo spazio di archiviazione e velocizzano le query su indice.
  • URL brevi e codici di referral: l’alfabeto URL‑safe evita la necessità di percent‑encoding, e la lunghezza ridotta mantiene i link compatti.
  • Token di autenticazione monouso: grazie alla casualità crittografica e alla lunghezza regolabile, si possono generare token di 32 caratteri per reimpostazione password o email di verifica.
  • Identificatori anonimi per sondaggi o sessioni: nessun dato personale inviato al server, tutto generato lato client.
  • Sistemi distribuiti con requisiti di unicità locale: ad esempio, in un’applicazione offline che sincronizza dati in seguito, ogni dispositivo può generare ID con un prefisso di alfabeto diverso per evitare collisioni.

FAQ

1. Perché Nano ID è più corto di UUID a parità di resistenza alle collisioni? Perché utilizza un alfabeto più grande (64 caratteri invece di 16) e non ha i trattini fissi. Con 21 caratteri e 64 simboli si ottengono circa 5×10^37 possibili ID, contro i 3×10^38 di UUID v4 (con 36 caratteri). La differenza è solo di un fattore 6, ma la lunghezza è ridotta del 42%.

2. Cosa significa “URL‑safe” nell’alfabeto predefinito? Significa che i caratteri non richiedono encoding negli URL: sono lettere (A‑Z, a‑z), cifre (0‑9), trattino basso (_) e trattino (-). Nessun carattere come + o / che potrebbero essere interpretati male. L’alfabeto predefinito è: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-.

3. Posso generare ID solo numerici? Sì. Basta inserire una stringa di cifre (es. 0123456789) nell’alfabeto, purché contenga almeno due caratteri diversi. Gli ID saranno composti solo da numeri. La lunghezza può essere regolata per ottenere il numero di cifre desiderato.

4. Cosa succede se inserisco l’alfabeto con duplicati? Il generatore accetta qualsiasi stringa, ma i duplicati non aumentano l’alfabeto effettivo perché vengono contati i caratteri unici. Se la stringa contiene solo due caratteri unici, l’alfabeto effettivo è di due caratteri. Se contiene un solo carattere unico (es. aaaa), scatta l’errore “Alphabet needs at least 2 different characters.”

5. Perché non posso generare più di 100 ID alla volta? Per evitare un carico eccessivo sul browser e garantire tempi di risposta immediati. Se si necessitano più ID, basta generare più lotti consecutivamente. Il limite è documentato nella scheda informativa: conteggio da 1 a 100 inclusi.

6. La generazione è veramente sicura per token crittografici? Sì, perché utilizza crypto.getRandomValues(), una sorgente di casualità crittografica implementata in hardware o software nei moderni browser. Gli ID generati sono imprevedibili e adatti per token di autenticazione sessione, purché la lunghezza e l’alfabeto siano sufficientemente ampi (almeno 16 caratteri con alfabeto completo).