Apa itu UUID?
Sebuah UUID (Universally Unique Identifier) adalah nilai 128 bit yang dirender sebagai string 36 karakter seperti 550e8400-e29b-41d4-a716-446655440000. Format dan semantik versinya didefinisikan oleh RFC 4122 untuk v1 hingga v5, dan oleh RFC 9562 untuk versi yang lebih baru v6, v7, dan v8. Alat ini menghasilkan v4 (sepenuhnya acak), v1 (stempel waktu plus ID node acak), dan v7 (awalan stempel waktu Unix dalam milidetik plus akhiran acak, dapat diurutkan berdasarkan waktu pembuatan) — semuanya di peramban Anda, menggunakan Web Crypto API platform. Tidak ada data yang dikirim ke server.
Bagaimana pembuatan UUID bekerja?
Setiap versi menyeimbangkan determinisme, kemampuan urut, dan entropi secara berbeda. Alat memilih algoritma yang tepat berdasarkan pilihan Anda:
- v4 (acak) memanggil
crypto.randomUUID()peramban, yang mengembalikan 122 bit keacakan kriptografis dengan 6 bit tetap (versi0100dan varian10) ditempatkan pada posisi yang benar. Tabrakan sangat tidak mungkin secara astronomis — Anda perlu menghasilkan sekitar 2,71 kuintiliun UUID v4 untuk menemukan satu duplikat dengan probabilitas 50%. - v1 (stempel waktu + node) mengemas stempel waktu Gregorian 60 bit (tick 100 nanodetik sejak 15-10-1582) ke dalam
time_low/time_mid/time_hi_and_version, mengatur nibble versi ke0001, memilih urutan jam 14 bit dengan bit varian disetel, dan menggunakan ID node acak 48 bit dengan bit multicast dipaksa aktif (RFC 4122 §4.5 secara eksplisit mengizinkan ID node acak ketika tidak ada MAC perangkat keras — bit multicast menandainya sebagai non-MAC). - v7 (stempel waktu terurut), sesuai RFC 9562 §5.7, menyusun stempel waktu Unix 48 bit big-endian dalam milidetik, lalu versi 4 bit
0111, lalu 12 bit acak, lalu varian 2 bit10, lalu 62 bit acak tambahan. Karena stempel waktu berada di bit paling signifikan, UUID v7 terurut secara leksikografis dalam urutan pembuatan — properti yang tidak ditawarkan versi UUID lain tanpa enkode tambahan. - Semua keacakan berasal dari
crypto.getRandomValues(), RNG peramban yang aman secara kriptografis. Baik v1 maupun v7 menyertakan pengaman monotonik intra-tick sehingga dua panggilan berurutan dalam tick jam yang sama tetap mengurutkan nilai kedua di atas nilai pertama — penting untuk pembuatan massal yang lebih cepat dari jam milidetik. - Pipeline format berjalan setelah pembuatan. Anda dapat menghapus tanda hubung, mengganti ke huruf besar, membungkus nilai dengan kurung kurawal (
{…}— konvensi GUID Microsoft), atau menampilkan 16 byte mentah sebagai base64 (output 22 karakter, tanpa padding). Mode base64 menggantikan opsi format lainnya karena base64 sudah merupakan representasi tersendiri.
Mengapa menggunakan generator UUID ini?
- Tidak ada yang meninggalkan peramban Anda. Web Crypto API berjalan secara lokal; halaman tidak melakukan permintaan jaringan apa pun setelah dokumen pertama dimuat. Buka DevTools, klik Buat, dan panel Network akan tetap hening.
- Output yang sesuai RFC. v4 mengikuti RFC 4122 §4.4, v1 mengikuti §4.2 dan §4.5, dan v7 mengikuti RFC 9562 §5.7. Nibble versi dan bit varian ditempatkan persis di tempat yang ditentukan standar — setiap UUID lolos regex kanonik versinya.
- v7 yang dapat diurutkan untuk kunci basis data. UUID v7 yang dipakai sebagai kunci utama clustered di Postgres, MySQL, atau SQL Server menjaga sisipan tetap append-only pada indeks — tanpa pemisahan halaman, tanpa I/O acak — sambil tetap unik secara global. v4 tidak bisa melakukannya karena bit-nya acak.
- Pembuatan massal tanpa batas laju. Hasilkan 1, 10, 100, atau 1.000 UUID sekaligus. Tidak ada kuota, tidak perlu mendaftar — alat berjalan di tab Anda, jadi batasnya adalah CPU Anda, bukan paket API vendor.
Apa saja aplikasi umum dari UUID?
UUID muncul di mana pun sebuah sistem membutuhkan pengenal yang unik secara global tanpa berkoordinasi dengan otoritas pusat:
- Kunci utama basis data. Bilangan bulat auto-increment membocorkan jumlah baris dan merusak sharding. UUID stabil antar shard, aman digabung antar wilayah, dan (dengan v7) menjaga sisipan B-tree tetap di area hangat tanpa pemisahan halaman. Aplikasi umum menghasilkan UUID di sisi klien, mengirimkannya dalam INSERT, dan tidak perlu bolak-balik ke server hanya untuk kunci.
- ID korelasi request. Middleware HTTP menempelkan UUID v4 ke setiap request masuk, mencatatnya di setiap span, dan meneruskannya ke hilir (sering kali sebagai header
X-Request-Id). Saat pelanggan melaporkan bug, insinyur dukungan menempelkan ID dan seluruh jejak request — lintas layanan dan zona waktu — muncul tanpa ambiguitas. - Kunci idempotensi. API pembayaran (Stripe, Adyen, Square) menerima header
Idempotency-Keysehingga request yang dicoba ulang tidak akan pernah menagih pelanggan dua kali. UUID yang dihasilkan klien menjamin kunci unik per operasi logis — persis kontrak yang dibutuhkan API tersebut.
Seperti apa contoh UUID?
Di Node.js atau peramban modern, satu baris crypto.randomUUID() mengembalikan UUID v4 baru — misalnya 3f50b5a8-2c54-4b9c-9c1f-3e5c7e2b8d12. Gunakan untuk ID request atau kunci idempotensi. Jika UUID akan masuk ke kolom basis data yang menjadi kunci utama clustered, buat v7 sebagai gantinya: dua nilai v7 yang dihasilkan dengan jarak satu milidetik, seperti 0190a3b0-7d4f-7c9e-8b21-a4d6f0bd9c11 dan 0190a3b0-7d50-7f15-9c4e-72b3e0c1d8a4, terurut secara leksikografis sesuai urutan pembuatan. Tipe uuid Postgres menyimpan kedua versi secara identik — perbedaannya muncul saat penulisan indeks: v7 ditambahkan di sisi kanan B-tree sementara v4 tersebar dan memaksa I/O acak.
UUID Generator ini melakukan satu hal: mengubah sebuah klik menjadi satu atau banyak identifier yang sesuai RFC, dengan format yang Anda butuhkan, tanpa mengirim permintaan Anda ke server mana pun. Pilih versi, pilih jumlah, pilih format — hasilkan, salin, lanjutkan pekerjaan.