All Tools / Blog / Cara Membuat UUID di JavaScript, Python, dan Command Line

Cara Membuat UUID di JavaScript, Python, dan Command Line

3 min read

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 uuidgen di terminal macOS/Linux.
  • Pilih v4 untuk keperluan umum; pilih v7 jika UUID perlu diurutkan secara kronologis.
  • Jangan pernah gunakan Math.random() untuk membuat UUID — gunakan crypto.getRandomValues().