Generator ULID Gratis — Buat & Decode ULID
Buat, decode, dan konversi ULID online — gratis dan 100% di browser. Ekstrak timestamp tertanam dari ULID apa pun, konversi ULID ke UUID dan sebaliknya, buat secara batch, dengan mode monotonic. Tak pernah dikirim ke server.
Setiap ULID menggunakan keacakan 80-bit baru.
ULID dan UUID keduanya 128 bit, sehingga konversinya lossless dan reversibel. Perlu UUID klasik? Coba UUID Generator.
Apa itu ULID?
ULID — Universally Unique Lexicographically Sortable Identifier — adalah identifier 128-bit yang dibuat untuk memperbaiki kelemahan praktis UUIDv4 acak sambil mempertahankan properti terbaiknya: Anda dapat membuat satu di mana saja, tanpa koordinator pusat, dan yakin bahwa ia unik. Perbedaannya adalah ULID dapat diurutkan berdasarkan waktu. Ia dirender sebagai 26 karakter Crockford's Base32, dibagi menjadi dua bagian: 10 karakter pertama adalah timestamp 48-bit yang menghitung milidetik sejak epoch Unix, dan 16 karakter terakhir adalah 80 bit keacakan yang aman secara kriptografis. Letakkan waktu di depan, encode dalam alfabet yang mempertahankan urutan, dan identifier terurut secara kronologis sebagai string biasa.
Satu pilihan desain itu memiliki konsekuensi besar bagi database. Primary key UUIDv4 acak mendarat di tempat yang tak terduga dalam indeks B-tree pada setiap penyisipan, yang memfragmentasi indeks, mengaduk cache, dan perlahan menurunkan performa tulis saat tabel tumbuh. ULID, karena berprefiks waktu, mendarat di atau dekat akhir indeks setiap kali — penyisipan tetap berurutan, indeks tetap ringkas, dan pemindaian rentang atas jendela waktu menjadi murah. Anda mendapat pembuatan bebas-koordinasi dari UUID dan lokalitas penyisipan dari integer auto-increment, tanpa mengekspos penghitung berurutan yang dapat ditebak.
Detail encoding-nya disengaja. Crockford's Base32 mengecualikan huruf I, L, O, dan U, baik untuk menghindari kerancuan visual dengan digit 1 dan 0 maupun untuk membuat string tidak peka huruf besar/kecil pada input. Hasilnya adalah 26 karakter tanpa tanda hubung yang aman dimasukkan ke URL, nama file, atau header request tanpa escape — terasa lebih pendek daripada bentuk bertanda-hubung 36-karakter UUID. Timestamp 48-bit tidak habis dalam waktu lama: ia dapat merepresentasikan tanggal hingga tahun 10889 sebelum penghitung milidetik meluap.
ULID bukan alat yang tepat untuk segala hal. Timestamp tertanam mengungkap kapan sebuah record dibuat, yang merupakan fitur untuk debugging dan pengurutan tetapi sedikit kebocoran informasi jika Anda lebih memilih tidak mengekspos itu. Dan jika stack Anda berkomitmen pada tipe UUID, Anda mungkin lebih memilih UUIDv7, yang menerapkan ide berprefiks-waktu yang sama di dalam format UUID standar. Tetapi ketika Anda menginginkan identifier yang pendek, aman-URL, dan dapat diurutkan yang dapat Anda buat di node mana pun dan baca timestamp-nya kembali, ULID adalah default yang sangat baik — dan karena ia hanya 128 bit, Anda selalu dapat mengonversinya ke dan dari UUID dengan tab Convert alat ini.
// 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 Fitur utama
Buat, Decode, dan Konversi dalam Satu Halaman
Tiga tab mencakup seluruh alur kerja ULID: buat ULID baru, decode yang sudah ada untuk membaca timestamp-nya, dan konversi tanpa kehilangan data antara ULID dan UUID. Sebagian besar alat pesaing hanya melakukan yang pertama; di sini round trip lengkapnya berada di satu halaman.
Decoder Timestamp
Tempel ULID apa pun dan baca milidetik tepat saat ia dibuat — ditampilkan dalam UTC, dalam waktu lokal Anda, dan sebagai Unix milidetik mentah — plus segmen keacakan 80-bit. Audit kapan sebuah identifier dibuat tanpa lookup database.
Konversi ULID ↔ UUID Tanpa Kehilangan Data
ULID dan UUID keduanya 128 bit, sehingga konversinya tepat dan reversibel. Tab Convert otomatis mendeteksi format mana yang Anda tempel dan menghasilkan yang lainnya, memungkinkan Anda menjembatani ULID yang dapat diurutkan dengan kolom atau API bertipe UUID tanpa kehilangan satu bit pun.
Mode Monotonic
Perlu pengurutan ketat bahkan untuk ID yang dibuat dalam milidetik yang sama? Mode monotonic menaikkan keacakan sehingga setiap ULID dijamin lebih besar dari yang terakhir, menjaga loop penyisipan ketat tetap terurut sempurna.
Pembuatan Batch
Buat hingga 50 ULID sekaligus dan salin seluruh set dengan Copy All. Ideal untuk menyemai fixture uji, penyisipan massal, atau mengisi tabel lookup tanpa mengklik lima puluh kali.
Timestamp Kustom
Sematkan momen tertentu alih-alih sekarang — berguna untuk data uji deterministik atau untuk memberi tanggal mundur pada record selama migrasi sambil mempertahankan properti dapat-diurutkan.
Keacakan yang Aman Secara Kriptografis
80 bit acak berasal dari crypto.getRandomValues, CSPRNG browser — tidak pernah Math.random — sehingga setiap ULID tidak dapat diprediksi dan tabrakan dalam milidetik yang sama sangat tidak mungkin terjadi.
100% Privat, Hanya-Browser
Setiap ULID dibuat, didekode, dan dikonversi sepenuhnya di perangkat Anda. Tidak ada permintaan jaringan, tidak ada pencatatan, tidak ada penyimpanan — pastikan sendiri di DevTools → Network. Identifier tidak pernah mencapai pihak ketiga.
Contoh ULID
Buat satu ULID
Mode: Standard · Jumlah: 1
01KVT0F720ZK9N4T2QX7VR8WMC
ULID terdiri dari 26 karakter Crockford's Base32. 10 karakter pertama meng-encode timestamp milidetik 48-bit dan 16 karakter terakhir meng-encode 80 bit keacakan yang aman secara kriptografis yang ditarik dari crypto.getRandomValues. Karena timestamp datang lebih dulu dan Base32 mempertahankan urutan byte, ULID yang dibuat belakangan selalu terurut setelah yang lebih awal sebagai string biasa — tanpa indeks terpisah. Klik Copy untuk mengambil nilainya; klik Generate lagi untuk yang baru.
Decode sebuah ULID untuk membaca timestamp-nya
01ARYZ6S41TSV4RRFFQ69G5FAV
Timestamp (UTC): 2016-07-30T22:36:16.385Z · Keacakan: TSV4RRFFQ69G5FAV
Decode membalik 10 karakter pertama kembali menjadi nilai milidetik 48-bit yang tertanam saat pembuatan — di sini 1469918176385 ms, yaitu 2016-07-30T22:36:16.385Z. Ini adalah contoh kanonik dari spesifikasi ULID. Tab Decode menampilkan timestamp dalam UTC dan waktu lokal Anda, nilai Unix milidetik mentah, dan segmen keacakan 80-bit, sehingga Anda dapat mengaudit persis kapan sebuah identifier dibuat tanpa kueri database apa pun.
Konversi sebuah ULID ke UUID
01KVT0F720ZK9N4T2QX7VR8WMC
019ef407-9c40-fcd3-5268-57e9f784728c
ULID dan UUID keduanya tepat 128 bit, sehingga konversinya lossless dan sepenuhnya reversibel — bit yang sama hanya di-encode ulang dari Crockford's Base32 menjadi heksadesimal bertanda hubung. Tab Convert otomatis mendeteksi apakah yang Anda tempel adalah ULID atau UUID dan mengonversi ke bentuk lainnya. Ini memungkinkan Anda menyimpan ULID di kolom UUID atau menyerahkan ULID ke sistem yang hanya mengenal UUID, lalu mengonversi kembali saat Anda membutuhkan string yang dapat diurutkan lagi.
Buat ULID monotonic secara batch
Mode: Monotonic · Jumlah: 3 (milidetik yang sama)
01KVT0F720ZK9N4T2QX7VR8WMC 01KVT0F720ZK9N4T2QX7VR8WMD 01KVT0F720ZK9N4T2QX7VR8WME
Ketika banyak ID dibuat dalam milidetik yang sama, ULID biasa berbagi prefiks waktu 10-karakter tetapi ekor acaknya tidak terurut. Mode monotonic memperbaiki ini: dalam satu milidetik ia menaikkan keacakan sebelumnya sebanyak satu, sehingga setiap ULID lebih besar secara ketat dari yang terakhir dan satu batch tetap terurut sempurna. Perhatikan ketiga nilai hanya berbeda pada karakter terakhir (C, D, E) — ideal untuk penyisipan berthroughput tinggi di mana urutan harus dipertahankan bahkan pada laju sub-milidetik.
Buat ULID untuk tanggal tertentu
Waktu kustom: 2026-06-23 10:30:00 UTC
01KVT0F720… (komponen waktu 01KVT0F720)
Atur timestamp kustom dan generator menyematkan momen tepat itu alih-alih sekarang, sambil tetap mengisi keacakan dari RNG yang aman. Komponen waktu 10-karakter untuk 2026-06-23T10:30:00.000Z adalah 01KVT0F720. Ini berguna untuk menyemai fixture uji dengan identifier deterministik dan berurut waktu, atau untuk memberi tanggal mundur pada record dalam migrasi sambil mempertahankan properti dapat-diurutkan.
Cara menggunakan generator ULID
- 1
Pilih mode pembuatan
Mode Standard memberi setiap ULID keacakan 80-bit baru. Mode Monotonic menjamin bahwa ULID yang dibuat dalam milidetik yang sama meningkat ketat — pilih ini untuk penyisipan berthroughput tinggi di mana urutan harus dipertahankan bahkan pada laju sub-milidetik.
- 2
Atur jumlah, kapitalisasi, dan (opsional) waktu kustom
Buat 1 hingga 50 ULID sekaligus. Keluaran HURUF BESAR secara default — bentuk ULID kanonik — atau beralih ke huruf kecil. Biarkan waktu kosong untuk mencap sekarang, atau atur timestamp kustom untuk menyematkan momen tertentu bagi fixture atau record bertanggal mundur.
- 3
Buat dan salin
Klik Generate ULID. Gunakan Copy pada nilai tunggal mana pun, atau Copy All untuk mengambil seluruh batch sebagai teks yang dipisahkan baris baru yang siap ditempel ke dalam kode, file seed, atau spreadsheet.
- 4
Decode sebuah ULID untuk membaca timestamp-nya
Pada tab Decode, tempel ULID apa pun untuk mengekstrak timestamp pembuatan 48-bit dalam UTC dan waktu lokal, Unix milidetik mentah, dan keacakan 80-bit — sepenuhnya di browser Anda, tanpa perlu lookup.
- 5
Konversi antara ULID dan UUID
Pada tab ULID ↔ UUID, tempel ULID atau UUID; alat ini otomatis mendeteksi input dan mengonversi ke format lainnya tanpa kehilangan data. Simpan ULID di kolom UUID, atau serahkan ULID ke sistem khusus-UUID dan konversi kembali saat Anda membutuhkan string yang dapat diurutkan.
Common Errors
Memperlakukan ULID milidetik-yang-sama sebagai terurut
ULID biasa yang dibuat dalam satu milidetik berbagi prefiks waktu tetapi memiliki ekor acak yang tidak terurut, sehingga urutan relatifnya tidak terdefinisi. Jika Anda bergantung pada pengurutan ketat pada laju itu, gunakan mode monotonic sebagai gantinya.
Mode standard, 3 ID dalam satu ms → urutan dalam ms bersifat acak
Mode monotonic, 3 ID dalam satu ms → …WMC < …WMD < …WME
Mengharapkan ULID yang dikonversi menjadi UUIDv4 valid
Mengonversi ULID ke bentuk UUID meng-encode ulang 128 bit yang sama; ia tidak mengatur field versi dan varian UUID. Hasilnya adalah string UUID 128-bit yang valid tetapi tidak akan melaporkan sebagai versi 4 atau 7 jika sebuah pustaka memeriksa bit-bit itu.
uuid.version(ulidToUuid(id)) → bukan 4 (bit milik ULID)
Perlakukan sebagai nilai 128-bit buram, atau buat UUIDv7 nyata sebagai gantinya
Menggunakan i, l, o huruf kecil dalam ULID secara manual
Crockford's Base32 mengecualikan I, L, O, dan U. Decoder memetakan I dan L ke 1 dan O ke 0, tetapi mengetik huruf-huruf itu secara manual ke dalam ULID rawan kesalahan. Salin ULID alih-alih mengetiknya ulang.
01ARYZ6S41TSV4RRFFQ69G5FAO → O ambigu
01ARYZ6S41TSV4RRFFQ69G5FAV → karakter kanonik saja
Untuk apa ULID digunakan
- Primary Key Database yang Tetap Terurut
- Gunakan ULID sebagai primary key untuk mendapatkan pembuatan bebas-koordinasi dari UUID dengan lokalitas penyisipan dari integer auto-increment. Karena berprefiks waktu, baris baru menambahkan ke dekat akhir indeks B-tree alih-alih tersebar seperti UUIDv4, menjaga penyisipan tetap cepat dan indeks tetap ringkas saat tabel tumbuh.
- Sistem Terdistribusi Tanpa Sequence Terpusat
- Buat identifier di node mana pun — service, edge worker, atau klien — tanpa penghitung bersama dan tanpa koordinasi tabrakan, namun tetap mengurutkan semuanya berdasarkan waktu pembuatan sesudahnya. ULID memberi microservice kunci yang unik dan terurut tanpa round trip database untuk mengalokasikannya.
- Log Event dan ID Pesan
- Cap event, baris log, atau pesan antrian dengan ULID monotonic agar tetap dalam urutan kronologis ketat bahkan ketika banyak dihasilkan dalam milidetik yang sama. Pemindaian rentang atas jendela waktu menjadi perbandingan string sederhana.
- Identifier Publik yang Aman-URL
- ULID adalah 26 karakter tanpa tanda hubung dan dengan alfabet aman-URL, sehingga ia dapat dimasukkan ke path, nama file, atau header tanpa escape dan lebih pendek daripada UUID 36-karakter. Decode timestamp tertanam nanti untuk melihat kapan resource itu dibuat.
- Jembatan ke Sistem Khusus-UUID
- Bekerja dengan kolom database atau API yang hanya menerima UUID? Buat ULID yang dapat diurutkan, konversi ke bentuk UUID untuk penyimpanan atau transport, dan konversi kembali saat Anda membutuhkan string ringkas yang dapat diurutkan — nilai 128-bit dipertahankan persis di kedua arah.
- Fixture Uji Deterministik
- Semai pengujian dengan ULID pada timestamp pilihan menggunakan opsi waktu-kustom, sehingga fixture dapat direproduksi dan sudah terurut waktu. Decode mereka dalam assertion untuk memverifikasi waktu pembuatan yang dicatat kode Anda.
Cara kerja ULID
- Tata Letak 128-Bit: 48-Bit Waktu + 80-Bit Keacakan
- ULID tepat 128 bit. 48 bit tinggi adalah timestamp Unix dalam milidetik; 80 bit rendah bersifat acak. Di-encode dalam Crockford's Base32 dengan 5 bit per karakter, itu adalah 10 karakter untuk waktu dan 16 untuk keacakan — total 26 karakter. Karakter pertama selalu 7 atau lebih rendah karena 48 bit tidak mengisi grup 5-bit teratas.
- Encoding Crockford's Base32
- ULID menggunakan alfabet Crockford's Base32 (0–9 dan A–Z tanpa I, L, O, dan U). Menghilangkan keempat huruf itu menghindari kerancuan dengan digit 1 dan 0 dan memungkinkan decoder memperlakukan string secara tidak peka huruf besar/kecil, memetakan I dan L ke 1 dan O ke 0 pada input. Alfabetnya terurut, yang itulah yang membuat string yang di-encode terurut sama seperti bit yang mendasarinya.
- Keterurutan Leksikografis
- Karena timestamp adalah komponen paling signifikan dan alfabet Base32 mempertahankan urutan, membandingkan dua ULID sebagai string menghasilkan hasil yang sama dengan membandingkan nilai 128-bitnya, yang menghasilkan hasil yang sama dengan membandingkan waktu pembuatannya. Inilah yang memungkinkan ORDER BY biasa atau sort array menghasilkan urutan kronologis tanpa indeks tambahan.
- Monotonisitas Dalam Satu Milidetik
- Opsi monotonic dari spec ULID menjaga pengurutan tetap stabil untuk ID yang dibuat dalam milidetik yang sama: keacakan ID pertama dalam suatu milidetik dihasilkan secara normal, dan setiap ID berikutnya dalam milidetik itu adalah nilai acak sebelumnya ditambah satu. Alat ini mengimplementasikannya dengan menaikkan keacakan 80-bit sebagai integer big-endian.
- Keacakan Aman via crypto.getRandomValues
- 80 bit acak diisi dari crypto.getRandomValues, CSPRNG Web Crypto, bukan Math.random. Dengan 80 bit entropi, membuat bahkan jutaan ULID dalam milidetik yang sama menjaga probabilitas tabrakan tetap sangat kecil.
- ULID ↔ UUID Adalah Encoding Ulang Murni
- Mengonversi antara ULID dan UUID tidak mengubah bit apa pun — ia meng-encode ulang 128 bit yang sama dari Crockford's Base32 menjadi heksadesimal bertanda-hubung atau sebaliknya. Akibatnya round trip-nya tepat: ULID yang dikonversi ke UUID dan kembali identik byte demi byte dengan aslinya. Perhatikan bahwa byte ULID tidak mengatur field versi dan varian UUID, sehingga UUID yang dihasilkan adalah nilai 128-bit yang valid tetapi bukan UUIDv4 atau v7 bertanda-versi.
Praktik terbaik ULID
- Gunakan Mode Monotonic untuk Penyisipan Berthroughput Tinggi
- Jika sistem Anda dapat membuat lebih dari satu identifier per milidetik dan Anda bergantung pada pengurutan, buat ULID monotonic. ULID biasa tidak terurut dalam satu milidetik; yang monotonic meningkat ketat, sehingga satu batch tetap terurut tidak peduli seberapa cepat Anda membuatnya.
- Simpan ULID Secara Ringkas
- ULID adalah 128 bit — simpan sebagai 16 byte biner atau kolom bertipe UUID alih-alih sebagai field teks 26-karakter ketika ruang dan ukuran indeks penting. Konversi ke string Base32 hanya di batas tempat manusia atau URL melihatnya. Tab Convert alat ini memberi Anda bentuk UUID untuk penyimpanan.
- Ingat Timestamp-nya Terlihat
- ULID mengungkap waktu pembuatannya kepada siapa pun yang dapat membacanya. Itu bagus untuk debugging dan pengurutan, tetapi jika mengekspos waktu pembuatan menjadi perhatian — misalnya, pada identifier yang menghadap publik — timbang kebocoran itu, atau gunakan UUIDv4 yang sepenuhnya acak di mana pengurutan tidak penting.
- Selalu Buat dengan CSPRNG
- Jaminan keunikan bergantung pada 80 bit acak yang tidak dapat diprediksi. Gunakan sumber yang aman secara kriptografis seperti crypto.getRandomValues, sebagaimana alat ini lakukan — tidak pernah Math.random, yang keterprediksiannya dapat membuat identifier bertabrakan atau tertebak.
- Pilih ULID atau UUIDv7 Secara Sengaja
- Keduanya memberi ID 128-bit yang berurut waktu. Pilih ULID untuk string aman-URL terpendek; pilih UUIDv7 saat Anda harus tetap dalam format UUID standar dengan bit versi dan varian. Standarkan satu per sistem, dan gunakan tab Convert saat Anda perlu menyeberangi batas.
ULID — pertanyaan yang sering diajukan
Apa itu ULID?
ULID vs UUID — mana yang sebaiknya saya gunakan?
Apakah ULID dapat diurutkan?
Bagaimana cara mendekode timestamp sebuah ULID?
Apa itu ULID monotonic?
Apakah generator ULID ini aman dan privat?
Apa perbedaan antara ULID dan UUIDv7?
Alat Terkait
Lihat semua alat →Generator & Verifier Hash Bcrypt
Alat Keamanan
Buat dan verifikasi hash kata sandi bcrypt online — biaya yang dapat diatur, prefiks $2b$/$2a$/$2y$. 100% di browser Anda; kata sandi tidak pernah diunggah.
JWT Decoder
Alat Keamanan
Dekode token JWT online dengan dekoder JWT gratis kami. Periksa header, payload, tanda tangan, kedaluwarsa, dan klaim secara instan. 100% browser — token Anda tidak meninggalkan perangkat. Tanpa pendaftaran, tanpa pelacakan.
JWT Encoder & Generator
Alat Keamanan
Generator & encoder JWT online gratis. Susun header dan payload, tandatangani dengan HS256, RS256, atau ES256 secara instan. 100% di browser — secret dan key Anda tidak pernah meninggalkan perangkat.
Generator JWT Secret Gratis — HS256/384/512
Alat Keamanan
Buat JWT secret kuat sesuai RFC untuk HS256/384/512 — 100% di browser, tak pernah dikirim ke server. base64url, base64, atau hex; salin untuk .env.
MD5 Hash Generator & Alat Checksum File
Alat Keamanan
Hasilkan hash MD5, SHA-256, SHA-1 & SHA-512 secara online gratis. Hash teks atau file di browser Anda, verifikasi checksum dan salin hasil. Tanpa pendaftaran.
Generator Kata Sandi Acak Online — Kuat, Aman & Gratis
Alat Keamanan
Buat kata sandi acak yang kuat secara instan — gratis, tanpa pendaftaran, 100% di browser. Sesuaikan panjang & karakter, batch hingga 50 dengan analisis entropi.