UUID (Universally Unique Identifier), 128 bit (16 bayt) uzunluğunda, merkezi bir otorite olmadan üretildiğinde bile pratikte benzersiz kabul edilen bir tanımlayıcıdır. Standart metinsel gösterimde 8-4-4-4-12 grupları hâlinde 32 onaltılık karakter ve 4 tireden oluşur (ör. 550e8400-e29b-41d4-a716-446655440000). Bu araç, RFC 4122 ve güncel RFC 9562 standardındaki v1, v3, v4, v5 ve v7 versiyonlarının tümünü üretebilir.
UUID nedir, versiyonları nelerdir?
RFC 4122/9562 UUID versiyonlarının tam açıklaması, hangisini ne zaman kullanmanız gerektiği ve GUID ile farkı.
Ek mini araçlar: NIL UUID, ULID & Base64 dönüştürücü
Rakip UUID araçlarında öne çıkan, ek olarak eklediğimiz üç mini araç: sabit boş UUID, sıralanabilir ULID kimliği ve UUID'yi Base64/Hex'e dönüştürme.
UUID versiyonları & format referans tabloları
Alıntılanabilir versiyon karşılaştırması, format örnekleri ve UUID/GUID/ULID kıyaslaması.
| Versiyon | Kaynak veri | Sıralanabilir mi? | Kullanım alanı |
|---|---|---|---|
| v1 | Zaman damgası + node ID | Kısmen | Eski sistemler, geriye dönük uyumluluk |
| v3 | Namespace + isim (MD5) | Hayır | Deterministik kimlik (eski) |
| v4 | Tamamen rastgele | Hayır | Genel amaçlı, en yaygın kullanım |
| v5 | Namespace + isim (SHA-1) | Hayır | Deterministik kimlik (önerilen) |
| v7 | Zaman damgası + rastgele | Evet | Veritabanı birincil anahtarları |
| ULID (ek) | Zaman damgası + rastgele (Base32) | Evet | Sıralanabilir, kısa dizeli kimlik |
| Format | Örnek |
|---|---|
| Standart (küçük harf) | 550e8400-e29b-41d4-a716-446655440000 |
| Büyük harf | 550E8400-E29B-41D4-A716-446655440000 |
| Tire-siz | 550e8400e29b41d4a716446655440000 |
| Süslü parantez (.NET GUID) | {550e8400-e29b-41d4-a716-446655440000} |
| URN öneki | urn:uuid:550e8400-e29b-41d4-a716-446655440000 |
| Base64 (16 bayt) | VQ6EAOKbQdSnFkRmVUQAAA== |
| Özellik | UUID | GUID | ULID |
|---|---|---|---|
| Bit uzunluğu | 128 | 128 (aynı standart) | 128 |
| Metin uzunluğu | 36 karakter | 36 (veya 38 süslü parantezli) | 26 karakter |
| Alfabe | Hex (0-9,a-f) + tire | Hex + tire | Crockford Base32 |
| Zaman sırasına uyar mı? | Sadece v1/v7 | Sadece v1/v7 | Evet (varsayılan) |
| Yaygın kullanım | Genel amaçlı | .NET/Windows ekosistemi | Veritabanı anahtarı, log ID |
Dile özel kod örnekleri: UUID nasıl üretilir?
Python, JavaScript/Node, Java, C#, Go, PHP, PostgreSQL ve MySQL için hazır, kopyalanabilir UUID/GUID üretme kod blokları. Tümü ilgili dilin standart yaklaşımını gösterir.
uuid modülü, ek kurulum gerekmez.# Standart kütüphane, kurulum gerekmez import uuid # v4 (rastgele) — en yaygın kullanım print(uuid.uuid4()) # 550e8400-e29b-41d4-a716-446655440000 # v5 (isim tabanlı, SHA-1) — deterministik print(uuid.uuid5(uuid.NAMESPACE_DNS, "biraracta.com")) # v1 (zaman + node) print(uuid.uuid1()) # Metin biçimleri u = uuid.uuid4() print(u.hex) # tire-siz print(str(u).upper()) # büyük harf
crypto.randomUUID().// Tarayıcı + Node 19+ (yerleşik, v4)
const id = crypto.randomUUID();
console.log(id); // 550e8400-e29b-41d4-a716-446655440000
// Node.js (crypto modülü ile)
import { randomUUID } from "node:crypto";
console.log(randomUUID());
// Büyük harf / tire-siz
console.log(id.toUpperCase());
console.log(id.replace(/-/g, ""));
java.util.UUID sınıfı (v4 rastgele ve v3 isim tabanlı).import java.util.UUID;
// v4 (rastgele)
UUID id = UUID.randomUUID();
System.out.println(id); // 550e8400-e29b-41d4-a716-446655440000
// v3 (isim tabanlı, MD5)
UUID named = UUID.nameUUIDFromBytes("biraracta.com".getBytes());
System.out.println(named);
// Metinden ayrıştır
UUID parsed = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
Guid yapısı. .NET 9 ile zaman sıralı Guid.CreateVersion7() de gelir.using System;
// v4 benzeri GUID (rastgele)
Guid id = Guid.NewGuid();
Console.WriteLine(id); // 550e8400-e29b-41d4-a716-446655440000
Console.WriteLine(id.ToString("B")); // {550e8400-...} .NET GUID biçimi
Console.WriteLine(id.ToString("N")); // tire-siz
Console.WriteLine(id.ToString("D").ToUpper()); // büyük harf
// .NET 9+ : v7 (zaman sıralı, veritabanı dostu)
Guid v7 = Guid.CreateVersion7();
github.com/google/uuid paketi (go get github.com/google/uuid).package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
fmt.Println(uuid.New()) // v4 (rastgele)
// v5 (isim tabanlı, SHA-1)
fmt.Println(uuid.NewSHA1(uuid.NameSpaceDNS, []byte("biraracta.com")))
// v7 (zaman sıralı) — google/uuid v1.6+
v7, _ := uuid.NewV7()
fmt.Println(v7)
}
ramsey/uuid paketi (composer require ramsey/uuid).use Ramsey\Uuid\Uuid; // v4 (rastgele) echo Uuid::uuid4()->toString(); // 550e8400-e29b-41d4-a716-446655440000 // v7 (zaman sıralı, veritabanı dostu) echo Uuid::uuid7()->toString(); // v5 (isim tabanlı, SHA-1) — deterministik echo Uuid::uuid5(Uuid::NAMESPACE_DNS, "biraracta.com")->toString();
gen_random_uuid() yerleşiktir (eski sürümlerde pgcrypto eklentisi).-- v4 (rastgele) üret SELECT gen_random_uuid(); -- Tablo sütununda otomatik varsayılan CREATE TABLE kullanicilar ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), ad text NOT NULL ); -- Eski sürüm (PostgreSQL 12 ve öncesi): -- CREATE EXTENSION IF NOT EXISTS pgcrypto;
UUID() v1 tabanlı üretir; sıralı depolama için UUID_TO_BIN(..., 1) önerilir.-- Metin UUID üret (v1 tabanlı) SELECT UUID(); -- 16 baytlık sıralı BINARY olarak sakla (indeks dostu) SELECT UUID_TO_BIN(UUID(), 1); CREATE TABLE kullanicilar ( id BINARY(16) PRIMARY KEY, ad VARCHAR(120) NOT NULL ); -- Geri okurken metne çevir: -- SELECT BIN_TO_UUID(id, 1) FROM kullanicilar;
UUID terimleri sözlüğü
UUID/GUID konusunda geçen temel kavramların kısa tanımları.
Derinlemesine rehberler
UUID konusunda en çok merak edilen sorulara ayrıntılı yanıtlar.
Hangi UUID versiyonunu kullanmalıyım?
Çoğu senaryoda v4 (tamamen rastgele) iyi bir varsayılandır: basit, gizlilik dostudur ve hiçbir bilgi sızdırmaz. Veritabanı birincil anahtarı olarak kullanacaksanız ve indeks performansı önemliyse v7 tercih edin; art arda üretilen v7 değerleri zaman sırasına uyduğundan B-tree indekslerinde daha az parçalanmaya (fragmentation) yol açar.
Aynı girdiden (ör. bir URL veya e-posta adresinden) her zaman aynı kimliği türetmeniz gerekiyorsa v5 (SHA-1 tabanlı) kullanın; v3 (MD5 tabanlı) sadece eski sistem uyumluluğu için tutulur. v1'i yalnızca zorunlu geriye dönük uyumluluk gerektiren eski sistemlerle çalışırken tercih edin.
Veritabanı birincil anahtarı için UUID mi, otomatik artan sayı mı, ULID mi?
Otomatik artan tam sayılar (auto-increment) en hızlı indekslenir ama dağıtık sistemlerde (birden fazla sunucu aynı anda kayıt ekliyorsa) çakışabilir ve kayıt sayısını dışarıya sızdırır. v4 UUID çakışmaz ama tamamen rastgele olduğundan B-tree indekslerini parçalayarak yazma performansını düşürebilir.
v7 UUID veya ULID, zaman damgası önekiyle bu sorunu çözer: hem çakışmaz hem de sıralı eklendiğinden indeks performansı auto-increment'e yakındır. ULID ayrıca 26 karakterle UUID'den (36 karakter) daha kısadır; seçim genelde ekosisteminizin (ORM/veritabanı) desteğine bağlıdır.
UUID v4 çakışma (collision) olasılığı gerçekten ne kadar düşük?
v4 UUID'de 122 bit rastgele üretilir; bu da 2122 (≈5.3 × 1036) olası değer demektir. Doğum günü paradoksu hesabına göre, %50 çakışma olasılığına ulaşmak için yaklaşık 2.71 kentilyon (2.71 × 1018) UUID üretmeniz gerekir — bu, dünya nüfusunun her bireyinin saniyede milyarlarca UUID üretmesi gereken pratikte imkânsız bir ölçektir.
Bu nedenle v4 UUID, gerçek dünya uygulamalarında güvenle "benzersiz" kabul edilir. Yine de rastgele sayı üretecinin kalitesi önemlidir; bu araç güvenli olmayan Math.random() yerine kriptografik crypto.getRandomValues kullanır.
Bu aracı sitene ekle
Aşağıdaki kodu kendi sitene yapıştırarak UUID üreticiyi ücretsiz gömebilirsin.
Sık sorulan sorular
UUID nedir?
UUID v4 nasıl üretilir?
GUID ile UUID arasındaki fark nedir?
Toplu UUID oluşturma nasıl yapılır?
UUID kaç karakter veya bayt uzunluğundadır?
Online UUID üretici güvenli mi?
UUID v1 ile v4 arasındaki fark nedir?
ULID nedir, UUID'den farkı nedir?
v7 veya v1 UUID'nin ne zaman üretildiğini nasıl öğrenirim?
Python, C#, PostgreSQL gibi dillerde UUID nasıl üretilir?
uuid.uuid4(), JavaScript/Node crypto.randomUUID(),
Java UUID.randomUUID(), C#/.NET Guid.NewGuid(), Go uuid.New(), PHP Uuid::uuid4(), PostgreSQL gen_random_uuid(), MySQL UUID().
İsim tabanlı (v5) ve zaman sıralı (v7) örnekleri de aynı bölümdedir.Metodoloji & kaynaklar
Kaynaklar: RFC 4122 (A Universally Unique IDentifier) · RFC 9562 (güncel UUID standardı, v6/v7/v8 eklemeleri) · W3C Web Cryptography API · ULID resmi spesifikasyonu (Crockford Base32). Son güncelleme: 17 Temmuz 2026. Sonuçlar algoritmiktir; v3/v5 deterministik, v1/v4/v7 ve ULID kriptografik rastgeleliğe dayanır.