Generator UUID Online Gratis - Buat ID Unik (v1-v7)

Apa itu UUID?

UUID (Universally Unique Identifier) adalah pengidentifikasi 128-bit yang digunakan dalam sistem komputer untuk identifikasi informasi yang unik. UUID distandarisasi menurut RFC 4122 dan, berkat entropinya yang besar, menjamin kemungkinan tabrakan yang hampir nol – artinya, dua UUID yang dihasilkan secara independen hampir pasti akan unik.

UUID memiliki format standar: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, di mana setiap x adalah digit heksadesimal (0-9, a-f), M menunjukkan versi UUID, dan N menunjukkan varian.

Versi UUID

UUID v1 (Timestamp + Alamat MAC)

UUID v1 didasarkan pada timestamp saat ini dan nilai acak (di browser, sebagai pengganti alamat MAC). Ini menggunakan interval 100-nanodetik sejak 15 Oktober 1582 (Kalender Gregorian).

Penggunaan:

  • Situasi di mana Anda memerlukan pengurutan UUID secara kronologis
  • Debugging dan logging (UUID berisi informasi waktu pembuatan)
  • Sistem terdistribusi dengan sinkronisasi waktu

Contoh: 6ba7b810-9dad-11d1-80b4-00c04fd430c8

Keuntungan:

  • UUID dapat diurutkan secara kronologis berdasarkan waktu pembuatan
  • Berguna untuk audit dan debugging
  • Mengandung informasi timestamp

Kekurangan:

  • Risiko keamanan potensial – mengandung timestamp
  • Di browser, tidak mengandung alamat MAC yang sebenarnya (digantikan oleh nilai acak)
  • Lokalitas DB yang buruk (timestamp berada di bit urutan rendah)

UUID v3 (Hash MD5)

UUID v3 dihasilkan menggunakan hash MD5 dari namespace UUID dan nama. Deterministik – namespace + nama yang sama akan selalu menghasilkan UUID yang sama.

Penggunaan:

  • Konversi URL, nama DNS, atau pengidentifikasi lain ke UUID
  • Situasi di mana Anda memerlukan UUID yang dapat direproduksi
  • Pemetaan antara berbagai sistem identifikasi

Contoh: a3bb189e-8bf9-3888-9912-ace4e6543002

Keuntungan:

  • Deterministik (input sama = output sama)
  • Ideal untuk mengonversi pengidentifikasi yang dikenal
  • Tidak ada tabrakan untuk input yang berbeda

Kekurangan:

  • MD5 adalah algoritma usang (utamakan v5)
  • Membutuhkan namespace dan nama
  • Input asli tidak dapat dipulihkan

UUID v4 (Acak) - DIREKOMENDASIKAN

Versi UUID yang paling banyak digunakan. UUID v4 dihasilkan secara murni acak menggunakan generator angka acak yang aman secara kriptografis (crypto.getRandomValues()).

Penggunaan:

  • Kunci primer database
  • Pengidentifikasi sesi (session IDs)
  • Nama file yang unik
  • Token API
  • Tujuan umum, di mana Anda memerlukan ID yang dijamin unik

Contoh: f47ac10b-58cc-4372-a567-0e02b2c3d479

Keuntungan:

  • Entropi dan keamanan maksimum
  • Tidak ada ketergantungan pada waktu atau parameter sistem
  • Implementasi paling sederhana

Peluang tabrakan: Saat menghasilkan 1 miliar UUID per detik selama 100 tahun, peluang tabrakan adalah sekitar 0,00000006%.

UUID v5 (Hash SHA-1)

UUID v5 sama dengan v3, tetapi menggunakan SHA-1 sebagai pengganti MD5. Alternatif yang lebih modern dan aman untuk v3.

Penggunaan:

  • Sama dengan v3, tetapi dengan keamanan yang lebih baik
  • Diutamakan daripada v3 untuk proyek baru
  • Menghasilkan UUID dari URL, nama DNS, OID, X.500 DN

Contoh: 886313e1-3b8a-5372-9b90-0c9aee199e5d

Keuntungan:

  • Deterministik
  • SHA-1 lebih kuat dari MD5
  • Cocok untuk pemetaan antar sistem

Kekurangan:

  • SHA-1 juga dianggap usang (tetapi masih lebih aman daripada MD5)
  • Membutuhkan namespace dan nama

UUID v6 (Timestamp Terurut)

UUID v6 adalah versi v1 yang ditingkatkan dengan bit waktu yang diatur ulang untuk pengindeksan DB yang lebih baik. Dirancang untuk mengatasi masalah lokalitas dalam database.

Penggunaan:

  • Kunci primer database dengan pengurutan waktu
  • Sistem yang memerlukan pengurutan kronologis dan kinerja DB
  • Alternatif yang lebih modern untuk v1

Contoh: 1ec9414c-232a-6b00-b3c8-9e6bdeced846

Keuntungan:

  • Lokalitas DB lebih baik daripada v1 (timestamp di bit urutan tinggi)
  • Pengurutan kronologis
  • Kompatibel dengan standar UUID

Kekurangan:

  • Kurang umum digunakan daripada v1/v4
  • Masih mengandung informasi waktu (risiko keamanan)

UUID v7 (Timestamp Unix)

UUID v7 menggunakan timestamp Unix (milidetik sejak 1970) + bit acak. Versi UUID terbaru dengan lokalitas DB terbaik.

Penggunaan:

  • Kunci primer database modern
  • Sistem yang memerlukan kinerja + pengurutan waktu
  • Pengganti v1/v6 dalam proyek baru

Contoh: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f

Keuntungan:

  • Lokalitas DB terbaik dari semua versi
  • Timestamp Unix adalah standar
  • Menggabungkan keuntungan keacakan dan pengurutan waktu

Kekurangan:

  • Spesifikasi relatif baru (RFC 4122bis)
  • Kurang didukung dalam sistem lama

Versi UUID Mana yang Harus Digunakan?

Panduan Keputusan

Membutuhkan keamanan dan keacakan maksimum? → Gunakan UUID v4 (pilihan paling umum)

Membutuhkan pengurutan waktu dan kinerja DB? → Gunakan UUID v7 (modern) atau UUID v6 (standar)

Membutuhkan UUID yang dapat direproduksi dari pengidentifikasi yang ada? → Gunakan UUID v5 (SHA-1) atau UUID v3 (MD5, lawas)

Membutuhkan timestamp dan jejak audit? → Gunakan UUID v1 (lawas, kinerja DB lebih buruk)

Database

Untuk proyek baru: UUID v7 atau v4

  • v7 ideal untuk pengurutan waktu + kinerja
  • v4 untuk keacakan maksimum tanpa informasi waktu

Untuk sistem lawas: UUID v1 atau v6

  • v6 memiliki lokalitas DB yang lebih baik daripada v1
  • v1 didukung secara luas

Keuntungan UUID sebagai kunci primer:

  • Keunikan Global – Anda dapat menggabungkan data dari berbagai database tanpa konflik
  • Keamanan – Berbeda dengan ID berurutan (1, 2, 3…), nilai berikutnya tidak dapat ditebak
  • Sistem Terdistribusi – UUID dapat dihasilkan secara independen di beberapa server tanpa koordinasi
  • Penggabungan Database – Konflik tidak muncul saat menggabungkan dua database

Kekurangan:

  • Ukuran lebih besar (16 byte vs 4-8 byte untuk integer)
  • Pengindeksan lebih lambat di beberapa database (gunakan v6/v7 untuk kinerja lebih baik)
  • Kurang mudah dibaca manusia

API dan Layanan Web

  • REST API – Pengidentifikasi unik untuk sumber daya
  • GraphQL – Pengidentifikasi global untuk node
  • Webhook – Melacak permintaan dan respons
  • Token – ID Sesi, token refresh

File dan Penyimpanan

  • Nama File – Pencegahan tabrakan saat mengunggah
  • S3/Cloud Storage – Jalur objek yang unik
  • Kunci Cache – Pengidentifikasi dalam sistem cache

Aplikasi Frontend

  • Komponen React/Vue – Kunci unik untuk daftar
  • ID Sementara – ID sebelum disimpan ke database
  • Local storage – Kunci untuk data yang disimpan
  • Aplikasi Offline-first – Menghasilkan ID tanpa koneksi ke server

Fitur Lanjut Generator

Menghasilkan UUID dengan Waktu Kustom

Untuk versi berbasis waktu (v1, v6, v7), Anda dapat memilih timestamp apa pun menggunakan pemilih tanggal-waktu. Ini berguna untuk:

Pengujian:

  • Simulasi UUID yang dibuat di masa lalu
  • Menguji pengurutan waktu dalam database
  • Reproduksi UUID untuk debugging

Migrasi Data:

  • Menghasilkan UUID dengan timestamp historis
  • Mengisi ulang data dengan nilai timestamp yang benar
  • Mengimpor data dari periode waktu yang berbeda

Audit dan Kepatuhan:

  • Rekonstruksi UUID berdasarkan waktu pembuatan catatan
  • Pembuatan pengidentifikasi retroaktif

Contoh Penggunaan:

  1. Pilih versi v1, v6, atau v7
  2. Atur tanggal dan waktu menggunakan pemilih tanggal-waktu
  3. Hasilkan UUID dengan timestamp kustom Anda

UUID Berbasis Hash (v3, v5)

Untuk UUID deterministik, Anda dapat menggunakan versi v3 (MD5) atau v5 (SHA-1):

Cara Menggunakan:

  1. Pilih namespace sesuai jenis pengidentifikasi Anda
  2. Masukkan nama/nilai
  3. Hasilkan UUID

Contoh:

NamespaceNama (Input)Penggunaan
DNSexample.comMengonversi nama domain ke UUID
DNSgoogle.comSetiap situs web memiliki UUID unik
URLhttps://example.com/pageMengonversi URL ke UUID
URLhttps://api.example.com/users/123Titik akhir API sebagai UUID
OID1.3.6.1.4.1.343Pengidentifikasi Objek ke UUID
X.500CN=John Doe,O=CompanyNama Terkemuka ke UUID

Properti Penting:

  • Deterministik: Input yang sama = selalu UUID yang sama
  • Dapat Direproduksi: Anda dapat membuat ulang UUID kapan saja
  • Konsisten: UUID yang sama di berbagai sistem
  • Tidak Dapat Didekode: Nama asli tidak dapat dipulihkan dari UUID
  • ℹ️ Satu UUID: Untuk v3/v5, hanya satu UUID yang selalu dihasilkan (input yang sama = output yang sama)

Penggunaan Praktis:

// Contoh: Konversi URL ke UUID v5
Namespace: URL
Nama: https://example.com/api/users/123
Hasil: 886313e1-3b8a-5372-9b90-0c9aee199e5d

// Input yang sama = selalu UUID yang sama
Namespace: DNS
Nama: google.com
Hasil: selalu UUID yang sama untuk google.com

Bagaimana Cara Menggunakan UUID dengan Aman?

Keamanan Kriptografis

Generator kami menggunakan crypto.getRandomValues(), yang merupakan generator angka acak yang aman secara kriptografis. Berbeda dengan Math.random(), yang dapat diprediksi dan tidak cocok untuk tujuan keamanan, crypto.getRandomValues() menyediakan entropi sejati yang cocok untuk:

  • Menghasilkan token keamanan
  • ID Sesi
  • Kunci API
  • Aplikasi kriptografis

Perbandingan Versi UUID

VersiDasarTabrakanPengurutan WaktuKinerja DBPenggunaan
v1Timestamp + MACRendah✅ Ya❌ Lebih BurukLawas, audit
v3Hash MD5Tidak Ada (deterministik)❌ Tidak⚠️ SedangKonversi (lawas)
v4AcakSangat Rendah❌ Tidak⚠️ SedangPenggunaan umum
v5Hash SHA-1Tidak Ada (deterministik)❌ Tidak⚠️ SedangKonversi (direkomendasikan)
v6Timestamp TerurutRendah✅ Ya✅ Lebih BaikDB modern dengan waktu
v7Timestamp UnixRendah✅ Ya✅ TerbaikProyek baru

UUID vs Pengidentifikasi Lain

TipeUkuranTabrakanPengurutan WaktuPenggunaan
ID Auto-increment4-8 byteDijamin unik dalam tabelAplikasi sederhana, DB lokal
UUID v416 bytePraktis tidak mungkinSistem terdistribusi, API
UUID v716 bytePraktis tidak mungkinDB modern dengan kinerja
ULID16 bytePraktis tidak mungkinUUID + pengurutan leksikografis
Snowflake ID8 byteDijamin unik dengan konfigurasi yang benarTwitter, sistem terdistribusi
NanoIDDapat dikonfigurasiBergantung pada panjangID ramah-URL

Implementasi dalam Berbagai Bahasa

JavaScript/TypeScript

// UUID v4 - Cara termudah (browser modern)
const uuid = crypto.randomUUID();

// UUID v4 - Implementasi manual
function generateUUIDv4() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
    const r = (crypto.getRandomValues(new Uint8Array(1))[0] & 0x0f) >> (c === 'x' ? 0 : 2);
    const v = c === 'x' ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });
}

// UUID v7 - Direkomendasikan untuk database
function generateUUIDv7() {
  const timestamp = Date.now();
  const timeHi = (timestamp >> 16).toString(16).padStart(8, '0');
  const timeLow = (timestamp & 0xFFFF).toString(16).padStart(4, '0');

  const randomBytes = crypto.getRandomValues(new Uint8Array(10));
  const randomHex = Array.from(randomBytes)
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');

  return `${timeHi}-${timeLow}-7${randomHex.substr(0, 3)}-${randomHex.substr(3, 4)}-${randomHex.substr(7)}`;
}

Python

import uuid

# UUID v4
uuid_v4 = str(uuid.uuid4())
# Output: '6ba7b810-9dad-11d1-80b4-00c04fd430c8'

# UUID v1
uuid_v1 = str(uuid.uuid1())

Java

import java.util.UUID;

// UUID v4
String uuidV4 = UUID.randomUUID().toString();

PHP

// UUID v4 (PHP 7+)
function generateUUID() {
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        mt_rand(0, 0xffff), mt_rand(0, 0xffff),
        mt_rand(0, 0xffff),
        mt_rand(0, 0x0fff) | 0x4000,
        mt_rand(0, 0x3fff) | 0x8000,
        mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    );
}

C#

using System;

// UUID v4
Guid uuid = Guid.NewGuid();
string uuidString = uuid.ToString();

Praktik Terbaik

Menyimpan UUID di Database

PostgreSQL:

CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT NOW()
);

MySQL 8.0+:

CREATE TABLE users (
    id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())),
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Tips: Di MySQL, simpan UUID sebagai BINARY(16) daripada CHAR(36) untuk menghemat ruang dan pengindeksan yang lebih cepat.

Validasi UUID

function isValidUUID(uuid) {
  const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
  return regex.test(uuid);
}

Konversi UUID

// Menghapus tanda hubung
const compact = uuid.replace(/-/g, '');

// Menambahkan tanda hubung kembali
function formatUUID(compactUuid) {
  return [
    compactUuid.substring(0, 8),
    compactUuid.substring(8, 12),
    compactUuid.substring(12, 16),
    compactUuid.substring(16, 20),
    compactUuid.substring(20, 32)
  ].join('-');
}

Pemecahan Masalah (Troubleshooting)

UUID v3/v5 Tidak Berfungsi

Masalah: Setelah memilih v3 atau v5, tidak ada yang dihasilkan

Solusi:

  1. ✅ Pastikan Anda telah mengisi kolom “Nama” - ini wajib!
  2. ✅ Pilih namespace yang benar sesuai dengan jenis input Anda
  3. ✅ Contoh input yang valid:
    • DNS: example.com, google.com
    • URL: https://example.com/page
    • Teks apa pun: aplikasi-saya-v1

Tips: Coba nilai sederhana seperti test dan namespace DNS terlebih dahulu.

UUID Berbasis Waktu (v1, v6, v7) Memiliki Waktu yang Aneh

Masalah: UUID yang dihasilkan memiliki timestamp yang tidak terduga

Solusi:

  1. ✅ Periksa pemilih tanggal-waktu - apakah waktu diatur dengan benar?
  2. ✅ Pemilih tanggal-waktu menggunakan zona waktu lokal Anda
  3. ✅ Biarkan pemilih tanggal-waktu kosong untuk waktu saat ini

UUID Tidak Dapat Disalin

Masalah: Tombol “Salin Semua” tidak berfungsi

Solusi:

  1. ✅ Pastikan Anda telah menghasilkan UUID (tidak kosong)
  2. ✅ Beberapa browser memerlukan HTTPS untuk API clipboard
  3. ✅ Alternatifnya, pilih teks di textarea dan salin secara manual (Ctrl+C)

Pertanyaan Umum (FAQ)

Bisakah terjadi tabrakan UUID? Secara teori ya, tetapi kemungkinannya sangat kecil. Saat menghasilkan 1 miliar UUID v4 per detik selama 100 tahun, peluang tabrakan adalah sekitar 0,00000006%. Dalam praktiknya, tabrakan tidak akan pernah terjadi.
Apakah UUID cocok sebagai kunci primer dalam database? Tergantung pada kasus penggunaan. UUID ideal untuk sistem terdistribusi dan situasi di mana Anda memerlukan keunikan global. Untuk aplikasi sederhana dengan satu database, auto-increment mungkin lebih efisien.
Apakah UUID yang dihasilkan oleh alat ini aman? Ya, kami menggunakan Web Crypto API (`crypto.getRandomValues()`), yang menyediakan nilai acak yang aman secara kriptografis. Semuanya terjadi secara lokal di browser Anda.
Apa perbedaan antara versi UUID? - **v1**: Timestamp + MAC/acak - pengurutan kronologis, kinerja DB lebih buruk - **v3/v5**: Berbasis Hash - deterministik, untuk mengonversi pengidentifikasi yang dikenal - **v4**: Acak - paling aman, paling sering digunakan - **v6**: Timestamp yang diatur ulang - kinerja DB lebih baik daripada v1 - **v7**: Timestamp Unix - kinerja DB terbaik + pengurutan waktu
Versi UUID mana yang harus saya gunakan? Untuk sebagian besar kasus, gunakan **v4** (acak). Untuk database dengan pengurutan waktu, gunakan **v7** (modern) atau **v6** (standar). Untuk mengonversi pengidentifikasi yang dikenal (URL, DNS), gunakan **v5** (SHA-1).
Bisakah saya menggunakan UUID untuk token dan kunci API? UUID v4 cocok untuk ID sesi dan token serupa. Untuk kunci API, pertimbangkan untuk menggunakan string acak yang lebih panjang (misalnya, nilai 256-bit) atau pustaka khusus.
Seberapa besar UUID? UUID memiliki 128 bit (16 byte). Dalam format string dengan tanda hubung, membutuhkan 36 karakter. Tanpa tanda hubung, 32 karakter heksadesimal.

Alternatif untuk UUID

ULID (Universally Unique Lexicographically Sortable Identifier)

  • ID 128-bit (sama seperti UUID)
  • Dapat diurutkan secara leksikografis berdasarkan waktu pembuatan
  • Representasi yang lebih ringkas (26 karakter, bukan 36)
  • Pengodean base32 tidak peka huruf besar/kecil

Contoh: 01ARZ3NDEKTSV4RRFFQ69G5FAV

NanoID

  • Ukuran lebih kecil dari UUID (standarnya 21 karakter)
  • Ramah-URL (tanpa karakter khusus)
  • Generasi lebih cepat
  • Panjang dan alfabet yang dapat dikonfigurasi

Contoh: V1StGXR8_Z5jdHi6B-myT

Snowflake ID (Twitter)

  • ID 64-bit (lebih kecil dari UUID)
  • Dapat diurutkan berdasarkan waktu
  • Berisi ID pekerja dan nomor urut
  • Membutuhkan konfigurasi terpusat

Contoh: 1234567890123456789

Kinerja dan Optimalisasi

Kecepatan Generasi

Generator kami dapat menghasilkan:

  • 1 UUID: < 1 ms
  • 100 UUID: ~10-20 ms
  • 1000 UUID: ~100-200 ms

Tips Kinerja

  1. Generasi Batch – Jika Anda membutuhkan banyak UUID, hasilkan secara bersamaan daripada satu per satu
  2. Penyimpanan di DB – Indeks kolom UUID untuk pencarian cepat
  3. Kompresi – Simpan UUID dalam bentuk biner (16 byte) daripada string (36 byte)
  4. Caching – Dalam beberapa kasus, Anda dapat pra-generasi dan melakukan cache UUID

Untuk Pengembang

Struktur UUID v4

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|        |    |    |    |
|        |    |    |    └─ 48 bit data acak (node)
|        |    |    └────── 16 bit data acak dengan varian (clock_seq)
|        |    └─────────── 12 bit data acak + 4 bit versi (time_hi_and_version)
|        └──────────────── 16 bit data acak (time_mid)
└───────────────────────── 32 bit data acak (time_low)
  • Versi (4 bit): selalu 0100 (biner) = 4 (hex)
  • Varian (2-3 bit): selalu 10 (biner) untuk RFC 4122

Pengujian UUID

// Jest test
describe('UUID Generator', () => {
  test('generates valid UUID v4', () => {
    const uuid = generateUUIDv4();
    const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
    expect(regex.test(uuid)).toBe(true);
  });

  test('generates unique UUIDs', () => {
    const uuid1 = generateUUIDv4();
    const uuid2 = generateUUIDv4();
    expect(uuid1).not.toBe(uuid2);
  });
});

Aspek Keamanan

Hal yang Tidak Boleh Dilakukan dengan UUID

Jangan gunakan UUID v1 untuk aplikasi sensitif – Mengandung timestamp, yang dapat menjadi risiko keamanan

Jangan gunakan Math.random() untuk menghasilkan UUID – Ini tidak aman secara kriptografis

Jangan mengandalkan UUID untuk otorisasi – UUID dapat ditebak (meskipun dengan kemungkinan yang sangat kecil)

Jangan menyimpan UUID di cookie tanpa enkripsi – Gunakan cookie bertanda tangan atau JWT

Hal yang Harus Dilakukan

Gunakan UUID v4 untuk sebagian besar kasus – Entropi dan keamanan tertinggi

Kombinasikan UUID dengan langkah-langkah keamanan lainnya – Untuk manajemen sesi, gunakan HTTPS, cookie HttpOnly, dan kedaluwarsa singkat

Validasi UUID di server – Selalu periksa format dan versi UUID

Gunakan sumber keacakan yang aman secara kriptografiscrypto.getRandomValues() di browser, /dev/urandom di Linux

Fakta Menarik

  • Jumlah kemungkinan UUID v4: 2^122 ≈ 5.3 × 10^36 (340 undecillion)
  • Tabrakan yang diperlukan: Untuk peluang tabrakan 50%, Anda harus menghasilkan 2.71 × 10^18 UUID (2.71 quintillion)
  • Ukuran semua kemungkinan UUID: Jika kita menyimpan setiap UUID sebagai 16 byte, seluruh ruang akan membutuhkan 85 zettabyte (85 miliar terabyte)
  • Asal: UUID distandarisasi sebagai bagian dari DCE (Distributed Computing Environment) pada tahun 1990