Generator UUID

Opsi Format

Nomor yang dihasilkan

Nomor

Generator UUID/GUID/ULID/NanoID online gratis yang mendukung 5 format ID unik, pembuatan massal hingga 100, format yang dapat disesuaikan, dan validasi UUID. Siap digunakan secara instan—sempurna untuk primary key database dan pembuatan data uji.

Rekomendasi Terkait

Apa itu UUID?

UUID (Universally Unique Identifier) adalah pengenal 128-bit yang distandarisasi oleh Open Software Foundation (OSF), didefinisikan dalam RFC 4122. Tujuannya adalah untuk memungkinkan sistem terdistribusi mengidentifikasi informasi secara unik tanpa otoritas pusat untuk penetapan ID.

UUID standar terlihat seperti `550e8400-e29b-41d4-a716-446655440000`, terdiri dari 32 digit heksadesimal yang dibagi menjadi 5 kelompok (8-4-4-4-12) oleh tanda hubung. Secara teoretis, probabilitas tabrakan UUID v4 adalah sekitar 1/10^36—jika Anda membuat 1 miliar UUID per detik selama sekitar 800 tahun, probabilitas satu tabrakan adalah sekitar 50%, yang dapat diabaikan dalam praktiknya.

UUID digunakan secara luas untuk primary key database, ID trace terdistribusi, ID permintaan, ID trace log, penamaan file unik, ID data uji, dan pengenal sesi. Hampir semua bahasa pemrograman utama menyertakan pustaka pembuatan UUID bawaan.

Kasus penggunaan

  • Hasilkan UUID v4 sebagai primary key rekaman tabel selama desain database untuk menghindari kebocoran volume data dari ID auto-increment
  • Gunakan ULID sebagai ID permintaan/trace global yang dapat diurutkan dalam sistem terdistribusi atau arsitektur mikroservis
  • Buat UUID secara massal sebagai data uji dan ID pesan/pengguna tiruan selama pengembangan API dan pengujian integrasi
  • Gunakan NanoID daripada UUID di tautan pendek frontend atau URL berbagi—lebih pendek, lebih bersih, tidak perlu encoding URL
  • Gunakan UUID v5 untuk menghasilkan ID deterministik dari namespace tetap, memastikan input yang sama selalu menghasilkan output yang sama
  • Gunakan fitur validasi untuk mengidentifikasi tipe dan versi ID saat menemukan ID format yang tidak dikenal di log debug atau dokumentasi pihak ketiga

Cara Penggunaan

  1. Pilih tipe ID yang diinginkan dari kartu di atas: UUID v4 (disarankan), v1, v5, ULID, atau NanoID
  2. Jika memilih UUID v5, masukkan string namespace; ID lain dapat langsung mengatur opsi format
  3. Toggle opsi huruf besar dan tanda hubung sesuai kebutuhan, atur jumlah pembuatan massal (1-100) melalui tombol cepat atau slider
  4. Klik tombol buat untuk melihat hasil—salin secara individual, salin semua sekaligus, atau ekspor sebagai TXT/JSON
  5. Untuk memvalidasi ID yang sudah ada, beralih ke tab "Validasi" dan tempelkan string ID untuk mendapatkan informasi tipe dan versi

Fitur

  • Lima tipe ID dalam satu alat: UUID v1 (timestamp), v4 (acak), v5 (namespace), ULID (dapat diurutkan), dan NanoID (URL-safe)—satu alat mencakup semua kebutuhan stack teknologi
  • Validasi & pengenalan UUID: Beralih ke tab Validasi, tempelkan ID apa pun untuk mengidentifikasi versi UUID-nya atau mendeteksi format ULID/NanoID—pemecahan masalah cepat selama debugging
  • Buat massal hingga 100: Buat jumlah berapa pun dari 1 hingga 100 ID sekaligus—tidak perlu lagi menyalin satu per satu secara manual untuk data uji
  • Format fleksibel: Toggle huruf besar dan tanda hubung untuk UUID agar sesuai dengan persyaratan format database, URL, dan file konfigurasi
  • Ekspor & riwayat lokal: Salin semua dengan satu klik, ekspor file TXT/JSON, riwayat pembuatan disimpan secara lokal untuk pemulihan instan—operasi massal lebih efisien
  • Acak aman sisi klien: Menggunakan API crypto browser untuk angka acak yang aman secara kriptografis, ID tidak pernah meninggalkan perangkat Anda, berfungsi offline

Contoh Kode

Buat UUID v4 di JavaScript

javascript

Browser modern dan Node.js 14.17+ memiliki Web Crypto API bawaan, memungkinkan pembuatan UUID v4 langsung tanpa pustaka pihak ketiga.

// Browser modern / Node.js 19+
const id = crypto.randomUUID();
console.log(id); // "550e8400-e29b-41d4-a716-446655440000"

// Node.js 14.17 - 18.x
const crypto = require('crypto');
const id = crypto.randomUUID();

Buat UUID Secara Massal di Python

python

Gunakan modul uuid pustaka standar Python untuk membuat beberapa UUID v4 secara massal, ideal untuk persiapan data uji.

import uuid

# Buat satu UUID
uid = uuid.uuid4()
print(uid)

# Buat 10 UUID secara massal
for _ in range(10):
    print(uuid.uuid4())

# Buat UUID huruf besar tanpa tanda hubung
print(uuid.uuid4().hex.upper())

Buat UUID dari Baris Perintah Shell

bash

Buat UUID dengan cepat di terminal Linux/macOS, cocok untuk digunakan dalam skrip shell.

# Linux
uuidgen

# macOS
uuidgen | tr 'A-Z' 'a-z'

# Baca langsung dari file acak sistem (metode paling mentah)
cat /proc/sys/kernel/random/uuid

ID Unik: pilihan mana yang harus dipilih?

UUID bukan satu-satunya pilihan. Auto-increment ID database dan Snowflake juga merupakan skema primary key utama. Pertimbangkan 'skala data, apakah perlu keunikan global, apakah perlu urutan waktu' sebelum memilih skema spesifik - ini dapat menghindari banyak jalan memutar.

UUID v1 / v4 / v5 / ULID / NanoID: mana yang harus dipilih?

5 jenis ID memiliki trade-off dalam skala data, kemampuan pengurutan, dan panjang karakter. Pertimbangkan 'di mana digunakan + apakah perlu urutan + apakah digunakan langsung di URL' - lebih dapat diandalkan daripada memilih berdasarkan angka itu sendiri.

SkemaSkenario yang DirekomendasikanKemampuan PengurutanPanjangTingkat Rekomendasi
UUID v1Sistem internal yang memerlukan urutan waktu dan dapat menerima kebocoran alamat MAC serta waktu pembuatanTerurut berdasarkan waktu36 karakter⚠ Umumnya tidak direkomendasikan (kebocoran privasi)
UUID v4Primary key database, pengenal umum, sebagian besar skenario bisnisTidak terurut (acak)36 karakter✓ Pilihan utama untuk penggunaan umum
UUID v5Skenario yang memerlukan output deterministik (input sama → UUID sama)Tidak terurut36 karakter✓ Direkomendasikan saat namespace tetap
ULIDPrimary key sistem terdistribusi, pelacakan log, indeks yang memerlukan urutan waktuTerurut berdasarkan waktu (48 bit pertama adalah timestamp milidetik)26 karakter✓ Pilihan utama untuk sistem terdistribusi
NanoIDURL pendek, pengenal cookie, referensi JS frontendTidak terurut (acak)21 karakter (default)✓ Pilihan utama untuk skenario ID pendek

UUID vs Auto-increment ID Database vs Snowflake ID: cara memilih skema primary key

Ketiga skema ini adalah pilihan paling umum untuk primary key backend, yang menentukan skalabilitas, keamanan konkurensi, dan karakteristik kinerja sistem. Keputusan berdasarkan 'skala data / kebutuhan keunikan global / kebutuhan keterbacaan' dapat menghindari perubahan arsitektur di kemudian hari.

DimensiUUIDAuto-increment ID DatabaseSnowflake
Keunikan Global✓ Ya (secara teori)✗ Tidak (duplikat pada sharding)✓ Ya (dijamin oleh pusat data + ID mesin)
Kebocoran Volume Data✓ Tidak membocorkan✗ Bocor langsung (peningkatan 1, 2, 3 mengungkap volume data nyata)⚠ Bit waktu membocorkan waktu pembuatan (tidak membocorkan volume total secara langsung)
Kemampuan Pengurutan✗ Tidak terurut (ULID pengecualian)✓ Monotonik meningkat (ramah B-Tree)✓ Meningkat tren (terurut dalam milidetik yang sama)
Sharding✓ Dukungan bawaan✗ Memerlukan generator ID atau modifikasi✓ Dibedakan melalui worker ID
Biaya Penyimpanan⚠ Tinggi (BINARY(16) 16 byte)✓ Rendah (BIGINT 8 byte)✓ Rendah (BIGINT 8 byte)
Skenario yang CocokMulti-layanan/primary key terdistribusi, pengenal eksternal, bisnis sensitif volume dataAplikasi monolitik, sistem manajemen backend, tidak memerlukan keunikan globalIM konkurensi tinggi, nomor pesanan, ID pesan (perlu implementasi sendiri)

Best Practices

Primary key database produksi: pilih UUID v4 atau ULID, hindari v1

UUID v1 menggunakan 48 bit terakhir untuk alamat MAC dan 48 bit pertama untuk timestamp dengan presisi 100ns——**kedua field ini dapat direkonstruksi menjadi sidik jari mesin dan waktu pembuatan**. v1 secara eksplisit ditandai 'only when backward compatibility is needed' (hanya jika kompatibilitas mundur diperlukan) di RFC 4122. Lingkungan produksi sebaiknya memilih v4 (acak) atau ULID (dapat diurutkan); v1 hanya boleh digunakan sesekali untuk debugging atau pelacakan mesin pembuat. **Jangan pernah** menggunakan v1 sebagai ID pengguna, ID perangkat, atau nomor pesanan yang diekspos ke publik.

Bagaimana cara memilih antara UUID v1, v4, dan v5?

UUID 128 bit ≠ entropi: v4 hanya memiliki 122 bit entropi aktual

Meskipun UUID v4 memiliki total 128 bit, **4 bit pertama adalah nomor versi (tetap 0100), 2 bit terakhir adalah nomor varian (tetap 10)** — benar-benar hanya 122 bit yang acak. Ini adalah batasan format yang ditentukan oleh RFC 4122, dan **library UUID v4 mana pun yang mengklaim '128 bit sepenuhnya acak' adalah implementasi yang salah**. Selain itu, 2 bit tinggi byte ke-7 dari 64 bit terakhir v4 juga merupakan field varian, sehingga entropi aktualnya lebih rendah. Saat merancang sistem, hitung keamanan berdasarkan 122 bit (bukan 128 bit) untuk menghindari meremehkan risiko tabrakan.

RFC 4122 - Spesifikasi UUID

Selalu gunakan kolom BINARY(16) untuk menyimpan UUID, bukan VARCHAR(36)

String UUID v4 `550e8400-e29b-41d4-a716-446655440000` terlihat ringkas, tetapi sebenarnya VARCHAR(36) menyimpan 36 byte + 2 byte panjang = 38 byte, **menggunakan 2.4 kali lebih banyak ruang penyimpanan daripada BINARY(16)**. MySQL/PostgreSQL/MSSQL semuanya memiliki fungsi UUID bawaan untuk penulisan langsung ke BINARY(16), dan ukuran indeks juga berkurang setengah. Saat tabel melebihi 100 juta baris, indeks primary key VARCHAR(36) menambah 1-2 level pada tinggi B-Tree, **menurunkan kinerja kueri sebesar 30-50%**. Konversi ke string hanya saat ditampilkan di frontend, dan selalu transmisikan sebagai BINARY(16) di lapisan bisnis.

Perbandingan UUID / ULID / NanoID

Gunakan NanoID atau UUID tanpa tanda hubung untuk skenario URL, hindari encoding URL

Set karakter UUID v4 adalah `[0-9a-f-]`, dan **tanda hubung - memerlukan dua kali encoding URL dalam path URL** (pertama di-escape ke %2D, lalu ke %252D), yang terlihat sangat jelek. Ada dua solusi: **(1) Gunakan NanoID langsung untuk skenario URL** (default 21 karakter URL-safe); **(2) UUID v4 + tanda hubung nonaktif** untuk menghasilkan 32 digit hex murni yang dapat digunakan sebagai segmen path URL tanpa encoding. Untuk skenario cookie, prioritaskan NanoID (A-Za-z0-9_-) atau UUID tanpa tanda hubung, hindari karakter `+` `/` `=` (set karakter Base64).

Dapatkah saya menghapus tanda hubung atau mengubah UUID menjadi huruf besar?

Selalu hapus duplikat setelah pembangkitan massal, bug generator dapat menyebabkan duplikat

Probabilitas tabrakan UUID v4 sekitar 1/10^36, secara teori tidak perlu menghapus duplikat——**tetapi dalam praktik, jangan percaya teori**. Kegagalan RNG kernel Linux, bug implementasi `crypto.randomUUID` di versi awal Node.js, dan kurangnya sumber entropi saat VM cloud boot adalah insiden nyata yang menyebabkan UUID yang dihasilkan secara massal mengandung nilai duplikat. **Setelah membangkitkan 100rb+ UUID secara massal di lingkungan produksi, selalu lakukan verifikasi duplikat dengan `SELECT id, COUNT(*) FROM t GROUP BY id HAVING COUNT(*) > 1`**, dan segera rollback versi generator jika ditemukan masalah. Ini adalah praktik terbaik yang dipelajari dari pengalaman pahit dalam skenario migrasi data dan impor massal.

Dapatkah saya membuat beberapa UUID sekaligus?

Pertanyaan Umum

Apa perbedaan antara UUID dan GUID?

UUID (Universally Unique Identifier) dan GUID (Globally Unique Identifier) pada dasarnya adalah hal yang sama dengan nama berbeda: UUID adalah nama standar formal IETF (RFC 4122), sedangkan GUID adalah istilah pilihan Microsoft di ekosistem Windows. Keduanya memiliki format 128-bit yang identik seperti `550e8400-e29b-41d4-a716-446655440000`. UUID standar yang dihasilkan oleh alat ini dapat digunakan secara bergantian dalam skenario apa pun yang membutuhkan GUID.

Bagaimana cara memilih antara UUID v1, v4, dan v5?

UUID v1 berbasis timestamp dan alamat MAC—terurut berdasarkan waktu dan dapat dilacak, tetapi dapat membocorkan informasi alamat MAC. UUID v4 sepenuhnya acak, pilihan yang paling umum digunakan dan aman, cocok untuk sebagian besar skenario primary key dan pengenal. UUID v5 adalah versi berbasis namespace hash SHA-1—namespace yang sama + nama yang sama selalu menghasilkan UUID yang sama, ideal untuk skenario output deterministik. Untuk pengembangan umum, UUID v4 adalah pilihan default.

Apa keunggulan ULID dan NanoID dibandingkan UUID v4?

ULID (26 karakter) lebih pendek dari UUID (36 karakter dengan tanda hubung) dan dapat diurutkan secara leksikografis berdasarkan waktu pembuatan, menjadikannya ideal untuk indeks database dan pelacakan log. NanoID (default 21 karakter) bahkan lebih pendek dan lebih cepat, menggunakan karakter URL-safe sehingga tidak perlu escaping di URL dan cookie—sekitar 30% lebih kecil dari UUID. Ketiganya memiliki probabilitas tabrakan yang dapat diabaikan, tetapi kemampuan pengurutan ULID bersinar dalam sistem terdistribusi, sedangkan NanoID lebih ramah untuk skenario frontend/URL.

Dapatkah saya membuat beberapa UUID sekaligus?

Ya. Alat ini mendukung pembuatan massal dari 1 hingga 100 ID. Atur jumlah melalui tombol cepat atau slider, lalu buat dengan satu klik—sempurna untuk pembuatan data uji, impor massal, dan menyiapkan ID unik untuk skrip. Setelah dibuat, Anda dapat menyalin semua hasil sekaligus atau mengekspor sebagai file TXT atau JSON.

Panduan pembuatan massal

Dapatkah saya memvalidasi apakah sebuah string adalah UUID yang valid?

Ya. Beralih ke tab "Validasi" dan tempelkan string apa pun—alat ini secara otomatis mengidentifikasi dan memvalidasi: UUID standar (v1/v3/v4/v5) akan melaporkan nomor versi spesifiknya, dan juga mengenali format ULID (Crockford Base32 26 karakter) dan NanoID (karakter URL-safe 21 karakter), menjadikannya sangat nyaman untuk memecahkan masalah format ID dengan cepat selama pengembangan dan debugging.

Apakah membuat UUID secara online aman? Apakah ID saya akan bocor ke server?

Sama sekali aman. Semua pembuatan dan validasi ID berjalan secara lokal di browser Anda melalui JavaScript, menggunakan crypto.getRandomValues() untuk angka acak yang aman secara kriptografis. Tidak ada ID yang dihasilkan dikirim ke server mana pun, dan tidak ada riwayat pembuatan yang disimpan di cloud. Ini berfungsi bahkan saat offline, menjadikannya cocok untuk intranet perusahaan dan proyek sensitif.

Dapatkah saya menghapus tanda hubung atau mengubah UUID menjadi huruf besar?

Ya. Untuk UUID v1/v4/v5, alat ini menyediakan dua toggle: "Huruf Besar" mengubah case output, dan "Tanda Hubung" memungkinkan Anda menghapus tanda hubung (berguna untuk URL, file konfigurasi, atau database yang membutuhkan format tanpa tanda hubung). ULID dan NanoID tidak memiliki tanda hubung secara default dan juga mendukung peralihan case.

Mengapa menggunakan alat online daripada baris perintah untuk membuat UUID?

Alat baris perintah (seperti uuidgen Linux, modul uuid Python) membutuhkan lingkungan pengembangan. Alat online bekerja secara instan di browser Anda tanpa perlu instalasi. Selain itu, alat ini mengintegrasikan pengenalan versi UUID, ekspor massal, dan fitur riwayat lokal—lebih nyaman saat bekerja lintas perangkat (misalnya, membuat ID untuk rekan non-teknis) atau saat Anda membutuhkan ID dengan cepat.

Glosarium

UUID
Universally Unique Identifier, panjang 128-bit, standar RFC 4122, versi umum meliputi v1 (timestamp+MAC), v4 (acak), v5 (hash SHA-1).
GUID
Globally Unique Identifier, istilah Microsoft untuk UUID—keduanya identik dalam format dan tujuan.
ULID
Universally Unique Lexicographically Sortable Identifier, 26 karakter menggunakan encoding Crockford Base32, 48 bit pertama adalah timestamp—dapat diurutkan berdasarkan waktu pembuatan.
NanoID
Generator ID unik ringan, default 21 karakter URL-safe (A-Za-z0-9_-), lebih pendek dan lebih cepat dari UUID, ideal untuk skenario frontend dan URL.
UUID v1
Versi UUID berbasis timestamp dan alamat MAC, dapat diurutkan berdasarkan waktu tetapi dapat membocorkan alamat MAC dan waktu pembuatan—kurang aman daripada v4.
UUID v4
Versi UUID sepenuhnya berbasis angka acak, paling banyak digunakan, probabilitas tabrakan dapat diabaikan, pilihan default dalam pengembangan.
UUID v5
Versi UUID berbasis namespace hash SHA-1—namespace yang sama + input nama yang sama menghasilkan output UUID yang identik, cocok untuk skenario deterministik.
Probabilitas Tabrakan
Probabilitas bahwa dua ID yang dihasilkan secara acak adalah identik. Probabilitas tabrakan UUID v4 adalah sekitar 1 dalam 17 miliar triliun, dapat diabaikan dalam rekayasa praktis.
Crockford Base32
Encoding Base32 yang dirancang oleh Douglas Crockford yang menggunakan huruf besar dan digit dengan mengecualikan I/L/O/U untuk menghindari karakter yang ambigu—digunakan oleh ULID.

Perbandingan UUID / ULID / NanoID

FiturUUID v4ULIDNanoID
Panjang36 karakter (dengan tanda hubung) / 32 karakter (tanpa tanda hubung)26 karakter21 karakter (default)
Set KarakterHeksadesimal (0-9a-f)Crockford Base32 (32 karakter)URL-safe (64 karakter)
Kemampuan PengurutanTidak terurut (acak)Terurut berdasarkan waktuTidak terurut (acak)
URL-safePerlu escaping (tanda hubung + alfanumerik)Sebagian besar aman (huruf besar + digit)Sepenuhnya URL-safe
Kecepatan PembuatanCepatCepat~60% lebih cepat dari UUID
Probabilitas Tabrakan1/10^361/10^361/10^34 (pada 21 karakter)
Kasus Penggunaan KhasPrimary key database, ID umumSistem terdistribusi, pelacakan logURL pendek, ID frontend, cookie

Metode Pembuatan UUID Berdasarkan Bahasa

BahasaKode
JavaScriptcrypto.randomUUID() // Browser modern / Node.js 19+
Pythonimport uuid; uuid.uuid4()
JavaUUID.randomUUID()
Gogithub.com/google/uuid; uuid.New()
Bash/Linuxuuidgen atau cat /proc/sys/kernel/random/uuid

Authoritative References