Generatore UUID

RSS

Genera UUID versione 4 crittograficamente casuali o versione 7 ordinati nel tempo, uno alla volta o in blocco.

Funziona al 100% nel tuo browser. Nulla di ciò che incolli viene caricato o salvato.

Come usare il generatore UUID

  1. Scegli la versione: v4 (casuale) o v7 (ordinata nel tempo).
  2. Imposta quanti UUID ti servono, da uno a un elenco in blocco.
  3. Se vuoi, passa alle maiuscole o togli i trattini.
  4. Copia un singolo valore o l'intero elenco.

Gli UUID vengono generati nel tuo browser con il suo generatore di numeri casuali crittograficamente sicuro. Non vengono mai inviati ai nostri server né salvati lì, quindi nessun altro sa quali identificatori hai creato.

Che cos'è un UUID?

Un UUID (Universally Unique Identifier, identificatore univoco universale) è un valore a 128 bit che può essere generato in modo indipendente su qualsiasi macchina con una probabilità trascurabile di coincidere con un altro. Non serve un registro centrale né una richiesta al database, il che rende gli UUID ideali per sistemi distribuiti, client offline e unione di dati provenienti da più fonti. Sono anche una scelta comune per gli ID delle richieste e per il claim jti all'interno dei token che puoi esaminare con il decoder JWT. GUID (Globally Unique Identifier) è il nome che Microsoft usa per la stessa cosa.

Gli UUID si scrivono come 32 cifre esadecimali in cinque gruppi separati da trattini, secondo lo schema 8-4-4-4-12 (36 caratteri in totale):

f47ac10b-58cc-4372-a567-0e02b2c3d479
              ^    ^
              |    variante (8, 9, a o b)
              versione (4)

La prima cifra del terzo gruppo è la versione; la prima cifra del quarto gruppo codifica la variante. La specifica attuale è la RFC 9562 (2024), che ha sostituito la RFC 4122 e ha aggiunto le versioni 6, 7 e 8.

Versione 4 e versione 7 a confronto

UUID v4UUID v7
Contenuto122 bit casuali (6 bit fissi per versione e variante)Timestamp Unix a 48 bit in millisecondi, poi bit casuali
OrdinamentoCasualePiù o meno cronologico
RivelaNienteIl momento della sua creazione
Ideale perToken, ID pubblici, uso genericoChiavi primarie di database, log di eventi

Perché v7 è migliore per gli indici di database

Le chiavi primarie di solito sono memorizzate in un indice B-tree. I valori v4 casuali finiscono in posizioni casuali, quindi ogni inserimento tocca una pagina diversa, il che provoca suddivisioni di pagina, scarsa località della cache e indici gonfiati nelle tabelle grandi. Poiché gli UUID v7 iniziano con un timestamp, i nuovi valori vengono aggiunti vicino alla fine dell'indice, proprio come un intero auto-incrementale, pur mantenendo i vantaggi di ID univoci a livello globale e generati dal client.

Errori comuni

  • Salvare gli UUID come testo. Una stringa di 36 caratteri occupa più del doppio dello spazio dei 16 byte grezzi. Usa un tipo uuid nativo (PostgreSQL) o BINARY(16) (MySQL).
  • Usare gli UUID come segreti. I valori v4 sono difficili da indovinare, ma sono identificatori, non credenziali. I valori v7 rivelano il momento della loro creazione e sono in parte prevedibili. Per il reset delle password e le chiavi API usa un token casuale dedicato.
  • Confronti sensibili a maiuscole e minuscole. La RFC 9562 prevede un output in minuscolo ma richiede che l'input sia accettato sia in maiuscolo sia in minuscolo. Normalizza le stringhe prima di confrontarle.
  • Fonti casuali deboli. Generare UUID v4 con Math.random() ne compromette l'unicità. Usa un generatore crittograficamente sicuro.

Generare UUID nel codice

// JavaScript (browsers and Node.js)
crypto.randomUUID();                 // v4

# Python
import uuid
uuid.uuid4()
uuid.uuid7()                         # Python 3.14+

-- PostgreSQL
SELECT gen_random_uuid();            -- v4 (PostgreSQL 13+)
SELECT uuidv7();                     -- PostgreSQL 18+

// Java
java.util.UUID.randomUUID();

// C# / .NET
Guid.NewGuid();                      // v4
Guid.CreateVersion7();               // .NET 9+

# Shell (Linux, macOS)
uuidgen
Suggerimento: ti serve il timestamp di un UUID v7? Le prime 12 cifre esadecimali (senza trattini) sono il tempo Unix in millisecondi. Convertile da esadecimale a decimale e incolla il risultato nel convertitore di timestamp Unix.

Domande frequenti

Due UUID possono mai essere uguali?

In teoria sì; in pratica no. Con 122 bit casuali, il numero di valori v4 possibili è così grande che dovresti generare miliardi di UUID al secondo per molti decenni prima che un solo duplicato diventi probabile. Le collisioni nei sistemi reali derivano quasi sempre da un generatore di numeri casuali difettoso o da dati copiati, non dal caso.

Qual è la differenza tra UUID e GUID?

In pratica nessuna. GUID è il termine usato nelle tecnologie Microsoft; formato e dimensione sono gli stessi.

Meglio usare v4 o v7?

Usa v7 per le chiavi primarie di database e per tutto ciò che vuoi ordinare per data di creazione. Usa v4 quando l'ID non deve rivelare nulla, come nel caso degli identificatori esposti negli URL pubblici.

L'UUID nil è valido?

Sì. 00000000-0000-0000-0000-000000000000 è lo speciale UUID nil, e la RFC 9562 definisce anche un UUID max composto solo da cifre f. Entrambi vengono spesso usati come segnaposto.

Aggiornato

Copiato negli appunti