UUID: cosa sono e come generarli in JavaScript

Gli UUID sono identificatori univoci universali a 128 bit. Scopri le versioni principali, come generarli in JavaScript/Node.js e quando usarli.

Cos'è un UUID

Un UUID (Universally Unique Identifier) è un identificatore a 128 bit standardizzato (RFC 4122) rappresentato come stringa esadecimale nel formato 8-4-4-4-12: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx. Il valore M indica la versione e N indica la variante. Con 2^122 combinazioni possibili, la probabilità di collisione in uso pratico è astronomicamente bassa.

Le versioni principali

  • UUID v1: basato su timestamp + indirizzo MAC. Ordinabile nel tempo ma espone informazioni hardware
  • UUID v4: completamente casuale. Il più usato oggi per database e ID di entità
  • UUID v5: hash SHA-1 di un namespace + nome. Deterministico e riproducibile (stesso input = stesso UUID)
  • UUID v7 (nuovo): basato su timestamp in millisecondo + casualità. Ordinabile come v1, privato come v4

Come generare UUID in JavaScript

Nel browser moderno e in Node.js 19+: crypto.randomUUID() restituisce un UUID v4 in modo nativo e sicuro, senza librerie esterne. Per versioni precedenti o per i tipi v1, v5, v7 si usa il package npm 'uuid': import { v4 as uuidv4 } from 'uuid'; const id = uuidv4();

UUID vs ULID vs NanoID

  • UUID v4: standard universale, leggibile da qualsiasi sistema; non ordinabile cronologicamente nel DB
  • ULID: 128 bit, base32, ordinabile cronologicamente (ottimo per indici DB)
  • NanoID: più compatto (21 caratteri), URL-safe, buona casualità; non standard RFC

Quando usare gli UUID

Gli UUID sono ideali per ID di entità in database distribuiti (dove un intero auto-increment creerebbe conflitti tra nodi), per identificatori pubblici nelle API (evitano l'enumeration attack possibile con ID sequenziali interi), per le sessioni e i token temporanei, e per qualsiasi contesto dove l'unicità deve essere garantita senza coordinazione centralizzata.