Genera identificatori
Genera UUID delle versioni 1, 3, 4, 5, 6 e 7, o ULID, uno alla volta o in lotti fino a mille, e analizza qualsiasi identificatore per sapere quale versione è, quale variante usa e quale data contiene. Vengono calcolati nel tuo browser con il generatore crittografico del sistema.
122 bit casuali. Il più usato quando serve solo un identificatore univoco.
Formato
Risultato
Analizza un UUID o ULID
Accetta trattini, graffe, il prefisso urn:uuid: o un ULID di 26 caratteri
Tipo
Versione 7: data Unix ordinabile
Variante
RFC 9562 (in precedenza RFC 4122)
Data di creazione
22 feb 2022, 16:22:22 2022-02-22T19:22:22.000Z · 1645557742000 ms
Canonico017f22e2-79b0-7cc3-98c4-dc0c0c07398f
Maiuscolo017F22E2-79B0-7CC3-98C4-DC0C0C07398F
GUID con graffe{017F22E2-79B0-7CC3-98C4-DC0C0C07398F}
URNurn:uuid:017f22e2-79b0-7cc3-98c4-dc0c0c07398f
Come ULID01FWHE4YDGFK1SHH6W1G60EECF
Esadecimale017f22e279b07cc398c4dc0c0c07398f
Intero decimale1989357241971137676463954034883508623
Base64AX8i4nmwfMOYxNwMDAc5jw==

Come funziona

Un UUID è un numero a 128 bit scritto come 32 cifre esadecimali in cinque gruppi (8-4-4-4-12). Serve a identificare un record senza chiedere a nessuno se il valore è già in uso: due server, due app mobili o due processi possono creare identificatori nello stesso momento senza coordinarsi e senza collisioni. Il formato è definito dalla RFC 9562, che nel 2024 ha sostituito la RFC 4122 e aggiunto le versioni 6, 7 e 8.

La cifra che apre il terzo gruppo indica la versione, e ogni versione organizza i bit in modo diverso. La 4 è puro caso. La 7 inizia con la data in millisecondi, quindi gli identificatori risultano ordinati per creazione. Le versioni 3 e 5 non hanno nulla di casuale: derivano dall'hash di uno spazio dei nomi e di un nome, e per questo danno sempre lo stesso risultato. La 1 e la 6 contengono una data con precisione di 100 nanosecondi e un nodo che storicamente era il MAC del computer.

L'analizzatore fa il percorso inverso: legge versione e variante, recupera la data degli UUID v1, v6 e v7 e degli ULID, e mostra lo stesso valore scritto come GUID, URN, esadecimale, intero o Base64. Tutto viene calcolato nel tuo browser; nessun identificatore viene inviato a un server.

Esempi

v5 · DNS · www.example.com2ed6657d-e927-568b-95e1-2665a8aea6a2È il vettore di test della RFC 9562. Qualsiasi libreria che implementi correttamente la versione 5 deve restituire esattamente questo valore per quel nome nello spazio DNS.
017F22E2-79B0-7CC3-98C4-DC0C0C07398F2022-02-22T19:22:22.000ZLe prime 12 cifre di un UUID v7 sono i millisecondi Unix in esadecimale: 0x017F22E279B0 vale 1645557742000.
C232AB00-9414-11EC-B3C8-9F6BDECED8461EC9414C-232A-6B00-B3C8-9F6BDECED846Lo stesso istante come versione 1 e come versione 6. La 6 riordina i bit della data dal più al meno significativo perché il testo si ordini cronologicamente; la sequenza di clock e il nodo non cambiano.
01ARZ3NDEKTSV4RRFFQ69G5FAV01563e3a-b5d3-d676-4c61-efb99302bd5bUn ULID occupa gli stessi 128 bit di un UUID, quindi può essere salvato in una colonna uuid. Ma non ha versione né variante: letto come UUID, quelle cifre fanno parte della parte casuale.

Casi d'uso

  • Creare la chiave primaria nel client o in più servizi contemporaneamente, senza attendere che il database assegni un autoincremento.
  • Generare chiavi di idempotenza perché un pagamento o un ordine ritentato non venga elaborato due volte.
  • Etichettare ogni richiesta con un identificatore di correlazione per seguirla nei log di più microservizi.
  • Derivare con v5 un identificatore stabile da una chiave naturale (un'email, un URL, uno SKU) perché due sistemi arrivino allo stesso valore senza condividere una tabella.
  • Sapere quando è stato creato un record a partire dal suo UUID v7 o ULID quando compare in un log o in un report di errore.
  • Caricare dati di test con centinaia di identificatori validi in un colpo solo.

Domande frequenti

v4 o v7 come chiave primaria?

v7, a meno che tu non abbia un motivo per nascondere la data di creazione. Gli indici ad albero B memorizzano le chiavi in ordine, e un v4 finisce in un punto qualsiasi dell'indice: ogni inserimento tocca una pagina diversa, le pagine si dividono e la cache rende meno. Un v7 va sempre in fondo, come un autoincremento. Attenzione a SQL Server: il tipo uniqueidentifier ordina a partire dagli ultimi sei byte, quindi lì anche un v7 non risulta sequenziale.

Due UUID v4 possono ripetersi?

In teoria sì, in pratica no. Un v4 ha 122 bit casuali, e per arrivare a una probabilità del 50 % di almeno una ripetizione bisognerebbe generarne circa 2,7 × 10¹⁸, cioè un miliardo al secondo per più di 85 anni. La condizione è usare un generatore crittografico: i duplicati reali segnalati derivano da semi mal inizializzati, non dalla matematica.

UUID e GUID sono la stessa cosa?

Sì, GUID è il nome usato da Microsoft e il testo è identico; su Windows compare di solito in maiuscolo e tra graffe. La differenza è nel binario: Guid.ToByteArray di .NET salva i primi tre gruppi in little-endian, quindi se leggi quei byte grezzi da un altro linguaggio vedrai le prime cifre invertite.

Posso usare un UUID come token segreto?

Un v4 ben generato ha 122 bit imprevedibili, sufficienti per un link difficile da indovinare, ma la RFC 9562 chiarisce che gli UUID non sono pensati come credenziali: molte librerie non garantiscono un generatore crittografico, e le versioni 1, 6 e 7 rivelano la data di creazione. Per token di sessione o di recupero password è meglio generare byte casuali dedicati.

ULID o UUID v7?

Contengono quasi le stesse informazioni: 48 bit di millisecondi e il resto casuale. L'ULID si scrive in 26 caratteri senza trattini né lettere ambigue, più comodo in un URL. Il v7 è un UUID standard, quindi entra nelle colonne uuid di PostgreSQL e in qualsiasi validatore senza conversione. Se parti da zero e il tuo database ha un tipo uuid, v7.

Perché il nodo dei miei UUID v1 non è il mio MAC?

Perché esporre il MAC della scheda di rete permette di risalire a quale macchina ha creato ogni identificatore, ed è così che nel 1999 fu identificato l'autore del virus Melissa. La RFC 9562 raccomanda un nodo casuale con il bit multicast attivo, che è ciò che fa questo strumento; l'analizzatore ti avvisa quando un UUID v1 contiene un MAC reale.