Vai al contenuto

Generatore di ULID e NanoID

ULID & NanoID Generator

Genera ULID ordinabili o NanoID corti con l’alfabeto e la lunghezza che scegli, e mostra la probabilità di collisione.

Genera ULID e NanoID, i due formati di id corto a cui si ricorre quando un UUID da 36 caratteri è troppo lungo per un URL. Mostra anche l’aritmetica delle collisioni per la lunghezza e l’alfabeto scelti, che è la parte che decide se l’id sia abbastanza corto o troppo corto.

🔒 Funziona interamente nel tuo browserulidnanoidgeneratorid
Tipo

26 caratteri, ordinabili, con un timestamp in millisecondi nei primi dieci.

Quanti

0 id

    Quanto è probabile una collisione

    Entropia

    80,0 bit

    Id prima di una probabilità dell’1%

    1,56e11

    A 1.000 all’ora

    18 mila anni

    Il limite del compleanno: P ≈ 1 − exp(−n²/2N). Il numero qui sotto è il punto in cui arriva all’uno per cento.

    Esamina un ULID

    Gli ULID seguono la specifica ULID: 48 bit di timestamp in millisecondi e poi 80 bit casuali, in base32 di Crockford — che lascia fuori I, L, O e U perché nessuno ne legga uno male ad alta voce.

    Come si usa

    1. Scegliere fra ULID e NanoID

      Un ULID è fisso a 26 caratteri con un timestamp in millisecondi nei primi dieci, quindi si ordina. Un NanoID è di qualunque lunghezza su qualunque alfabeto ed è pura entropia: non ha niente di ordinato.

    2. Impostare la lunghezza e l’alfabeto

      Per NanoID il valore predefinito è 21 caratteri su 64 simboli. Un id più corto o un alfabeto più piccolo — per esempio un insieme senza caratteri che si somigliano, per qualcosa che le persone leggono ad alta voce — costa entropia, e il pannello sotto mostra esattamente quanta.

    3. Leggere la riga sulle collisioni

      Dà il numero di id prima di arrivare all’uno per cento di probabilità di una collisione qualsiasi, e quanto tempo è a mille al giorno. Sotto i 64 bit di entropia la pagina lo dice, perché è quella la linea fra uno slug di URL e qualcosa che non deve essere indovinabile.

    4. Decodificare un ULID se se ne ha uno

      Basta incollarlo e il pannello stampa il momento di creazione e la coda casuale — utile per capire quando un record è stato creato davvero.

    Domande frequenti

    Un id corto è sicuro come link segreto?

    Solo se lo dice la sua entropia. Un NanoID da 21 caratteri ha circa 126 bit e va bene; uno da 10 caratteri ne ha circa 60 ed è indovinabile da chiunque sia disposto a spendere dei soldi. La pagina segnala tutto quello che sta sotto i 64 bit proprio per questo: un id corto è un id corto, non un segreto.

    Perché un alfabeto personalizzato esce comunque uniforme?

    Perché i simboli vengono estratti con il campionamento a rifiuto e non con `random % length`. La scorciatoia del modulo introduce una distorsione in ogni alfabeto la cui lunghezza non divide 256 — il bug comune dei generatori di id fatti in casa, e invisibile finché qualcuno non conta.

    Che cosa fa Monotonic per un ULID?

    All’interno di un singolo millisecondo, i ULID normali sono in ordine casuale l’uno rispetto all’altro. La modalità monotona incrementa il campo casuale invece di riestrarlo, così una raffica generata nello stesso millisecondo si ordina comunque nell’ordine in cui è stata creata.

    Perché un ULID usa base32 senza I, L, O e U?

    È l’alfabeto di Crockford: toglie i caratteri che si confondono quando una persona legge un id ad alta voce o lo copia da uno schermo. Il prezzo sono 32 simboli invece di 36, ed è il motivo per cui un ULID ha bisogno di 26 caratteri dove a un NanoID ne bastano 21.

    Può ricevere da

    Dopo

    Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.