Generator UUID

UUID (Universally Unique Identifier), yang juga dikenal sebagai GUID (Globally Unique Identifier) pada sistem Microsoft, adalah nilai 128-bit yang digunakan untuk mengidentifikasi informasi secara unik pada sistem terdistribusi tanpa koordinator pusat. Peluang terjadinya tabrakan (collision) sangat kecil sehingga dianggap nol untuk setiap kebutuhan praktis. UUID v4 adalah varian paling umum yang menggunakan 122 bit keacakan dari sumber acak yang aman secara kriptografi. UUID v1 menggabungkan stempel waktu saat ini dengan pengenal node (awalnya berupa alamat MAC). UUID v7, yang distandardisasi dalam RFC 9562, mengenkode stempel waktu milidetik Unix pada bit tingkat tinggi, menjadikannya unik sekaligus dapat diurutkan — sangat ideal untuk primary key basis data. Alat ini beroperasi sepenuhnya di peramban Anda menggunakan Web Crypto API, sehingga tidak ada data yang dikirimkan ke server.

star 4.9
New

Generator UUID calculator

shield 100% Private — UUIDs are generated in your browser with the Web Crypto API.

tune Options

5
1255075100

fingerprint Generated UUIDs

info v4 — 122 bits of randomness per UUID
5 generated

tag UUID Versions

v4 Random
Most common — pure crypto randomness
v1 Timestamp
Time + node — leaks generation time
v7 Sortable
Unix ms + random — great for DB keys
Nil Zeros
00000000-0000-0000-0000-000000000000

straighten UUID Anatomy

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
M = version (1, 4, 7, ...)
N = variant (8, 9, a, or b for RFC 4122)
128 bits = 32 hex chars, grouped 8-4-4-4-12

lightbulb Quick Tips

  • 1 Use v7 for database primary keys — sortable order improves index locality
  • 2 Stick to lowercase UUIDs for consistency across systems
  • 3 Braced {xxx} form is Microsoft's GUID style — same value, different wrapper

How to Use the Generator UUID

tune

Pilih Versi UUID

Pilih v4 untuk acak (paling umum), v1 untuk berbasis stempel waktu, v7 untuk ID yang dapat diurutkan, atau nil untuk nilai sentinel serba nol.

format_list_numbered

Tentukan Jumlah

Hasilkan antara 1 hingga 100 UUID sekaligus — sangat praktis untuk seeding basis data atau menyiapkan data pengujian (test fixtures).

format_shapes

Pilih Format

Pilih format standar dengan tanda hubung, huruf besar, tanpa tanda hubung (32 karakter mentah), atau format GUID Microsoft dengan kurung kurawal {xxx}.

content_copy

Salin & Gunakan

Klik salin pada UUID mana pun, atau gunakan Salin Semua untuk menyimpan seluruh hasil sekaligus ke papan klip Anda.

The Formula

Semua UUID adalah nilai 128-bit yang ditampilkan sebagai 32 karakter heksadesimal yang dikelompokkan 8-4-4-4-12 dengan tanda hubung. Bit versi menempati digit heksadesimal ke-13, dan bit varian menempati bit teratas dari digit heksadesimal ke-17. v4 menggunakan data acak untuk sisanya; v1 menyandikan timestamp; v7 menyandikan timestamp milidetik Unix yang membuat pengurutan leksikografis setara dengan pengurutan kronologis.

UUID = 128 bits = 32 hex chars = 8-4-4-4-12 pattern

lightbulb Variables Explained

  • v4 Acak — 122 bit keacakan kriptografis + 6 bit versi/varian tetap
  • v1 Timestamp — 60-bit waktu sejak 1582-10-15 + 14-bit urutan clock + 48-bit node
  • v7 Dapat diurutkan — 48-bit timestamp ms Unix + 74 bit acak + versi/varian
  • nil 00000000-0000-0000-0000-000000000000 — UUID serba nol

tips_and_updates Pro Tips

1

Gunakan v4 untuk sebagian besar kebutuhan — ini adalah pilihan paling sederhana, didukung paling luas, dan tidak membocorkan informasi waktu.

2

Gunakan v7 untuk primary key basis data — dapat diurutkan berdasarkan waktu pembuatan sehingga meningkatkan lokalitas B-tree dan performa kueri.

3

Jangan gunakan v1 jika privasi diutamakan — versi ini awalnya menyematkan alamat MAC dan dapat mengungkap kapan suatu ID dibuat.

4

Nil UUID (00000000-...) adalah nilai sentinel; jangan pernah menggunakannya sebagai pengidentifikasi sebenarnya.

5

UUID bersifat tidak peka huruf besar/kecil (case-insensitive) menurut RFC 4122 — simpan dalam format huruf kecil demi konsistensi di berbagai sistem.

Universally Unique Identifier (UUID) adalah nilai 128-bit yang digunakan untuk mengidentifikasi sumber daya tanpa memerlukan otoritas pusat, menjadikannya sangat penting untuk sistem terdistribusi, basis data, API, dan arsitektur microservice. Format standarnya — 8-4-4-4-12 karakter heksadesimal seperti 550e8400-e29b-41d4-a716-446655440000 — menyediakan 2^122 kemungkinan nilai (5,3 × 10^36), sehingga tabrakan ID secara tidak sengaja praktis mustahil terjadi. Generator UUID kami membuat UUID versi 4 (acak) secara instan, dengan opsi untuk membuat beberapa UUID sekaligus, menyalin ke papan klip, dan memformat dalam huruf besar atau kecil. UUID v4 adalah versi paling umum dalam perangkat lunak modern, digunakan oleh gen_random_uuid() milik PostgreSQL, uuid4() milik Python, crypto.randomUUID() milik JavaScript, dan sebagian besar ORM. Baik Anda memerlukan pengidentifikasi unik untuk entri basis data, kunci API, token sesi, maupun data uji coba (test fixture), alat ini menyediakan UUID acak kriptografis yang memenuhi spesifikasi RFC 4122.

Versi UUID dan kapan harus menggunakannya

  • UUID v1 menggabungkan timestamp dengan alamat MAC mesin — dijamin unik tetapi menampilkan waktu pembuatan dan identitas perangkat keras, sehingga menimbulkan kekhawatiran privasi.
  • UUID v3 dan v5 adalah hash deterministik: v3 menggunakan MD5, v5 menggunakan SHA-1. Jika diberikan namespace dan nama yang sama, keduanya selalu menghasilkan UUID yang sama — berguna untuk menghasilkan pengidentifikasi yang konsisten dari kunci alami (misalnya, mengubah alamat email menjadi ID pengguna).
  • UUID v4 menggunakan 122 bit data acak, memberikan jaminan keunikan terkuat tanpa membocorkan informasi apa pun.
  • UUID v7 (RFC 9562, 2024) menyematkan timestamp Unix dalam 48 bit pertama sambil mempertahankan 74 bit acak — dapat diurutkan berdasarkan waktu pembuatan, menjadikannya ideal untuk primary key basis data di mana performa indeks sangat penting.

Untuk sebagian besar aplikasi, v4 adalah pilihan bawaan utama; beralihlah ke v7 untuk primary key basis data di mana urutan penyisipan data (insertion order) berpengaruh.

Peluang tabrakan UUID dalam praktiknya

UUID v4 menggunakan 122 bit acak, menghasilkan 5,3 × 10^36 kemungkinan nilai. Masalah paradoks ulang tahun (birthday problem) menentukan peluang tabrakan data: setelah menghasilkan 2,7 × 10^18 (2,7 kuintiliun) UUID, terdapat peluang 50% terjadinya satu tabrakan.

Dalam penerapan praktis, menghasilkan 1 miliar UUID per detik selama 85 tahun baru akan mencapai ambang batas ini. Pada skala yang lebih realistis — sistem yang menghasilkan 1 juta UUID per hari — peluang terjadinya tabrakan dalam 100 tahun adalah sekitar 1 banding 10^24.

Perhitungan ini mengasumsikan generator angka acak yang andal (CSPRNG); penggunaan Math.random() di JavaScript (yang tidak aman secara kriptografis) mengurangi entropi dan meningkatkan risiko tabrakan. Selalu gunakan crypto.randomUUID(), pustaka uuid v4, atau fungsi bawaan basis data untuk sistem produksi.

UUID sebagai primary key basis data: kelebihan dan kekurangan

UUID sebagai primary key memungkinkan pembuatan ID terdesentralisasi (aplikasi membuat ID tanpa perlu bolak-balik ke basis data) dan mencegah serangan enumerasi (pengguna tidak dapat menebak ID entri lainnya).

Namun, nilai UUID v4 yang acak dapat membebani performa indeks B-tree — penyisipan data acak menyebabkan pemecahan halaman (page splits) dan fragmentasi, meningkatkan write amplification hingga 2-5x dibandingkan kunci integer sekuensial. UUID v7 mengatasi hal ini dengan keacakan yang berawalan timestamp, memberikan keunikan sekaligus pengurutan sekuensial.

Biaya penyimpanan juga lebih tinggi: 16 byte dibandingkan 4-8 byte untuk integer, hal ini signifikan pada tabel dengan miliaran baris dan banyak indeks.

Pola yang umum digunakan adalah menggabungkan UUID sebagai pengidentifikasi publik dengan kunci auto-increment integer untuk kebutuhan internal, menghubungkan tabel (join) menggunakan integer yang efisien sambil hanya mengekspos UUID yang aman ke API dan URL.

Apa itu UUID dan bagaimana cara kerjanya?

UUID (Universally Unique Identifier) adalah nilai 128-bit yang dirancang agar unik di berbagai ruang dan waktu tanpa memerlukan otoritas pendaftaran pusat, sebagaimana didefinisikan oleh IETF RFC 9562 (yang menggantikan RFC 4122 sebelumnya).

128 bit tersebut ditulis sebagai 32 karakter heksadesimal yang dikelompokkan dalam pola 8-4-4-4-12, seperti 550e8400-e29b-41d4-a716-446655440000. Bit tertentu telah dicadangkan: digit heksadesimal ke-13 menyandikan versi, dan bit teratas dari digit heksadesimal ke-17 menyandikan varian.

Bit sisanya membawa data acak, timestamp, atau nama yang di-hash tergantung versinya. Karena ruang alamat yang tersedia mencapai 2^122, sistem generator independen dapat mencetak pengidentifikasi dengan aman tanpa perlu saling berkoordinasi.

Cara membuat UUID di JavaScript, Python, dan SQL

Cara tersederhana untuk membuat UUID adalah menggunakan fungsi bawaan bahasa pemrograman yang memanggil sumber acak aman secara kriptografis.

  • Di JavaScript, crypto.randomUUID() mengembalikan UUID v4 dan didokumentasikan di MDN Web Docs sebagai bagian dari Web Crypto API, tersedia di peramban modern dan Node.js 14.17+.
  • Di Python, modul uuid perpustakaan standar menyediakan uuid.uuid4() untuk nilai acak dan uuid.uuid1() untuk nilai berbasis stempel waktu.
  • Di PostgreSQL, gen_random_uuid() menghasilkan UUID v4, sedangkan MySQL 8 menyediakan UUID() untuk nilai bergaya v1.

Semua fungsi ini menghasilkan string yang patuh pada RFC 9562, sehingga ID yang dibuat di satu bahasa dapat berinteroperasi dengan lancar di bahasa lain.

UUID vs GUID: apakah keduanya hal yang sama?

Ya, GUID dan UUID adalah pengenal 128-bit yang sama; GUID (Globally Unique Identifier) hanyalah terminologi Microsoft untuk UUID standar yang ditentukan oleh IETF RFC 9562. Keduanya kompatibel secara biner, sehingga nilai yang dibuat oleh Windows atau .NET dapat digunakan oleh sistem apa pun yang patuh pada RFC dan sebaliknya.

Satu-satunya perbedaan rutin terletak pada penyajiannya: perkakas Microsoft sering kali membungkus nilai tersebut dalam kurung kurawal, misalnya {550e8400-e29b-41d4-a716-446655440000}, dan beberapa COM API secara historis menggunakan huruf kapital untuk hex.

Catatan kecil yang perlu diperhatikan adalah urutan byte — GUID biner Microsoft menyimpan tiga bidang pertama dalam format little-endian, yang hanya penting saat menguraikan byte mentah, bukan bentuk string standar ber-tanda hubung.

Apakah UUID aman secara kriptografis atau dapat diprediksi?

UUID bukanlah sebuah rahasia dan tidak boleh diperlakukan sebagai rahasia, bahkan ketika bit acaknya berasal dari generator yang aman secara kriptografis. RFC 9562 secara tegas memperingatkan bahwa UUID tidak menawarkan keamanan bawaan dan tidak boleh dianggap sulit ditebak; OWASP juga memperingatkan agar tidak menggunakan pengenal sebagai token otorisasi.

Versi 4 mengambil 122 bit dari CSPRNG, sehingga tidak praktis untuk diprediksi, tetapi versi 1 dan versi 7 menyematkan stempel waktu yang membocorkan waktu pembuatan, serta versi 3 dan versi 5 adalah hash deterministik dari ruang nama dan nama yang diketahui.

Untuk token sesi, penyetelan ulang kata sandi, atau kunci API, buatlah rahasia berentropi tinggi khusus daripada mengandalkan struktur UUID untuk perlindungan.

Memahami bit versi dan varian UUID

Bidang versi dan varian adalah pola bit tetap yang disematkan dalam setiap UUID RFC 9562 yang memberi tahu pengurai cara nilai tersebut dibuat.

Versi menempati empat bit paling signifikan dari byte ketujuh (digit hex ke-13), sehingga UUID v4 selalu menampilkan angka 4 di sana dan v7 selalu menampilkan angka 7. Varian berada di dua atau tiga bit paling signifikan dari byte kesembilan (digit hex ke-17), yang untuk varian IETF standar menjadikan digit tersebut salah satu dari 8, 9, a, atau b.

Inilah sebabnya mengapa UUID v4 yang valid cocok dengan pola xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx. Memeriksa posisi tetap ini adalah cara yang benar untuk memvalidasi atau mengklasifikasikan UUID daripada pemeriksaan panjang yang tidak ketat.

Cara membuat UUID secara massal untuk pengujian dan seeding

Pembuatan UUID secara massal sangat berguna untuk seeding basis data, membuat fixture pengujian, load-testing, dan mengisi API tiruan (mock API), dan alat ini dapat menghasilkan banyak pengenal valid hanya dengan satu klik. Karena setiap UUID dibuat secara independen dari sumber acak atau stempel waktu sesuai RFC 9562, pembuatan batch tidak memiliki risiko tabrakan yang berarti bahkan dalam jumlah besar.

Untuk data pengujian yang dapat diulang, lebih disukai UUID versi 5 deterministik yang diturunkan dari ruang nama dan nama tetap sehingga input yang sama selalu menghasilkan pengenal yang sama di setiap pengujian.

Saat melakukan seeding pada tabel berskala produksi, pertimbangkan versi 7 agar baris yang dimasukkan secara massal berada dalam urutan indeks yang cukup berurutan, sehingga menjaga halaman B-tree tetap ringkas dan mengurangi amplifikasi penulisan selama impor.

Cara menyimpan UUID secara efisien di basis data

Simpan UUID dalam tipe biner 16-byte bawaan kapan pun basis data Anda mendukungnya, karena menyimpannya sebagai teks 36-karakter membuang lebih dari dua kali lipat ruang dan memperlambat perbandingan indeks. PostgreSQL menyediakan tipe kolom uuid khusus, sedangkan MySQL dan SQL Server biasanya menggunakan BINARY(16) dengan fungsi konversi ke dan dari string ber-tanda hubung.

Seperti yang dicatat RFC 9562, UUID tidak sensitif huruf besar/kecil (case-insensitive) dan harus dinormalisasi — biasanya menjadi huruf kecil — sebelum disimpan agar pencarian tetap konsisten.

Jika Anda menggunakan UUID sebagai kunci utama (primary key), lebih disukai versi 7 untuk mempertahankan lokalitas penyisipan; jika Anda harus menggunakan versi 4, beberapa mesin memungkinkan Anda mengatur ulang byte stempel waktu, meskipun versi 7 adalah solusi berbasis standar untuk masalah fragmentasi yang sama.

Kesalahan umum saat bekerja dengan UUID

Kesalahan UUID yang paling umum adalah menggunakan sumber acak non-kriptografis seperti Math.random() milik JavaScript, yang bukan merupakan CSPRNG dan dapat menghasilkan nilai yang terbias atau dapat diprediksi; MDN merekomendasikan crypto.randomUUID() atau Web Crypto API sebagai gantinya.

Kesalahan umum lainnya meliputi:

  • memperlakukan nil UUID (semua nol) sebagai pengenal nyata
  • menganggap UUID cukup rahasia untuk mengotorisasi akses
  • menyimpannya sebagai teks ketika kolom biner 16-byte akan jauh lebih efisien

Pengembang juga sering mencampur versi secara tidak konsisten, atau mengandalkan versi 1 dalam konteks yang sensitif terhadap privasi di mana stempel waktu tersirat dan alamat MAC historisnya membocorkan informasi. Terakhir, membandingkan UUID secara sensitif huruf besar/kecil menyebabkan ketidakcocokan palsu, karena RFC 9562 menetapkannya sebagai tidak sensitif huruf besar/kecil.

Frequently Asked Questions

sell

Tags