Cara Membuat UUID di JavaScript, Python, dan Command Line
UUID (Universally Unique Identifier) adalah identifier 128-bit yang diformat sebagai 32 karakter hex dipisahkan tanda hubung: 550e8400-e29b-41d4-a716-446655440000. UUID digunakan di mana pun database membutuhkan primary key yang bisa dibuat tanpa otoritas pusat — ID pengguna, token sesi, nama file, resource API.
Versi UUID
Ada lima versi UUID. Versi 4 adalah yang paling sering dibutuhkan.
| Versi | Cara dibuat | Gunakan saat |
|---|---|---|
| v1 | Timestamp + MAC address | Butuh UUID yang bisa diurutkan, terikat ke mesin tertentu |
| v3 | Hash MD5 dari namespace + nama | Butuh UUID deterministik (input sama = UUID sama) |
| v4 | Acak | Pilihan default — unik, tidak perlu koordinasi |
| v5 | Hash SHA-1 dari namespace + nama | Seperti v3 tapi SHA-1 |
| v7 | Unix timestamp + acak | Bisa diurutkan seperti v1, tanpa bocorkan MAC address |
Gunakan v4 untuk sebagian besar kebutuhan. Gunakan v7 jika UUID perlu diurutkan secara kronologis (berguna untuk index database).
JavaScript — browser
Browser modern memiliki crypto.randomUUID() bawaan sejak 2021. Tidak perlu library.
const id = crypto.randomUUID();
console.log(id);
// "550e8400-e29b-41d4-a716-446655440000"
Didukung di Chrome 92+, Firefox 95+, Safari 15.4+, Edge 92+.
UUID v4 manual (tanpa dependensi, bekerja di mana saja):
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
const r = crypto.getRandomValues(new Uint8Array(1))[0] & 0xf;
const v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
console.log(uuidv4());
// "a3bb189e-8bf9-3888-9912-ace4e6543002"
Gunakan crypto.getRandomValues() — ini aman secara kriptografi. Jangan pernah gunakan Math.random() untuk membuat UUID.
JavaScript — Node.js
Node.js 14.17+ menyertakan crypto.randomUUID() di modul crypto bawaan:
const { randomUUID } = require('crypto');
const id = randomUUID();
console.log(id);
Untuk Node.js lama atau jika butuh v1/v7, gunakan paket uuid:
npm install uuid
import { v4 as uuidv4, v7 as uuidv7 } from 'uuid';
console.log(uuidv4()); // acak
console.log(uuidv7()); // bisa diurutkan berdasarkan waktu
Python
Pustaka standar Python sudah menyertakan UUID — tidak perlu pip install.
import uuid
# UUID v4 (acak)
print(uuid.uuid4())
# d9428888-122b-11e1-b85c-61cd3cbb3210
# UUID v1 (timestamp + node)
print(uuid.uuid1())
# UUID v5 (namespace + nama — deterministik)
print(uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com'))
# cfbff0d1-9375-5685-968c-48ce8b15ae17
Buat beberapa UUID sekaligus:
import uuid
ids = [str(uuid.uuid4()) for _ in range(5)]
for id in ids:
print(id)
Konversi UUID ke format berbeda:
import uuid
u = uuid.uuid4()
print(u) # 550e8400-e29b-41d4-a716-446655440000 (standar)
print(u.hex) # 550e8400e29b41d4a716446655440000 (tanpa tanda hubung)
print(u.int) # angka integer 128-bit
print(u.bytes) # 16 byte mentah
Command line
macOS dan Linux:
uuidgen
# F9168C5E-CEB2-4FAA-B6BF-329BF39FA1E4
# Huruf kecil
uuidgen | tr '[:upper:]' '[:lower:]'
Linux (alternatif):
cat /proc/sys/kernel/random/uuid
One-liner Python (bekerja di mana saja ada Python):
python3 -c "import uuid; print(uuid.uuid4())"
Buat 100 UUID sekaligus:
python3 -c "import uuid; [print(uuid.uuid4()) for _ in range(100)]"
Validasi UUID
function isValidUUID(str) {
return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(str);
}
import uuid
def is_valid_uuid(val: str) -> bool:
try:
uuid.UUID(val)
return True
except ValueError:
return False
Ringkasan
- Gunakan
crypto.randomUUID()di browser modern dan Node.js 14.17+ — tidak perlu library. - Gunakan
uuid.uuid4()di Python — sudah ada di pustaka standar. - Gunakan
uuidgendi terminal macOS/Linux. - Pilih v4 untuk keperluan umum; pilih v7 jika UUID perlu diurutkan secara kronologis.
- Jangan pernah gunakan
Math.random()untuk membuat UUID — gunakancrypto.getRandomValues().