Generatore ULID gratuito — Genera e decodifica ULID
Genera, decodifica e converti ULID online — gratis e 100% nel browser. Estrai il timestamp incorporato in un ULID, converti ULID in UUID e viceversa, genera in batch, con modalità monotonica. Nulla viene inviato a un server.
Ogni ULID usa nuova casualità a 80 bit.
Un ULID e un UUID sono entrambi a 128 bit, quindi la conversione è senza perdite e reversibile. Ti servono UUID classici? Prova il Generatore UUID.
Cos'è un ULID?
Un ULID — Universally Unique Lexicographically Sortable Identifier — è un identificatore a 128 bit creato per correggere una debolezza pratica dell'UUIDv4 casuale mantenendone la proprietà migliore: puoi generarne uno ovunque, senza un coordinatore centrale, e avere la certezza che sia univoco. La differenza è che un ULID è ordinabile per tempo. È reso come 26 caratteri di Base32 di Crockford, divisi in due parti: i primi 10 caratteri sono un timestamp a 48 bit che conta i millisecondi dall'epoca Unix, e gli ultimi 16 caratteri sono 80 bit di casualità crittograficamente sicura. Metti il tempo per primo, codificalo in un alfabeto che preserva l'ordine, e l'identificatore si ordina cronologicamente come una semplice stringa.
Questa singola scelta di progettazione ha conseguenze enormi per i database. Una chiave primaria UUIDv4 casuale finisce in un punto imprevedibile in un indice B-tree a ogni inserimento, il che frammenta l'indice, sovraccarica la cache e degrada lentamente le prestazioni di scrittura man mano che una tabella cresce. Un ULID, poiché ha il prefisso temporale, finisce ogni volta alla fine dell'indice o vicino ad essa — gli inserimenti restano sequenziali, l'indice resta compatto e le scansioni di intervallo su una finestra temporale diventano economiche. Ottieni la generazione senza coordinamento di un UUID e la località di inserimento di un intero auto-incrementale, senza esporre un contatore sequenziale indovinabile.
I dettagli di codifica sono deliberati. La Base32 di Crockford esclude le lettere I, L, O e U, sia per evitare la confusione visiva con le cifre 1 e 0 sia per rendere la stringa insensibile alle maiuscole in input. Il risultato è 26 caratteri senza trattini che si possono inserire in tutta sicurezza in un URL, in un nome di file o in un header di richiesta senza escaping — notevolmente più corti della forma con trattini di 36 caratteri di un UUID. Il timestamp a 48 bit non si esaurisce per lungo tempo: può rappresentare date fino all'anno 10889 prima che il contatore di millisecondi vada in overflow.
Gli ULID non sono lo strumento giusto per ogni cosa. Il timestamp incorporato rivela quando un record è stato creato, il che è una caratteristica per il debug e l'ordinamento ma una piccola fuga di informazioni se preferisci non esporla. E se il tuo stack è vincolato al tipo UUID, potresti preferire UUIDv7, che applica la stessa idea di prefisso temporale dentro il formato UUID standard. Ma quando vuoi identificatori corti, sicuri per gli URL e ordinabili che puoi coniare su qualsiasi nodo e da cui rileggere un timestamp, un ULID è un'eccellente scelta predefinita — e poiché è solo di 128 bit, puoi sempre convertirlo da e verso un UUID con la scheda Converti di questo strumento.
// Browser / Node with the `ulid` package
import { ulid, decodeTime } from 'ulid';
const id = ulid(); // e.g. 01KVT0F720ZK9N4T2QX7VR8WMC
const ts = decodeTime(id); // 1782210600000 -> 2026-06-23T10:30:00.000Z
// Monotonic factory: strictly increasing within the same millisecond
import { monotonicFactory } from 'ulid';
const next = monotonicFactory();
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WMC
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WMD
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WME Caratteristiche principali
Genera, decodifica e converti in un'unica pagina
Tre schede coprono l'intero flusso di lavoro ULID: conia nuovi ULID, decodificane uno esistente per leggerne il timestamp e converti senza perdite tra ULID e UUID. La maggior parte degli strumenti concorrenti fa solo la prima cosa; qui l'intero ciclo completo vive in un'unica pagina.
Decoder di timestamp
Incolla un qualsiasi ULID e leggi l'esatto millisecondo in cui è stato creato — mostrato in UTC, nella tua ora locale e come millisecondi Unix grezzi — più il segmento di casualità a 80 bit. Verifica quando un identificatore è stato coniato senza alcuna interrogazione del database.
Conversione ULID ↔ UUID senza perdite
Un ULID e un UUID sono entrambi a 128 bit, quindi la conversione è esatta e reversibile. La scheda Converti rileva automaticamente quale formato hai incollato e produce l'altro, permettendoti di fare da ponte tra un ULID ordinabile e una colonna o API tipizzata UUID senza perdere un solo bit.
Modalità monotonica
Ti serve un ordinamento rigoroso anche per ID creati nello stesso millisecondo? La modalità monotonica incrementa la casualità così ogni ULID è garantito maggiore del precedente, mantenendo perfettamente ordinato un ciclo di inserimento serrato.
Generazione in batch
Crea fino a 50 ULID alla volta e copia l'intero insieme con Copia tutto. Ideale per popolare fixture di test, inserimenti di massa o per riempire una tabella di lookup senza fare clic cinquanta volte.
Timestamp personalizzato
Incorpora un istante specifico anziché l'ora attuale — utile per dati di test deterministici o per retrodatare record durante una migrazione preservando la proprietà di ordinabilità.
Casualità crittograficamente sicura
Gli 80 bit casuali provengono da crypto.getRandomValues, il CSPRNG del browser — mai Math.random — quindi ogni ULID è imprevedibile e le collisioni nello stesso millisecondo sono incredibilmente improbabili.
100% privato, solo nel browser
Ogni ULID viene generato, decodificato e convertito interamente sul tuo dispositivo. Nessuna richiesta di rete, nessun log, nessuna memorizzazione — verificalo tu stesso in DevTools → Network. Gli identificatori non raggiungono mai una terza parte.
Esempi di ULID
Genera un singolo ULID
Mode: Standard · Quantity: 1
01KVT0F720ZK9N4T2QX7VR8WMC
Un ULID è composto da 26 caratteri di Base32 di Crockford. I primi 10 caratteri codificano un timestamp a 48 bit in millisecondi e gli ultimi 16 codificano 80 bit di casualità crittograficamente sicura estratta da crypto.getRandomValues. Poiché il timestamp viene per primo e la Base32 preserva l'ordine dei byte, gli ULID generati più tardi si ordinano sempre dopo quelli precedenti come semplici stringhe — senza bisogno di un indice separato. Fai clic su Copia per prendere il valore; fai di nuovo clic su Genera per uno nuovo.
Decodifica un ULID per leggerne il timestamp
01ARYZ6S41TSV4RRFFQ69G5FAV
Timestamp (UTC): 2016-07-30T22:36:16.385Z · Randomness: TSV4RRFFQ69G5FAV
La decodifica riconverte i primi 10 caratteri nel valore a 48 bit in millisecondi incorporato al momento della creazione — qui 1469918176385 ms, ovvero 2016-07-30T22:36:16.385Z. Questo è l'esempio canonico della specifica ULID. La scheda Decodifica mostra il timestamp in UTC e nella tua ora locale, i millisecondi Unix grezzi e il segmento di casualità a 80 bit, così puoi verificare esattamente quando un identificatore è stato coniato senza alcuna interrogazione del database.
Converti un ULID in un UUID
01KVT0F720ZK9N4T2QX7VR8WMC
019ef407-9c40-fcd3-5268-57e9f784728c
Un ULID e un UUID sono entrambi esattamente di 128 bit, quindi la conversione è senza perdite e completamente reversibile — gli stessi bit vengono semplicemente ricodificati dalla Base32 di Crockford in esadecimale con trattini. La scheda Converti rileva automaticamente se hai incollato un ULID o un UUID e converte nell'altra forma. Questo ti permette di archiviare ULID in una colonna UUID o di consegnare un ULID a un sistema che parla solo UUID, per poi riconvertirlo quando ti serve di nuovo la stringa ordinabile.
Genera in batch ULID monotonici
Mode: Monotonic · Quantity: 3 (same millisecond)
01KVT0F720ZK9N4T2QX7VR8WMC 01KVT0F720ZK9N4T2QX7VR8WMD 01KVT0F720ZK9N4T2QX7VR8WME
Quando molti ID vengono creati nello stesso millisecondo, gli ULID standard condividono il prefisso temporale di 10 caratteri ma le loro code casuali non sono ordinate. La modalità monotonica risolve questo: all'interno di un millisecondo incrementa di uno la casualità precedente, così ogni ULID è strettamente maggiore del precedente e un batch resta perfettamente ordinato. Nota che i tre valori differiscono solo nell'ultimo carattere (C, D, E) — ideale per inserimenti ad alto throughput dove l'ordinamento deve reggere anche a frequenze inferiori al millisecondo.
Genera un ULID per una data specifica
Custom time: 2026-06-23 10:30:00 UTC
01KVT0F720… (time component 01KVT0F720)
Imposta un timestamp personalizzato e il generatore incorpora quell'esatto istante anziché l'ora attuale, riempiendo comunque la casualità da un RNG sicuro. Il componente temporale di 10 caratteri per 2026-06-23T10:30:00.000Z è 01KVT0F720. È utile per popolare fixture di test con identificatori deterministici e ordinati per tempo, o per retrodatare record durante una migrazione mantenendo intatta la proprietà di ordinabilità.
Come usare il generatore ULID
- 1
Scegli una modalità di generazione
La modalità Standard dà a ogni ULID nuova casualità a 80 bit. La modalità Monotonica garantisce che gli ULID creati nello stesso millisecondo siano strettamente crescenti — scegliela per inserimenti ad alto throughput dove l'ordinamento deve reggere anche a frequenze inferiori al millisecondo.
- 2
Imposta quantità, formato e (facoltativamente) un'ora personalizzata
Genera da 1 a 50 ULID alla volta. L'output è in MAIUSCOLO per impostazione predefinita — la forma canonica dell'ULID — oppure passa al minuscolo. Lascia l'ora vuota per timbrare l'istante attuale, o imposta un timestamp personalizzato per incorporare un momento specifico per fixture o record retrodatati.
- 3
Genera e copia
Fai clic su Genera ULID. Usa Copia su qualsiasi singolo valore, o Copia tutto per prendere l'intero batch come testo separato da a capo, pronto da incollare nel codice, in un file di seed o in un foglio di calcolo.
- 4
Decodifica un ULID per leggerne il timestamp
Nella scheda Decodifica, incolla un qualsiasi ULID per estrarre il timestamp di creazione a 48 bit in UTC e nell'ora locale, i millisecondi Unix grezzi e la casualità a 80 bit — interamente nel tuo browser, senza alcuna ricerca richiesta.
- 5
Converti tra ULID e UUID
Nella scheda ULID ↔ UUID, incolla un ULID o un UUID; lo strumento rileva automaticamente l'input e converte nell'altro formato senza perdite. Archivia ULID in colonne UUID, oppure consegna un ULID a un sistema che accetta solo UUID e riconvertilo quando ti serve la stringa ordinabile.
Common Errors
Trattare gli ULID dello stesso millisecondo come ordinati
Gli ULID standard creati in un millisecondo condividono il prefisso temporale ma hanno code casuali non ordinate, quindi il loro ordine relativo è indefinito. Se dipendi da un ordinamento rigoroso a quella frequenza, usa invece la modalità monotonica.
Standard mode, 3 IDs in one ms → order within the ms is random
Monotonic mode, 3 IDs in one ms → …WMC < …WMD < …WME
Aspettarsi che un ULID convertito sia un UUIDv4 valido
Convertire un ULID in forma UUID ricodifica gli stessi 128 bit; non imposta i campi di versione e variante dell'UUID. Il risultato è una stringa UUID a 128 bit valida ma non risulterà come versione 4 o 7 se una libreria ne ispeziona quei bit.
uuid.version(ulidToUuid(id)) → not 4 (bits are the ULID's)
Treat it as an opaque 128-bit value, or generate a real UUIDv7 instead
Usare a mano le minuscole i, l, o in un ULID
La Base32 di Crockford esclude I, L, O e U. I decoder mappano I e L a 1 e O a 0, ma digitare a mano quelle lettere in un ULID è soggetto a errori. Copia gli ULID anziché ridigitarli.
01ARYZ6S41TSV4RRFFQ69G5FAO → ambiguous O
01ARYZ6S41TSV4RRFFQ69G5FAV → canonical characters only
A cosa servono gli ULID
- Chiavi primarie di database che restano ordinate
- Usa gli ULID come chiavi primarie per ottenere la generazione senza coordinamento di un UUID con la località di inserimento di un intero auto-incrementale. Poiché hanno il prefisso temporale, le nuove righe si aggiungono vicino alla fine di un indice B-tree anziché disperdersi come gli UUIDv4, mantenendo gli inserimenti veloci e l'indice compatto man mano che la tabella cresce.
- Sistemi distribuiti senza una sequenza centrale
- Genera identificatori su qualsiasi nodo — servizio, edge worker o client — senza un contatore condiviso e senza coordinamento delle collisioni, eppure ordina comunque tutto per tempo di creazione a posteriori. Gli ULID danno ai microservizi una chiave univoca e ordinata senza un viaggio di andata e ritorno al database per allocarla.
- Log di eventi e ID di messaggi
- Timbra eventi, righe di log o messaggi in coda con ULID monotonici così restano in rigoroso ordine cronologico anche quando molti sono prodotti nello stesso millisecondo. La scansione di intervallo su una finestra temporale diventa un semplice confronto di stringhe.
- Identificatori pubblici sicuri per gli URL
- Un ULID è composto da 26 caratteri senza trattini e con un alfabeto sicuro per gli URL, quindi si inserisce in un percorso, un nome di file o un header senza escaping ed è più corto di un UUID di 36 caratteri. Decodifica in seguito il timestamp incorporato per vedere quando la risorsa è stata creata.
- Ponte verso un sistema solo UUID
- Lavori con una colonna di database o un'API che accetta solo UUID? Genera ULID ordinabili, convertili in forma UUID per l'archiviazione o il trasporto, e riconvertili quando ti serve la stringa ordinabile e compatta — il valore a 128 bit è preservato esattamente in entrambe le direzioni.
- Fixture di test deterministiche
- Popola i test con ULID a timestamp scelti usando l'opzione dell'ora personalizzata, così le fixture sono riproducibili e già ordinate per tempo. Decodificale nelle asserzioni per verificare il tempo di creazione che il tuo codice ha registrato.
Come funzionano gli ULID
- Layout a 128 bit: 48 bit di tempo + 80 bit di casualità
- Un ULID è esattamente di 128 bit. I 48 bit alti sono un timestamp Unix in millisecondi; gli 80 bit bassi sono casuali. Codificati in Base32 di Crockford a 5 bit per carattere, sono 10 caratteri per il tempo e 16 per la casualità — 26 caratteri in totale. Il carattere iniziale è sempre 7 o inferiore perché 48 bit non riempiono il gruppo superiore di 5 bit.
- Codifica Base32 di Crockford
- Gli ULID usano l'alfabeto Base32 di Crockford (0–9 e A–Z escludendo I, L, O e U). L'eliminazione di queste quattro lettere evita la confusione con le cifre 1 e 0 e permette ai decoder di trattare la stringa in modo insensibile alle maiuscole, mappando I e L a 1 e O a 0 in input. L'alfabeto è ordinato, ed è questo che fa sì che la stringa codificata si ordini allo stesso modo dei bit sottostanti.
- Ordinabilità lessicografica
- Poiché il timestamp è il componente più significativo e l'alfabeto Base32 preserva l'ordine, confrontare due ULID come stringhe dà lo stesso risultato del confronto dei loro valori a 128 bit, che dà lo stesso risultato del confronto dei loro tempi di creazione. È questo che permette a un semplice ORDER BY o ordinamento di array di produrre l'ordine cronologico senza alcun indice aggiuntivo.
- Monotonicità all'interno di un millisecondo
- L'opzione monotonica della specifica ULID mantiene stabile l'ordinamento per gli ID coniati nello stesso millisecondo: la casualità del primo ID in un millisecondo viene generata normalmente, e ogni ID successivo in quel millisecondo è il valore casuale precedente più uno. Questo strumento lo implementa incrementando la casualità a 80 bit come intero big-endian.
- Casualità sicura tramite crypto.getRandomValues
- Gli 80 bit casuali sono riempiti da crypto.getRandomValues, il CSPRNG di Web Crypto, non Math.random. Con 80 bit di entropia, generare anche milioni di ULID nello stesso millisecondo mantiene la probabilità di collisione trascurabilmente piccola.
- ULID ↔ UUID è una pura ricodifica
- La conversione tra ULID e UUID non cambia alcun bit — ricodifica gli stessi 128 bit dalla Base32 di Crockford all'esadecimale con trattini o viceversa. Di conseguenza il ciclo completo è esatto: un ULID convertito in UUID e di nuovo indietro è identico byte per byte all'originale. Nota che i byte di un ULID non impostano i campi di versione e variante dell'UUID, quindi l'UUID risultante è un valore a 128 bit valido ma non un UUIDv4 o v7 con tag di versione.
Buone pratiche per gli ULID
- Usa la modalità monotonica per inserimenti ad alto throughput
- Se il tuo sistema può creare più di un identificatore per millisecondo e ti affidi all'ordinamento, genera ULID monotonici. Gli ULID standard non sono ordinati all'interno di un millisecondo; quelli monotonici sono strettamente crescenti, così un batch resta ordinato indipendentemente da quanto velocemente li conii.
- Archivia gli ULID in modo compatto
- Un ULID è di 128 bit — archivialo come 16 byte binari o una colonna tipizzata UUID anziché come un campo di testo di 26 caratteri quando lo spazio e la dimensione dell'indice contano. Converti nella stringa Base32 solo ai margini dove esseri umani o URL la vedono. La scheda Converti di questo strumento ti dà la forma UUID per l'archiviazione.
- Ricorda che il timestamp è visibile
- Un ULID rivela il proprio tempo di creazione a chiunque possa leggerlo. È ottimo per il debug e l'ordinamento, ma se esporre il tempo di creazione è una preoccupazione — ad esempio, in un identificatore pubblico — valuta quella fuga, oppure usa un UUIDv4 completamente casuale dove l'ordinamento non conta.
- Genera sempre con un CSPRNG
- La garanzia di unicità dipende dal fatto che gli 80 bit casuali siano imprevedibili. Usa una fonte crittograficamente sicura come crypto.getRandomValues, come fa questo strumento — mai Math.random, la cui prevedibilità potrebbe far collidere o indovinare gli identificatori.
- Scegli ULID o UUIDv7 deliberatamente
- Entrambi danno ID a 128 bit ordinati per tempo. Scegli ULID per la stringa più corta e sicura per gli URL; scegli UUIDv7 quando devi restare nel formato UUID standard con i bit di versione e variante. Standardizzati su uno per sistema, e usa la scheda Converti quando devi attraversare il confine.
ULID — domande frequenti
Cos'è un ULID?
ULID vs UUID — quale dovrei usare?
Gli ULID sono ordinabili?
Come decodifico il timestamp di un ULID?
Cos'è un ULID monotonico?
Questo generatore di ULID è sicuro e privato?
Qual è la differenza tra ULID e UUIDv7?
Strumenti correlati
Vedi tutti gli strumenti →Generatore e verificatore di hash Bcrypt
Strumenti di sicurezza
Genera e verifica hash bcrypt delle password online: costo regolabile, prefissi $2b$/$2a$/$2y$. 100% nel tuo browser; la password non viene mai caricata.
Decodificatore JWT
Strumenti di sicurezza
Decodifica token JWT online con il nostro decodificatore JWT gratis. Ispeziona intestazione, payload, firma, scadenza e attestazioni. 100% browser — token mai fuori dal dispositivo. Nessuna registrazione, nessun tracciamento.
Codificatore e Generatore JWT
Strumenti di sicurezza
Generatore JWT online gratis. Costruisci header e payload, firma con HS256, RS256 o ES256 all'istante nel browser; segreto e chiave non lasciano il dispositivo.
Generatore di segreti JWT — HS256/384/512
Strumenti di sicurezza
Genera online un segreto JWT robusto e conforme alle RFC per HS256/384/512 — 100% nel tuo browser, mai inviato a un server. base64url, base64 o hex.
Generatore Hash MD5 e Strumento Checksum File
Strumenti di sicurezza
Genera hash MD5, SHA-256, SHA-1 e SHA-512 online gratis. Calcola l'hash di testo o file nel browser, verifica checksum e copia i risultati. Senza registrazione.
Generatore di Password Casuali — Personalizzabile e Sicuro
Strumenti di sicurezza
Genera password casuali sicure all'istante — gratis, 100% nel tuo browser. Personalizza lunghezza e caratteri, batch fino a 50 con analisi entropia.