Pembuat UUID

Alat pembuatan dan validasi UUID profesional yang mendukung beberapa versi UUID termasuk v1 (timestamp), v4 (acak), v5 (berbasis nama), dan v7 (Unix time + acak). Menawarkan pembuatan batch dengan jumlah yang dapat disesuaikan, opsi format fleksibel termasuk konversi huruf besar, penghapusan tanda hubung, dan penambahan kurung kurawal. Termasuk validator UUID bawaan dengan deteksi versi dan menyediakan contoh kode multi-bahasa. Cocok untuk identifikasi rekaman database, pelacakan log, antarmuka lintas sistem, dan skenario lainnya. Semua operasi dilakukan secara lokal di browser Anda, memastikan privasi dan keamanan.

Pembuat UUID

Opsi Format

Validator UUID

Panduan Penggunaan

UUID adalah pengidentifikasi 128-bit, umumnya direpresentasikan sebagai string 36 karakter dengan tanda hubung.
UUID v1: Berdasarkan timestamp dan alamat MAC; berurutan waktu tetapi dapat membocorkan informasi waktu atau lokasi.
UUID v4: Dibuat secara acak; paling umum digunakan, menawarkan keunikan dan privasi yang kuat.
UUID v7: Berdasarkan milidetik Unix + bit acak; dapat diurutkan secara alami dan menghindari masalah privasi pada v1.
UUID v5: Dibuat secara deterministik dari UUID namespace dan nama menggunakan SHA-1; input yang sama selalu menghasilkan output yang sama.
Format standar: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 karakter).

Fitur

  • Mendukung UUID v1, v4, v5, dan v7
  • Pembuatan massal dengan jumlah yang dapat disesuaikan
  • Pemformatan fleksibel: huruf besar, hapus tanda hubung, tambah kurung kurawal
  • Validator bawaan dengan deteksi versi otomatis
  • Dukungan penuh untuk internasionalisasi dan multi-tema

Apa itu UUID?

UUID adalah pengidentifikasi 128-bit, umumnya direpresentasikan sebagai string 36 karakter dengan tanda hubung.

UUID v1: Berdasarkan timestamp dan alamat MAC; berurutan waktu tetapi dapat membocorkan informasi waktu atau lokasi.

UUID v4: Dibuat secara acak; paling umum digunakan, menawarkan keunikan dan privasi yang kuat.

UUID v7: Berdasarkan milidetik Unix + bit acak; dapat diurutkan secara alami dan menghindari masalah privasi pada v1.

UUID v5: Dibuat secara deterministik dari UUID namespace dan nama menggunakan SHA-1; input yang sama selalu menghasilkan output yang sama.

UUID Contoh Cepat

Format standar:
550e8400-e29b-41d4-a716-446655440000
Format huruf besar:
550E8400-E29B-41D4-A716-446655440000
Tanpa tanda hubung:
550e8400e29b41d4a716446655440000
Dengan kurung kurawal:
{550e8400-e29b-41d4-a716-446655440000}

UUID Kasus Penggunaan Umum

  • Pengidentifikasi unik untuk catatan database atau sumber daya
  • Trace ID untuk pencatatan log dan pelacakan peristiwa
  • Pengidentifikasi publik yang tidak dapat diprediksi
  • Pengidentifikasi konsisten di seluruh integrasi sistem

UUID FAQ & Jebakan

  • v1 dan Privasi: v1 dapat mengekspos stempel waktu atau lokasi perangkat keras; utamakan v4 untuk kasus penggunaan yang sensitif terhadap privasi.
  • Sensitivitas huruf: Pencocokan UUID tidak membedakan huruf besar dan kecil.
  • Tanda hubung hanya untuk keterbacaan; pertahankan kecuali dibatasi oleh sistem lama.
  • Format dengan kurung kurawal (misalnya, {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}) diterima di beberapa lingkungan (misalnya, Windows Registry).
  • v5 bersifat deterministik: namespace + nama yang sama => UUID yang sama. Ideal untuk operasi idempoten; hindari ketika ketidakprediksian diperlukan.

Cara Menggunakan UUID dalam Bahasa Pemrograman

JavaScript
Hasilkan
// UUID v4 (simple)
function uuidv4(){
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
    const r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
    return v.toString(16);
  });
}
const id = uuidv4();
UUID v7 (Unix Time + Acak)
// UUID v7 (Unix ms + randomness)
function uuidv7(){
  const cryptoObj = (globalThis.crypto || globalThis.msCrypto);
  const rb = n => { const a = new Uint8Array(n); cryptoObj?.getRandomValues ? cryptoObj.getRandomValues(a) : a.forEach((_,i)=>a[i]=Math.random()*256|0); return a; };
  const hex = b => Array.from(b).map(x=>x.toString(16).padStart(2,'0')).join('');
  const ts = BigInt(Date.now()).toString(16).padStart(12,'0');
  const ver = rb(2); ver[0] = (ver[0] & 0x0f) | 0x70;    // set version 7
  const vrn = rb(2); vrn[0] = (vrn[0] & 0x3f) | 0x80;    // RFC4122 variant
  const tail = rb(6);
  return `${ts.slice(0,8)}-${ts.slice(8,12)}-${hex(ver)}-${hex(vrn)}-${hex(tail)}`;
}
const id7 = uuidv7();
Validasi
const re=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
re.test(id); // true/false
PHP
Hasilkan
<?php
// v4 using random_bytes
function uuidv4(){
  $data = random_bytes(16);
  $data[6] = chr((ord($data[6]) & 0x0f) | 0x40);
  $data[8] = chr((ord($data[8]) & 0x3f) | 0x80);
  return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
$id = uuidv4();
UUID v7 (Unix Time + Acak)
<?php
// composer require ramsey/uuid:^4.7
use Ramsey\Uuid\Uuid;

$uuid7 = Uuid::uuid7();
Validasi
<?php
$re = '/^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i';
preg_match($re, $id) === 1; // true/false
Python
Hasilkan
import uuid
# v4
uid = uuid.uuid4()
# v1
uid1 = uuid.uuid1()
UUID v7 (Unix Time + Acak)
# pip install uuid6
from uuid6 import uuid7

uid7 = uuid7()
Validasi
import re
re_uuid = re.compile(r'^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', re.I)
bool(re_uuid.match(str(uid)))
Go
Hasilkan
// go get github.com/google/uuid
import "github.com/google/uuid"

id := uuid.New()     // v4
id1 := uuid.NewUUID() // v1 (may return error)
UUID v7 (Unix Time + Acak)
// go get github.com/gofrs/uuid/v5
import (
  uuid "github.com/gofrs/uuid/v5"
)

id7, err := uuid.NewV7()
Validasi
import "github.com/google/uuid"
_, err := uuid.Parse(id.String()) // err == nil means valid
Rust
Hasilkan
// Cargo.toml: uuid = { version = "1", features = ["v4", "v1"] }
use uuid::Uuid;

let v4 = Uuid::new_v4();
// v1 requires a context/ts, often via external crate; shown for completeness
UUID v7 (Unix Time + Acak)
// Cargo.toml: uuid = { version = "1", features = ["v7"] }
use uuid::Uuid;

let v7 = Uuid::now_v7();
Validasi
use uuid::Uuid;
let ok = Uuid::parse_str(v4.to_string().as_str()).is_ok();
Java
Hasilkan
import java.util.UUID;

UUID id = UUID.randomUUID(); // v4
UUID v7 (Unix Time + Acak)
// Maven: com.github.f4b6a3:uuid-creator
import com.github.f4b6a3.uuid.UuidCreator;

UUID v7 = UuidCreator.getTimeOrderedEpoch(); // UUIDv7
Validasi
import java.util.UUID;

try { UUID.fromString(id.toString()); /* valid */ } catch (IllegalArgumentException ex) { /* invalid */ }