Generatore di Numeri Casuali Veri · Crittografico · Gratuito

🔑 Generatore UUID/GUID Online

Genera Identificatori Univoci Universali (UUID) per database, API, sistemi distribuiti e applicazioni. Supporta UUID v4 (completamente random) e il nuovo UUID v7 (time-ordered) per migliori performance sugli indici database.

ℹ️ Differenze tra versioni:

UUID v4: 122 bit casuali, standard consolidato
UUID v7: Timestamp + random, ordinabili, migliori performance DB

💡 Per nuovi progetti, preferisci UUID v7 per evitare frammentazione indici.

🎯 A Cosa Servono gli UUID

Gli UUID (Universally Unique Identifier) sono identificatori a 128 bit progettati per essere unici a livello globale senza coordinamento centrale. Sono fondamentali nello sviluppo software moderno per identificare risorse in sistemi distribuiti.

🗄️ Chiavi Primarie Database

Sostituisci gli ID auto-incrementali con UUID per database distribuiti, microservizi e sistemi che devono generare ID senza comunicare con un server centrale.

🔗 API e Web Services

Identifica risorse REST in modo univoco. Gli UUID nell'URL sono più sicuri degli ID sequenziali che rivelano quanti record esistono.

📁 Nomi File e Asset

Genera nomi univoci per upload di file, immagini, documenti. Evita collisioni anche con milioni di file.

🔐 Token e Sessioni

Crea identificatori di sessione, token di reset password, codici di conferma. L'alta entropia li rende impossibili da indovinare.

📊 Tracking e Analytics

Traccia eventi, transazioni, richieste attraverso sistemi distribuiti mantenendo correlazione.

🧪 Testing e Sviluppo

Genera dati di test con ID realistici per mockup, seed database, demo applicazioni.

📊 UUID v4 vs UUID v7: Quale Scegliere?

Caratteristica
UUID v4
UUID v7
Standard
RFC 4122 (2005)
RFC 9562 (2024)
Struttura
122 bit random
48 bit timestamp + 74 bit random
Ordinabilità
❌ Casuale
✅ Cronologico
Performance DB
⚠️ Frammentazione indici
✅ Insert sequenziali
Supporto
✅ Universale
⚠️ In crescita
Quando usare
Legacy, compatibilità
Nuovi progetti, DB ad alte prestazioni

💡 Consiglio: Se stai iniziando un nuovo progetto nel 2024+, usa UUID v7. L'ordinamento cronologico migliora drasticamente le performance degli indici B-tree (fino al 50% più veloci su INSERT) e permette di estrarre il timestamp se necessario.

🔧 Integrazione nel Codice

Ecco come generare UUID nei linguaggi più comuni:

JavaScript (Node.js 19+)

crypto.randomUUID() // UUID v4

Python

import uuid; str(uuid.uuid4())

PHP

Ramsey\Uuid\Uuid::uuid4()->toString()

PostgreSQL

gen_random_uuid()

📚 Anatomia di un UUID

550e8400-e29b-41d4-a716-446655440000
time-low (32 bit)
time-mid (16 bit)
version (4 bit) - indica v4
time-hi (12 bit)
variant (2 bit) - RFC 4122
clock-seq (14 bit)
node (48 bit)

❓ Domande frequenti

Meglio usare UUID v4 o v7 come chiave primaria in un database?

Dipende dal motore e da come è fatto l'indice. Il v4 è puramente casuale, quindi ogni nuovo record cade in un punto imprevedibile dell'indice B-tree: su tabelle grandi questo genera frammentazione e frequenti page split, un problema ben documentato su MySQL/InnoDB, dove la chiave primaria coincide con l'indice clusterizzato. Il v7 mette invece un timestamp Unix in millisecondi nei bit iniziali, così i valori crescono nel tempo e gli inserimenti restano quasi sequenziali, tenendo l'indice più compatto. In pratica: scegli il v7 se ti serve ordinamento cronologico o throughput elevato in scrittura, il v4 se vuoi la massima imprevedibilità e l'ordine non ti interessa.

Un UUID v7 rivela l'orario in cui è stato creato? È un rischio per la privacy?

Sì: i primi 48 bit di un UUID v7 sono un timestamp Unix in millisecondi, quindi chiunque abbia l'identificatore può ricavare, con precisione al millesimo di secondo, quando è stato generato. Non è un difetto ma una scelta esplicita della RFC 9562, che serve proprio a renderlo ordinabile. Se stai creando identificatori pubblici per risorse in cui l'istante di creazione è un'informazione delicata (per esempio ordini, ticket o account utente), preferisci il v4, che non porta con sé alcun dato temporale.

Due UUID generati da questo strumento possono risultare identici per caso?

In pratica no. Un UUID v4 contiene 122 bit casuali (128 meno i bit fissi di versione e variante), cioè circa 5,3 × 10^36 valori possibili: per avere una probabilità concreta di collisione dovresti generarne miliardi al secondo per decenni. Nel v7 la parte casuale è più piccola, perché 48 bit sono occupati dal timestamp, ma restano 74 bit pseudo-casuali: bastano a distinguere anche gli UUID prodotti nello stesso identico millisecondo.

Gli UUID generati nel browser sono davvero casuali e non prevedibili?

Sì, perché questo generatore si appoggia all'API crittografica del browser (crypto.randomUUID e crypto.getRandomValues), che attinge a una fonte di entropia sicura fornita dal sistema operativo. È un livello di casualità ben più solido di un semplice Math.random() e adatto anche a identificatori che non devono essere indovinabili. Ricorda però che un UUID resta un identificatore, non un segreto: per password, chiavi API o token di sessione usa strumenti nati apposta per gestire i segreti.

Che differenza c'è tra UUID e GUID? Il valore generato qui funziona anche in ambiente Microsoft?

Sono la stessa cosa: GUID (Globally Unique Identifier) è il nome che Microsoft ha storicamente dato agli UUID definiti dalla RFC 4122. Il valore a 128 bit prodotto qui è pienamente compatibile con il tipo Guid di .NET, la colonna UNIQUEIDENTIFIER di SQL Server e i GUID del registro di Windows. L'unica differenza che a volte noti è la formattazione: alcuni contesti Microsoft racchiudono il GUID tra parentesi graffe {…}, ma la sequenza esadecimale sottostante è identica.

Qui trovo solo v4 e v7: perché mancano v1 e v6, e quando servirebbero?

Questo strumento genera v4 e v7 perché coprono i due scenari più diffusi oggi: massima casualità da un lato, identificatori ordinabili nel tempo dall'altro. Il v1 non è deprecato ma è sconsigliato per i nuovi progetti, perché nella sua forma classica include l'indirizzo MAC della scheda di rete, con possibili implicazioni di privacy e tracciabilità dell'hardware; il v6 è una sua rielaborazione ordinabile introdotta dalla RFC 9562. Per quasi tutti i progetti nuovi il v7 è la scelta consigliata al posto sia del v1 sia del v6, perché offre l'ordinamento cronologico senza esporre alcun dato sull'hardware.