Generatore di UUID — v4, v7, ULID e NanoID, con decodificatore
Genera in blocco UUID v4 o v7 ordinati nel tempo, ULID e NanoID, oppure incolla un ID per vederne la versione e il timestamp incorporato.
Convalida e decodifica un ID
UUID versione 7 (ordinato per tempo Unix)
| Forma canonica | 017f22e2-79b0-7cc3-98c4-dc0c0c07398f |
|---|---|
| Versione | 7 — ordinato per tempo Unix |
| Variante | RFC 9562 / RFC 4122 |
| rand_a (12 bits) | cc3 |
| Timestamp | 2022-02-22T19:22:22.000Z Unix ms 1645557742000 |
Gli ID vengono generati nel tuo browser con crypto.getRandomValues. Nulla viene inviato o conservato. Sfoglia tutti gli strumenti gratuiti.
Hai trovato un problema o qualcosa che potrebbe andare meglio? Leggiamo ogni messaggio e sistemiamo le cose in fretta.
Questo generatore di UUID crea UUID casuali di versione 4, UUID di versione 7 ordinati nel tempo come definito nell'RFC 9562, ULID e NanoID, uno alla volta o fino a 10.000 in un lotto da copiare o scaricare. Ogni bit casuale proviene da crypto.getRandomValues, il generatore crittografico del browser, e non da Math.random. Il decodificatore qui sotto accetta qualsiasi UUID, GUID o ULID e ne indica versione e variante e, per v1, v6, v7 e ULID, il momento in cui è stato creato.
Gli UUID v7 e gli ULID di uno stesso lotto sono strettamente crescenti, anche quando migliaia condividono lo stesso millisecondo, quindi si ordinano per data di creazione come dovrebbero fare le chiavi di un database. La versione 1 non è disponibile: un browser non ha accesso all'indirizzo MAC né a una sequenza di clock persistente, quindi un UUID v1 creato in una pagina web imiterebbe solo il formato. Se ti servono UUID v1 o v3/v5 basati su nome, generali con la libreria UUID del tuo linguaggio.
Come si usa
- Scegli il tipo: v4 per un ID casuale di uso generale, v7 per le chiavi primarie di un database, ULID o NanoID se il tuo stack li usa.
- Imposta quanti te ne servono, fino a 10.000, e premi Genera (o Invio nel campo della quantità).
- Scegli un formato: maiuscolo, senza trattini o tra parentesi graffe per il registro di Windows e i contesti .NET.
- Copia tutto o scarica un file di testo con un ID per riga, oppure un array JSON.
- Per esaminare un ID esistente, incollalo nel decodificatore per vederne versione, variante ed eventuale timestamp.
Domande frequenti
Qual è la differenza tra UUID v4 e v7?
Un UUID v4 è composto da 122 bit casuali senza alcuna struttura. Un UUID v7 mette all'inizio un timestamp Unix a 48 bit in millisecondi, seguito da 74 bit casuali, quindi i valori v7 si ordinano per data di creazione. Questo ordinamento rende i v7 molto più adatti come chiave primaria di un database: le nuove righe finiscono in fondo all'indice invece che in posizioni casuali, il che riduce le divisioni di pagina e mantiene veloci gli inserimenti. Il rovescio della medaglia è che un ID v7 rivela quando è stato creato.
Due UUID possono mai essere uguali?
In teoria sì, in pratica no, a patto che provengano da una buona fonte di casualità. Con 122 bit casuali, dovresti generare circa 2,7 trilioni di miliardi (2,7 × 10^18) di UUID v4 per avere il 50% di probabilità di una singola collisione. I duplicati reali nascono dai bug: un generatore casuale debole o inizializzato male, lo stato copiato di una macchina virtuale o codice che riutilizza un valore.
Un GUID è la stessa cosa di un UUID?
Sì. GUID è il nome che Microsoft dà allo stesso identificatore a 128 bit, e i GUID moderni sono UUID standard (di solito versione 4). Le uniche differenze riguardano la presentazione: gli strumenti Windows mostrano spesso i GUID in maiuscolo e tra parentesi graffe, come {3F2504E0-4F89-41D3-9A0C-0305E82C3301}. Usa le opzioni maiuscolo e parentesi graffe per ottenere questa forma.
Meglio UUID v7 o ULID?
Entrambi sono a 128 bit, ordinati nel tempo e contengono un timestamp in millisecondi. UUID v7 si adatta ovunque esista già una colonna o un tipo UUID, come il tipo uuid di PostgreSQL o la classe UUID di Java. ULID è più corto come testo (26 caratteri invece di 36) e non distingue maiuscole e minuscole, ma richiede una libreria dedicata e viene memorizzato come testo o binario. Se il tuo database e il tuo linguaggio supportano già gli UUID, v7 è la scelta più semplice.
Quanto deve essere lungo un NanoID?
I 21 caratteri predefiniti dall'alfabeto URL-safe di 64 caratteri danno 126 bit di casualità, paragonabili ai 122 di UUID v4. ID più corti vanno bene quando il numero di ID è ridotto e indovinarne uno non è un problema, come un link breve con rate limiting. Il numero di bit mostrato sotto il cursore della lunghezza ti dice a cosa stai rinunciando; ogni carattere di un alfabeto da 64 simboli aggiunge 6 bit.
Posso sapere quando è stato creato un UUID?
Solo per le versioni basate sul tempo. Incolla l'ID nel decodificatore: v7 e ULID memorizzano i millisecondi Unix nei primi 48 bit, mentre v1 e v6 memorizzano intervalli di 100 nanosecondi a partire dal 15 ottobre 1582. Un UUID v4 non contiene alcuna informazione temporale, solo bit casuali più gli indicatori di versione e variante.
Leggere un UUID: versione e variante
Un UUID si scrive come 32 cifre esadecimali in gruppi da 8-4-4-4-12. Due posizioni lo identificano. La prima cifra del terzo gruppo è la versione: in 0190a3c4-1b2c-7d3e-8f40-0123456789ab è 7. La prima cifra del quarto gruppo codifica la variante: 8, 9, a o b indicano il layout standard RFC 9562, quello usato oggi da quasi tutti gli UUID.
• v1: timestamp gregoriano più l'indirizzo MAC della macchina che lo genera. Li rivela entrambi; raramente usato nei sistemi nuovi.
• v3 e v5: deterministici, derivati da un namespace e da un nome con MD5 (v3) o SHA-1 (v5). Lo stesso input dà sempre lo stesso UUID.
• v4: casuale. Il predefinito della maggior parte delle librerie.
• v6: v1 con il timestamp riordinato per renderlo ordinabile; un percorso di migrazione per chi usa v1.
• v7: timestamp Unix in millisecondi più bit casuali. La versione ordinata nel tempo consigliata per i sistemi nuovi.
• v8: un layout definito dal fornitore; sono fissi solo i bit di versione e variante.
Perché gli UUID casuali rallentano i database e cosa risolve v7
La maggior parte dei database memorizza la chiave primaria in un indice B-tree. Con chiavi sequenziali, ogni nuova riga finisce nella pagina più a destra dell'indice, che resta in memoria. Con UUID v4 casuali, ogni inserimento finisce in una pagina casuale; quando l'indice supera la memoria disponibile, gli inserimenti iniziano a leggere pagine dal disco e a dividerle, e il throughput in scrittura cala. InnoDB di MySQL, che organizza l'intera tabella in base alla chiave primaria, è quello che ne risente di più.
UUID v7 mantiene i vantaggi degli UUID (univoci a livello globale, generabili da qualsiasi client senza una richiesta al server, sicuri da esporre) comportandosi nell'indice quasi come una colonna auto-increment. L'RFC 9562, pubblicato a maggio 2024, raccomanda v7 rispetto a v1 e v6 per i nuovi ID basati sul tempo, e PostgreSQL 18 ha aggiunto una funzione integrata uuidv7().
Memorizza gli UUID in un tipo nativo da 16 byte (uuid in PostgreSQL, BINARY(16) in MySQL) anziché in una stringa di 36 caratteri, che più che raddoppia la dimensione dell'indice.
UUID, ULID e NanoID a confronto
• UUID v4: 36 caratteri, 122 bit casuali, supporto universale in librerie e database, non ordinabile.
• UUID v7: 36 caratteri, tempo in millisecondi a 48 bit più 74 bit casuali, ordinabile, supportato ovunque lo siano gli UUID.
• ULID: 26 caratteri in Crockford Base32, tempo a 48 bit più 80 bit casuali, ordinabile e senza distinzione tra maiuscole e minuscole, richiede una libreria.
• NanoID: 21 caratteri per impostazione predefinita, alfabeto e lunghezza a scelta, URL-safe e compatto, senza timestamp e senza una forma binaria standard.
Strumenti gratuiti correlati
- Convertitore di timestamp Unix — Converti secondi, millisecondi, microsecondi o nanosecondi epoch in date in qualsiasi fuso orario, e viceversa. Orologio in tempo reale, modalità batch, snippet di codice.
- Generatore di password — Genera una password casuale sicura, una passphrase facile da ricordare o un PIN. Funziona interamente nel browser: nulla viene inviato o salvato.
- Generatore di hash — Calcola l'hash di testo o file con MD5, SHA-1, SHA-256, SHA-384, SHA-512 e CRC32, verifica un checksum o calcola un HMAC. I file non lasciano mai il tuo dispositivo.
- Formattatore JSON — Formatta, minifica e valida JSON, con gli errori di parsing localizzati per riga e colonna. Nel tuo browser, senza upload.