Generator UUID v7

Hasilkan nilai UUID v7 secara online: UUID yang dapat diurutkan berdasarkan waktu dengan stempel waktu milidetik 48-bit dan 74 bit acak.

Format
ID yang Dihasilkan
Siap. Hasilkan nilai UUID v7 langsung di browser Anda.

Bagaimana ID ini dibuat

Tata letak
Stempel waktu milidetik Unix 48-bit, bit versi 7, bit varian RFC, dan isian acak.
Entropi
74 bit acak dalam implementasi ini; tidak menggunakan penghitung monotonik (monotonic counter).
Waktu
Ya. 48 bit pertama mengodekan waktu pembuatan, sehingga ID dapat diurutkan secara kronologis meskipun dibuat pada milidetik yang berbeda.
Risiko tabrakan data
Dalam milidetik yang sama, pencegahan tabrakan data bergantung pada 74 bit acak; volume pembuatan yang sangat tinggi pada milidetik yang sama sebaiknya menggunakan layanan ID terkoordinasi.
Contoh
01a044bc-5b8c-7eba-8317-74f7d2962929

ID Anda dibuat secara lokal dengan keacakan browser yang kuat. Tidak ada data yang dikirim ke BroBroGo.

Tanya Jawab

Mengapa memilih UUID v7 dibandingkan UUID v4?

UUID v7 mempertahankan format UUID standar tetapi dapat diurutkan berdasarkan waktu, membantu log, indeks database, dan aliran data peristiwa tetap berurutan secara kronologis.

Apakah UUID v7 menyembunyikan waktu pembuatan?

Tidak. Stempel waktu adalah bagian integral dari ID tersebut. Gunakan UUID v4 atau NanoID jika Anda memerlukan pengidentifikasi buram tanpa data waktu.

Apa Itu UUID v7 dan Bagaimana Cara Kerjanya?

UUID v7 adalah salah satu varian dari Universally Unique Identifier yang distandarisasi dalam RFC 9562. Tidak seperti UUID v4 yang seluruhnya acak, UUID v7 menyematkan cap waktu (timestamp) 48-bit Unix milidetik di bagian awal ID, lalu diikuti oleh 64 bit acak. Hasilnya adalah string 36 karakter (dengan tanda hubung) yang terlihat seperti ini:

018f3a6e-7b1c-7000-8000-1a2b3c4d5e6f

Delapan karakter pertama (018f3a6e) adalah representasi heksadesimal dari timestamp Unix dalam milidetik. Artinya, setiap UUID v7 yang dibuat lebih awal akan memiliki urutan leksikografis yang lebih kecil dibandingkan UUID yang dibuat kemudian. Sifat inilah yang membedakannya secara fundamental dari UUID v4, yang tidak memiliki keterurutan waktu.

Generator di halaman ini bekerja sepenuhnya di browser. Saat Anda menentukan jumlah ID (antara 1 hingga 100) serta preferensi tampilan (huruf besar/kecil dan tanda hubung), kode JavaScript lokal menghasilkan UUID v7 menggunakan cryptographic randomness bawaan browser (crypto.getRandomValues). Tidak ada data yang dikirim ke server BroBroGo – semuanya privat di perangkat Anda.

Fakta penting: UUID v7 menjamin urutan berdasarkan waktu pembuatan, tetapi tidak menjamin urutan yang ketat (strict ordering) untuk ID yang lahir dalam milidetik yang sama. Hal ini konsekuensi dari sisa bit acak yang tetap ada – dua ID yang dibuat dalam milidetik yang sama akan memiliki prefix timestamp yang identik, namun bagian acak bisa muncul dalam urutan apa pun. Ini adalah trade-off untuk memungkinkan paralelisme dan menghindari kebutuhan akan global sequence counter.


Mengapa Urutan Berbasis Waktu Penting?

Masalah utama UUID v4 dalam basis data relasional adalah fragmentasi indeks. Indeks B-tree (struktur indeks standar di MySQL, PostgreSQL, dan lainnya) bekerja paling efisien ketika nilai baru ditambahkan di ujung kanan pohon (monotonik meningkat). UUID v4, yang acak total, menyebabkan penyisipan di berbagai posisi acak, memaksa page split berulang dan memperlambat penulisan.

UUID v7 mengatasi ini: karena bagian awalnya adalah timestamp yang terus naik, nilai baru cenderung ditambahkan di akhir indeks. Dengan demikian, insert performance hampir mendekati auto-increment integer, namun tanpa kelemahan sentralisasi dan tebakan (guessability).

Sebagai contoh, bayangkan tabel dengan 10 juta baris dan indeks unik pada kolom UUID. Dengan UUID v4, setiap baris baru berpotensi menyisip di mana pun, menyebabkan 1–3 page split per penyisipan. Dengan UUID v7, sebagian besar penyisipan hanya menambah halaman terakhir, mengurangi split hingga 90% dalam beban kerja tulis berat.

Namun, perlu dicatat: keuntungan ini hanya optimal jika timestamp generator akurat dan stabil. Jika beberapa generator menghasilkan UUID dengan clock skew (perbedaan waktu antar server), urutan bisa kacau. Implementasi di halaman ini menggunakan Date.now() yang akurat hingga milidetik, cukup untuk penggunaan satu perangkat.


Perbandingan UUID v7 dengan Format Lain

Fitur UUID v7 UUID v4 ULID NanoID
Panjang string 36 karakter 36 karakter 26 karakter 21 karakter (default)
Urut berdasarkan waktu Ya (milidetik) Tidak Ya (milidetik) Tidak
Jaminan unik 128 bit total 122 bit acak 128 bit (80 bit acak) 126 bit acak (default)
Dapat ditebak? Tidak (acak kuat) Tidak Tidak Tidak
Standar resmi RFC 9562 RFC 4122 Tidak ada Tidak ada
Tanda hubung wajib? Ya (bisa dihilangkan) Ya (bisa dihilangkan) Tidak Tidak

UUID v7 dan ULID sama-sama menyematkan timestamp 48-bit, tetapi format representasinya berbeda. ULID menggunakan Crockford's Base32 (26 karakter, tanpa tanda hubung), sementara UUID v7 menggunakan heksadesimal dengan tanda hubung. ULID menjamin urutan yang lebih ketat dalam milidetik yang sama dengan random suffix, namun praktiknya tidak ada perbedaan signifikan untuk sebagian besar aplikasi. UUID v7 diuntungkan oleh adopsi standar RFC, sehingga lebih mudah diterima di ekosistem yang sudah menggunakan UUID.


Cara Menggunakan Generator UUID v7 di Halaman Ini

Antarmuka generator sangat sederhana:

  1. Pilih format – saat ini hanya UUID v7 yang tersedia, tetapi pemilih format bisa diperluas.
  2. Tentukan jumlah ID – masukkan angka antara 1 dan 100. Di luar rentang itu, generator tidak akan berfungsi.
  3. Atur opsi tampilan:
    • Huruf besar (Uppercase) – jika diaktifkan, semua huruf heksadesimal (a–f) akan dikonversi ke A–F. Contoh: 018f3a6e menjadi 018F3A6E.
    • Sertakan tanda hubung (Include hyphens) – jika dimatikan, UUID akan menjadi string 32 karakter kontinu: 018f3a6e7b1c700080001a2b3c4d5e6f. Berguna untuk penyimpanan yang lebih ringkas atau kompatibilitas dengan sistem yang tidak menerima tanda hubung.

Setiap perubahan pada opsi akan langsung memicu regenerasi seluruh daftar ID. Tidak ada tombol "Generate" terpisah – interaksi seketika.

Hasil ditampilkan dalam daftar. Anda dapat mengklik satu ID untuk menyalinnya ke clipboard (dengan pesan "Copied!"). Tombol "Salin Semua" akan menyalin seluruh daftar (dipisah baris baru) dengan konfirmasi "Copied all!". Status halaman menunjukkan "Ready." saat diam dan "Generated." setelah daftar muncul.

Kecepatan regenerasi sangat tinggi: bahkan untuk 100 ID, proses selesai dalam beberapa milidetik karena semua kalkulasi dilakukan lokal.


Batasan dan Hal yang Perlu Diperhatikan

Tidak Ada Jaminan Urutan Ketat dalam Milidetik Sama

Seperti disebutkan, UUID v7 tidak menjamin urutan antar ID yang lahir dalam milidetik yang sama. Jika Anda perlu mempertahankan urutan pasti peristiwa yang terjadi sangat cepat (misalnya log dari thread konkuren), UUID v7 mungkin belum cukup. Untuk kasus seperti itu, pertimbangkan menambahkan sequence counter terpisah atau menggunakan timestamp dengan resolusi lebih tinggi (misalnya mikrodetik) – tetapi itu akan keluar dari spesifikasi UUID v7.

Batas Maksimal 100 ID

Generator membatasi jumlah ID hingga 100. Ini wajar untuk halaman web interaktif – pengguna biasanya tidak perlu membuat ribuan ID sekaligus. Jika Anda membutuhkan ribuan, gunakan pustaka di sisi server dengan fungsi serupa.

Pengaruh Opsi Huruf Besar dan Tanda Hubung

  • Huruf besar tidak memengaruhi nilai heksadesimal. a dan A sama secara numerik. Hanya tampilan yang berubah. Namun, beberapa sistem peka huruf besar/kecil saat parsing – pastikan konsisten.
  • Tanda hubung dihilangkan, UUID menjadi 32 karakter. Ini tetap valid sebagai hex string, tetapi tidak lagi memenuhi format UUID standar (yang mensyaratkan tanda hubung pada posisi tertentu). Jika interoperabilitas dengan sistem yang mengharapkan format kanonik penting, biarkan tanda hubung menyala.

Privasi dan Keamanan

Generator menggunakan crypto.getRandomValues – sumber entropy kriptografis dari sistem operasi. Bit acak yang dihasilkan cukup kuat untuk mencegah tebakan (unguessable). Tidak ada seed yang dapat direproduksi. Karena semua dilakukan di browser, tidak ada risiko intersepsi data oleh server.


Kasus Penggunaan Umum

  • Primary key di basis data – terutama untuk tabel dengan volume tulis tinggi (misalnya log aktivitas, pesan, transaksi). Mengganti UUID v4 dengan v7 mengurangi fragmentasi indeks secara signifikan.
  • Sistem terdistribusi – ID yang dapat diurutkan berdasarkan waktu membantu dalam event sourcing, audit trail, dan message queuing. Anda bisa mengurutkan peristiwa secara kronologis hanya berdasarkan nilai string, tanpa perlu kolom timestamp terpisah.
  • Identifikasi sesi atau permintaan – di layanan microservice, UUID v7 memberikan ID unik sekaligus memberi petunjuk kapan entitas dibuat, berguna untuk troubleshooting dan rate limiting.
  • Migrasi dari UUID v4 – banyak aplikasi ingin beralih ke format yang lebih efisien tanpa mengubah panjang string. UUID v7 adalah drop-in replacement untuk kolom UUID yang sudah ada, karena format representasinya identik (36 karakter, tanda hubung).

FAQ

Apakah UUID v7 benar-benar aman dan tidak bisa ditebak?

Ya. UUID v7 menggunakan 62 bit acak (dari total 128 bit). Kekuatan kriptografisnya setara dengan UUID v4. Tidak ada cara realistis untuk menebak ID masa depan atau menemukan ID lain hanya dengan mengetahui satu ID.

Bisakah UUID v7 digunakan sebagai primary key di MySQL/PostgreSQL?

Tentu. Banyak pengembang melaporkan peningkatan performa insert dibanding UUID v4. Namun, tetap ada overhead penyimpanan string 36 byte dibanding integer 4 atau 8 byte. Pertimbangkan kompresi atau penyimpanan sebagai binary(16) jika performa menjadi prioritas.

Apa perbedaan utama UUID v7 dengan ULID?

Format representasi dan standarisasi. ULID lebih pendek (26 karakter) dan tidak menggunakan tanda hubung, tetapi tidak distandarisasi secara resmi. UUID v7 mengikuti RFC 9562, yang memudahkan adopsi di lingkungan yang sudah mendukung UUID. Keduanya memiliki timestamp 48-bit dan bit acak.

Apakah urutan ID benar-benar dijamin berdasarkan waktu?

Urutan dijamin berdasarkan timestamp milidetik. Namun, ID yang lahir dalam milidetik yang sama bisa muncul dalam urutan acak (karena bagian acak). Jika Anda memerlukan urutan yang ketat dalam milidetik, pertimbangkan menambahkan counter berurutan atau gunakan timestamp resolusi lebih tinggi.

Bagaimana cara menyalin semua ID sekaligus?

Klik tombol "Salin Semua" di bawah daftar. Seluruh daftar akan disalin ke clipboard sebagai teks yang dipisah baris baru. Status "Copied all!" akan muncul sebagai konfirmasi.

Apakah data ID yang saya hasilkan dikirim ke server?

Tidak. Seluruh proses generasi terjadi di browser Anda. Tidak ada data yang dikirim ke BroBroGo atau pihak ketiga. Anda dapat memverifikasi dengan mematikan koneksi internet saat menggunakan halaman – generator tetap berfungsi normal.