Generatore di Nano ID

Genera in blocco, direttamente nel navigatore, identificativi univoci brevi e sicuri per gli indirizzi web. Potete scegliere liberamente l'insieme dei caratteri — predefinito, alfanumerico, minuscolo, maiuscolo, numerico o esadecimale — e la lunghezza: ideale quando serve un identificativo più corto di un UUID.

Confronto fra i formati di identificativo

Formato Lunghezza Caratteri distinti Ordinabile per generazione Descrizione
Nano ID 21 caratteri predefiniti (da 1 a 64 a scelta) 64 caratteri No (del tutto casuale) Identificativo casuale breve, composto soltanto di caratteri sicuri per gli indirizzi web. Insieme dei caratteri e lunghezza si possono cambiare liberamente.
UUID v4 36 caratteri (compresi quattro trattini) 16 caratteri (esadecimale) No (del tutto casuale) Identificativo a 128 bit standardizzato dalla norma RFC 9562. La forma standard è la notazione esadecimale separata da trattini.
ULID 26 caratteri 32 caratteri (Base32) Sì (i primi dieci caratteri sono la marca temporale) Reca in testa una marca temporale al millesimo di secondo e si può quindi ordinare come stringa secondo l'ordine di generazione.

Consigli

  • I Nano ID sono generati con numeri casuali crittograficamente sicuri, tramite l'interfaccia crittografica del navigatore, e l'elaborazione avviene localmente: nulla giunge mai ai serventi di toolbase.cc.
  • L'alfabeto predefinito di 64 caratteri, A-Za-z0-9_-, non contiene simboli né spazi e si può quindi usare in sicurezza come percorso di un indirizzo web o nome di file.
  • Limitando l'insieme alle sole cifre o all'esadecimale, potete generare identificativi conformi al formato di un sistema esistente, per esempio numeri d'ordine composti di sole cifre.
  • Più si accorcia la lunghezza, più cresce la probabilità di collisione. Nei sistemi che emettono molti identificativi conviene restare intorno ai 21 caratteri predefiniti, mentre per pochi dati di prova possono bastare otto o dieci caratteri.
  • Aumentando il numero di identificativi da generare e usando il pulsante che li copia tutti, preparerete in un attimo dati di prova o dati iniziali.

Domande frequenti

Se volete un identificativo breve da usare direttamente in un indirizzo web o in un nome di file, Nano ID è la scelta adatta. Se vi occorre un formato standardizzato da una norma o se conta l'interoperabilità con altri sistemi, è più prudente l'UUID, in particolare la versione 4.

Con la configurazione predefinita di 21 caratteri su un insieme di 64, la casualità equivale a 126 bit e il rischio è nella pratica trascurabile: il numero di generazioni necessario perché la probabilità di collisione raggiunga il cinquanta per cento è di circa 1,09 per dieci alla diciannovesima.

Sì, ma come per l'UUID v4 la totale casualità rende l'inserimento negli indici ad albero meno efficiente di un contatore progressivo. Se vi serve l'ordinamento secondo l'ordine di inserimento, valutate formati come ULID, che recano in testa una marca temporale.

Sì. A parità di lunghezza, un insieme di caratteri più ristretto riduce la casualità e quindi la resistenza alle collisioni. Per ottenere con le sole dieci cifre la stessa sicurezza di un alfabeto di 64 caratteri occorre una lunghezza maggiore.
Tool-kun

A proposito — perché i Nano ID possono essere più corti degli UUID

Nano ID è una libreria di generazione di identificativi scritta in JavaScript e pubblicata nel 2017 da Andrey Sitnik, l'autore di PostCSS. Più breve di un UUID, leggera e priva di dipendenze — poche centinaia di byte di codice — e insieme fondata su numeri casuali crittograficamente sicuri, si è guadagnata un tale consenso da registrare decine di milioni di scaricamenti settimanali ed è diventata una libreria di riferimento.

La brevità di un identificativo dipende dall'ampiezza dell'insieme dei caratteri. Un UUID rappresenta 128 bit con le sole sedici cifre esadecimali e richiede perciò 36 caratteri; Nano ID, usandone 64, esprime una casualità paragonabile — 126 bit nella configurazione predefinita — in soli 21 caratteri. La ragione sta nella maggiore informazione per carattere: sei bit contro i quattro dell'esadecimale.

I 126 bit di casualità della configurazione predefinita, cioè 21 caratteri su 64, equivalgono press'a poco ai 122 bit di un UUID v4. Il numero di identificativi da generare perché la probabilità di collisione raggiunga il cinquanta per cento si calcola, con la formula approssimata del problema dei compleanni, in circa 1,09 per dieci alla diciannovesima: nella pratica non c'è di che preoccuparsi.