OneKitTools logoOneKitTools
developer5 min di lettura

"UUID vs ULID vs CUID: Quale Formato di ID Unico Usare nel 2026?"

UUID, ULID, CUID, NanoID — troppi formati di ID. Ecco una spiegazione in linguaggio semplice di come funziona ciascuno, dove ciascuno fallisce e quale scegliere per il tuo database, API o URL.

OneKitTools Team14 aprile 2026

Perché gli ID Unici Sono Più Difficili di Quanto Sembrano

Hai bisogno di un identificatore unico per una riga di database, una risorsa API, un token di sessione. Facile, no? Basta usare un numero.

Il problema con gli interi sequenziali: sono prevedibili (/users/1, /users/2) — chiunque può enumerare le tue risorse. Richiedono un'autorità centrale per emetterli (solo un server può decidere il numero "successivo"). E rivelano informazioni sull'attività (il tuo millesimo ordine ha ID 1000).

Così il mondo ha inventato ID migliori. E ha continuato a inventarne altri. Ecco cosa fa ciascuno.

UUID (v4) — La Scelta Predefinita Sicura

Formato: 550e8400-e29b-41d4-a716-446655440000 Lunghezza: 36 caratteri (32 esadecimali + 4 trattini) Casualità: 122 bit

UUID v4 è composto da 122 bit casuali formattati in modo standard. La probabilità di collisione è così astronomicamente bassa (dovresti generare 1 miliardo di UUID al secondo per 85 anni per avere il 50% di probabilità di collisione) che è praticamente impossibile.

Cosa fa bene UUID:

  • Standard universale — ogni linguaggio, database e framework ha supporto nativo per UUID
  • Nessun coordinamento necessario — qualsiasi server, qualsiasi client può generarne uno indipendentemente
  • Non sequenziale — nessun attacco di enumerazione

Cosa fa male UUID:

  • Non ordinabile — gli UUID sono casuali, quindi non si ordinano per data di creazione. In un indice B-tree (come funzionano la maggior parte dei database), gli inserimenti casuali causano "page split" — il database riorganizza costantemente il suo indice. Su larga scala, questo è costoso.
  • Grande: 36 caratteri come stringa, 16 byte come binario
  • Non sicuro per URL (contiene trattini)

Usa UUID v4 quando: hai bisogno di un ID standard e ampiamente supportato e non ti preoccupi dell'ordinamento.


UUID v7 — UUID Migliorato

Formato: 018e2c4c-3d12-7f3a-91f8-3e4a5b6c7d8e Lunghezza: 36 caratteri Casualità: 74 bit (con prefisso timestamp a 48 bit in millisecondi)

UUID v7 (ratificato nel 2023) è UUID con un prefisso timestamp. I primi 48 bit sono un timestamp Unix in millisecondi, rendendo gli UUID ordinabili per data di creazione.

Perché questo è importante: ID ordinabili = inserimenti B-tree sequenziali = prestazioni degli indici del database notevolmente migliori su larga scala.

Usa UUID v7 quando: vuoi la compatibilità UUID ma hai bisogno di ID ordinati per tempo per le prestazioni del database.


ULID — Alternativa UUID Ordinabile e Sicura per URL

Formato: 01ARZ3NDEKTSV4RRFFQ69G5FAV Lunghezza: 26 caratteri Casualità: 80 bit (con prefisso timestamp a 48 bit in millisecondi)

ULID (Universally Unique Lexicographically Sortable Identifier) risolve il problema di ordinamento di UUID con un formato più pulito. Codifica 48 bit di timestamp + 80 bit di casualità in Crockford Base32 (nessun trattino, nessun carattere ambiguo).

Cosa fa bene ULID:

  • Ordinabile lessicograficamente (si ordina correttamente come stringa)
  • Sicuro per URL (nessun trattino o carattere speciale)
  • 26 caratteri contro i 36 di UUID — più compatto
  • Timestamp con precisione al millisecondo incorporato

Cosa fa male ULID:

  • Meno universale di UUID — richiede una libreria nella maggior parte dei linguaggi
  • Monotonia: più ULID generati nello stesso millisecondo potrebbero non ordinarsi correttamente senza la variante monotonica

Usa ULID quando: vuoi ID ordinabili che siano anche compatti e sicuri per URL, e non hai bisogno della compatibilità UUID.


CUID2 — Sicuro per URL, Resistente alle Collisioni, Senza Timestamp

Formato: clyg4v5l20000356ok1f5t6nb Lunghezza: 24 caratteri (predefinito) Casualità: alta (fingerprinting SHA-3, nessuna struttura prevedibile)

CUID2 (Collision-Resistant Unique IDentifier) è progettato per contesti sensibili alla sicurezza. A differenza di ULID, non ha deliberatamente un prefisso timestamp — non puoi dedurre quando è stata creata una risorsa dal suo ID.

Cosa fa bene CUID2:

  • Più sicuro di UUID/ULID per ID rivolti al pubblico (nessuna informazione temporale)
  • Sicuro per URL
  • Lunghezza configurabile (compromesso tra lunghezza e resistenza alle collisioni)

Cosa fa male CUID2:

  • Non ordinabile (per design)
  • Meno ampiamente supportato di UUID
  • Dipende da una libreria specifica

Usa CUID2 quando: gli ID sono rivolti al pubblico e non vuoi rivelare i timestamp di creazione (ID utente, chiavi API, link brevi).


NanoID — Piccolo, Veloce, Personalizzabile

Formato: V1StGXR8_Z5jdHi6B-myT Lunghezza: 21 caratteri (predefinito, configurabile) Alfabeto: personalizzabile (predefinito: Base64 sicuro per URL)

NanoID è una moderna alternativa minimalista a UUID. Stessa probabilità di collisione di UUID v4 con 21 caratteri, ma più piccolo e con un alfabeto personalizzabile.

Cosa fa bene NanoID:

  • Il più piccolo del gruppo (21 caratteri contro i 36 di UUID)
  • Alfabeto personalizzabile — può generare ID usando solo lettere minuscole, solo numeri, ecc.
  • Disponibile in 20+ linguaggi
  • Veloce

Cosa fa male NanoID:

  • Non ordinabile
  • Non è uno standard (nessun RFC)

Usa NanoID quando: le dimensioni contano (URL, token brevi) o hai bisogno di un alfabeto personalizzato.


Tabella di Confronto

UUID v4UUID v7ULIDCUID2NanoID
Ordinabile
Sicuro per URL
Standard (RFC)
Prestazioni DBScarsaBuonaBuonaScarsaScarsa
Nasconde timestamp
Dimensione (caratteri)3636262421

La Risposta Semplice

  • Scelta predefinita: UUID v7 — ordinabile, standard, ottime prestazioni DB
  • Hai bisogno di URL-safe + ordinabile: ULID
  • ID pubblici (non rivelare il timing): CUID2
  • Token brevi, alfabeto personalizzato: NanoID
  • Sistema legacy / massima compatibilità: UUID v4

Genera ID Ora

Il Generatore UUID genera UUID v4 e v7 — generazione in massa, copia con un clic. Nessun account richiesto.

Condividi