MiServe DevTools

I tuoi adesivi

Fissa qui gli strumenti. Restano salvati in questo browser.

Generatore di UUID, ULID e Nano ID

Genera in blocco UUID v4, UUID v7 ordinati per tempo, ULID e Nano ID, e leggi la versione e il timestamp contenuti in un ID.

Tipo
Variante
Timestamp (UTC)
La tua ora locale
Tempo Unix in millisecondi

Funziona nel tuo browser. Nulla di ciò che incolli viene caricato.

Informazioni su questo strumento

Quale ID scegliere

Un UUID versione 4 è fatto di 122 bit casuali. Non dice nulla su quando o dove è stato creato, ed è la scelta abituale quando un ID deve soltanto essere univoco. Un UUID versione 7, standardizzato nel 2024 in RFC 9562, mette un timestamp Unix a 48 bit in millisecondi davanti a 74 bit casuali. I nuovi ID vengono ordinati dopo quelli più vecchi, quindi le righe inserite insieme restano vicine nell'indice del database, al prezzo di mostrare la data di creazione a chiunque veda l'ID.

Un ULID segue la stessa idea con una scrittura diversa: 48 bit di tempo e 80 bit casuali in 26 caratteri Crockford Base32 senza trattini, che non distinguono tra maiuscole e minuscole. Un Nano ID è una stringa casuale di cui scegli lunghezza e alfabeto. Il valore predefinito di 21 caratteri da 64 simboli sicuri negli URL contiene 126 bit, poco più di un UUID versione 4, in una stringa più corta.

Quanto sono univoci, e quanto sono segreti

In teoria gli ID casuali possono collidere. Con la versione 4 dovresti generare circa 2,7 miliardi di miliardi (2,7 × 10^18) di UUID prima che la probabilità di un solo duplicato arrivi al 50%, ed è per questo che le applicazioni li considerano univoci. Un Nano ID più corto o un alfabeto ridotto abbassano questo margine: la riga sotto le opzioni mostra quanti bit casuali dà la tua scelta.

Un ID è un identificatore, non un segreto. Le versioni 1, 6 e 7 e gli ULID rivelano quando sono stati creati, e RFC 9562 sconsiglia di affidarsi a un UUID come prova di autorizzazione. Per un link di reset della password, una sessione o una API key, usa un token casuale di almeno 128 bit e conserva sul server solo il suo hash.

Leggere un UUID

Nella forma abituale xxxxxxxx-xxxx-Vxxx-Nxxx-xxxxxxxxxxxx, la cifra V è la versione e i primi bit di N sono la variante: 8, 9, a o b per il layout RFC 9562 usato da quasi tutti gli UUID. Le versioni 1 e 6 contengono un conteggio a 60 bit di intervalli di 100 nanosecondi dal 15 ottobre 1582, insieme a un ID del nodo che in origine era l'indirizzo MAC della scheda di rete. La versione 7 contiene millisecondi Unix. Le versioni 3 e 5 sono hash di un nome e la versione 4 è casuale, quindi non contengono nulla da decodificare.

I primi dieci caratteri di un ULID sono il suo timestamp. L'analizzatore accetta anche UUID senza trattini, tra parentesi graffe o con il prefisso urn:uuid:.

Come li genera questo strumento

Ogni bit casuale proviene da crypto.getRandomValues, il generatore di numeri casuali crittografico del browser. Non viene richiesto nulla a un server e non viene salvato nulla.

Gli UUID versione 7 creati nello stesso millisecondo mantengono il timestamp e aggiungono un incremento casuale ai 74 bit casuali, cioè il metodo monotono descritto in RFC 9562, quindi un lotto si ordina sempre nell'ordine in cui è stato generato. Gli ULID creati nello stesso millisecondo aggiungono uno alla parte casuale, come descrive la specifica ULID. Quest'ordine vale per gli ID generati in questa pagina: gli ID creati su macchine diverse nello stesso millisecondo non hanno un ordine preciso. I caratteri dei Nano ID vengono scelti scartando i byte casuali che cadono fuori dall'alfabeto, così ogni simbolo ha la stessa probabilità.

Domande

Come chiave primaria di un database è meglio UUID v4 o UUID v7?

La versione 7 è più adatta come chiave primaria quando vuoi che le nuove righe finiscano vicine nell'indice e non ti importa che l'ID mostri la sua data di creazione. La versione 4 è la scelta giusta quando l'ID non deve rivelare nulla. Entrambi sono a 128 bit e stanno nella stessa colonna uuid.

Due UUID generati possono essere uguali?

È possibile, ma troppo improbabile per tenerne conto. Un UUID versione 4 ha 122 bit casuali, quindi ne servono circa 2,7 miliardi di miliardi (2,7 × 10^18) prima che la probabilità di un solo duplicato arrivi al 50%. Il rischio reale è una sorgente di casualità debole, ed è per questo che questo strumento usa il generatore crittografico del browser.

Un ULID è la stessa cosa di un UUID v7?

No, ma i due si somigliano. Entrambi sono a 128 bit e iniziano con un timestamp a 48 bit in millisecondi, quindi i bit di un ULID stanno in una colonna UUID a 128 bit. Un ULID non ha i campi versione e variante, quindi RFC 9562 non lo definisce come UUID, e la sua forma testuale usa Crockford Base32 dove un UUID usa l'esadecimale.

Si può sapere quando è stato creato un UUID?

Sì, per gli UUID versione 1, 6 e 7 e per gli ULID, che contengono un timestamp. Incolla il valore nell'analizzatore per vederlo come data. Un UUID versione 4 è casuale e non contiene alcuna informazione sul tempo.

Altri strumenti in Hash