UUID Oluşturucu

Format Seçenekleri

Sayı Oluşturulan numara sayısı

Sayı Numarası Sayı Numarası

5 benzersiz kimlik biçimini, 100 adede kadar toplu oluşturmayı, özelleştirilebilir biçimlendirmeyi ve UUID doğrulamayı destekleyen ücretsiz çevrimiçi UUID/GUID/ULID/NanoID oluşturucu. Anında kullanıma hazır — veritabanı birincil anahtarları ve test verisi oluşturma için mükemmeldir.

İlgili Öneriler

UUID nedir?

UUID (Universally Unique Identifier), Open Software Foundation (OSF) tarafından standartlaştırılan, RFC 4122'de tanımlanan 128-bitlik bir tanımlayıcıdır. Amacı, dağıtık sistemlerin kimlik ataması için merkezi bir otorite olmaksızın bilgileri benzersiz olarak tanımlamasına izin vermektir.

Standart bir UUID `550e8400-e29b-41d4-a716-446655440000` gibi görünür, tirelerle 5 gruba (8-4-4-4-12) ayrılmış 32 onaltılık basamaktan oluşur. Teorik olarak, UUID v4'ün çakışma olasılığı yaklaşık 1/10^36'dır — yaklaşık 800 yıl boyunca saniyede 1 milyar UUID oluştursanız, tek bir çakışma olasılığı yaklaşık %50 olacaktır, bu da pratikte ihmal edilebilir.

UUID'ler veritabanı birincil anahtarları, dağıtık izleme kimlikleri, istek kimlikleri, günlük izleme kimlikleri, benzersiz dosya adlandırma, test verisi kimlikleri ve oturum tanımlayıcıları için yaygın olarak kullanılır. Neredeyse tüm ana programlama dilleri yerleşik UUID oluşturma kitaplıkları içerir.

Kullanım senaryoları

  • Otomatik artan kimliklerden veri hacmi sızıntısını önlemek için veritabanı tasarımı sırasında tablo kaydı birincil anahtarları olarak UUID v4 oluşturun
  • Dağıtık sistemlerde veya mikro hizmet mimarilerinde sıralanabilir genel istek/izleme kimlikleri olarak ULID kullanın
  • API geliştirme ve entegrasyon testi sırasında test verileri ve sahte sipariş/kullanıcı kimlikleri olarak toplu UUID oluşturun
  • Ön uç kısa bağlantılarda veya paylaşım URL'lerinde UUID yerine NanoID kullanın — daha kısa, daha temiz, URL kodlaması gerekmez
  • Aynı girdinin her zaman aynı çıktıyı üretmesini sağlamak için sabit ad alanlarından deterministik kimlikler oluşturmak üzere UUID v5 kullanın
  • Hata ayıklama günlüklerinde veya üçüncü taraf belgelerinde bilinmeyen biçimli kimliklerle karşılaştığınızda kimlik türünü ve sürümünü tanımlamak için doğrulama özelliğini kullanın

Nasıl Kullanılır

  1. Yukarıdaki kartlardan istediğiniz kimlik türünü seçin: UUID v4 (önerilen), v1, v5, ULID veya NanoID
  2. UUID v5'i seçerseniz, bir ad alanı dizgesi girin; diğer kimlikler doğrudan biçim seçeneklerini ayarlayabilir
  3. Gerektiğinde büyük harf ve tire seçeneklerini değiştirin, hızlı düğmeler veya kaydırıcı aracılığıyla toplu oluşturma sayısını (1-100) ayarlayın
  4. Sonuçları görmek için oluştur düğmesine tıklayın — tek tek kopyalayın, hepsini bir kerede kopyalayın veya TXT/JSON olarak dışa aktarın
  5. Mevcut bir kimliği doğrulamak için "Doğrula" sekmesine geçin ve tür ve sürüm bilgilerini almak için kimlik dizgesini yapıştırın

Özellikler

  • Tek araçta beş kimlik türü: UUID v1 (zaman damgası), v4 (rastgele), v5 (ad alanı), ULID (sıralanabilir) ve NanoID (URL güvenli) — tek araç tüm teknoloji yığını ihtiyaçlarını karşılar
  • UUID doğrulama ve tanıma: Doğrula sekmesine geçin, UUID sürümünü tanımlamak veya ULID/NanoID biçimini algılamak için herhangi bir kimliği yapıştırın — hata ayıklama sırasında hızlı sorun çözme
  • 100 adede kadar toplu oluştur: Tek seferde 1'den 100'e kadar herhangi bir sayıda kimlik oluşturun — test verileri için artık tek tek manuel olarak kopyalamaya son
  • Esnek biçimlendirme: Veritabanı, URL ve yapılandırma dosyası biçim gereksinimlerini karşılamak için UUID'ler için büyük harf ve tireleri değiştirin
  • Dışa aktarma ve yerel geçmiş: Tek tıklamayla hepsini kopyalayın, TXT/JSON dosyalarını dışa aktarın, oluşturma geçmişi anında kurtarma için yerel olarak kaydedilir — toplu işlemler daha verimlidir
  • İstemci tarafı güvenli rastgele: Kriptografik olarak güvenli rastgele sayılar için tarayıcı crypto API'sini kullanır, kimlikler hiçbir zaman cihazınızdan çıkmaz, çevrimdışı çalışır

Kod Örnekleri

JavaScript'te UUID v4 Oluşturma

javascript

Modern tarayıcılar ve Node.js 14.17+ yerleşik Web Crypto API'sine sahiptir ve üçüncü taraf kitaplıklar olmadan doğrudan UUID v4 oluşturmaya olanak tanır.

// Modern tarayıcılar / Node.js 19+
const id = crypto.randomUUID();
console.log(id); // "550e8400-e29b-41d4-a716-446655440000"

// Node.js 14.17 - 18.x
const crypto = require('crypto');
const id = crypto.randomUUID();

Python'da Toplu UUID Oluşturma

python

Birden fazla UUID v4'ü toplu olarak oluşturmak için Python'un standart kitaplığı uuid modülünü kullanın, test verisi hazırlamak için idealdir.

import uuid

# Tek bir UUID oluştur
uid = uuid.uuid4()
print(uid)

# Toplu olarak 10 UUID oluştur
for _ in range(10):
    print(uuid.uuid4())

# Tiresiz büyük harf UUID oluştur
print(uuid.uuid4().hex.upper())

Shell Komut Satırından UUID Oluşturma

bash

Linux/macOS terminalinde hızlıca UUID oluşturun, kabuk betiklerinde kullanım için uygundur.

# Linux
uuidgen

# macOS
uuidgen | tr 'A-Z' 'a-z'

# Doğrudan sistem rastgele dosyasından oku (en ham yöntem)
cat /proc/sys/kernel/random/uuid

Benzersiz ID için hangi yöntemi seçmeli?

UUID tek seçenek değil — veritabanı otomatik artan ID ve Snowflake da yaygın birincil anahtar yöntemleridir. Önce «veri ölçeği, küresel benzersizlik gerekli mi, zamana göre sıralama gerekli mi» sorularına bakıp sonra belirli yöntemi seçmek birçok yanlış adımdan kurtarır.

UUID v1 / v4 / v5 / ULID / NanoID: Hangisini seçmeli?

5 ID türü veri ölçeği, sıralanabilirlik ve karakter uzunluğu açısından farklı ödünleşimler sunar. «Nerede kullanılıyor + sıralama gerekli mi + URL'de doğrudan mı kullanılacak» temelinde karar vermek, sayının kendisine göre seçim yapmaktan daha güvenilirdir.

YöntemÖnerilen senaryoSıralanabilirlikUzunlukTavsiye
UUID v1Zamana göre sıralama gerektiren, MAC adresi ve oluşturma zamanının ifşasını kabul edebilen dahili sistemlerZamana göre sıralı36 karakter⚠ Genellikle önerilmez (gizlilik ifşası)
UUID v4Veritabanı birincil anahtarı, genel tanımlayıcılar, çoğu iş senaryosuSırasız (rastgele)36 karakter✓ Genel amaçlı ilk tercih
UUID v5Deterministik çıktı gerektiren senaryolar (aynı girdi → aynı UUID)Sırasız36 karakter✓ Sabit ad alanı için önerilir
ULIDDağıtık sistem birincil anahtarı, log izleme, zamana göre sıralı indekslerZamana göre sıralı (ilk 48 bit milisaniye zaman damgası)26 karakter✓ Dağıtık sistemler için ilk tercih
NanoIDKısa URL'ler, çerez tanımlayıcıları, frontend JS referanslarıSırasız (rastgele)21 karakter (varsayılan)✓ Kısa ID senaryoları için ilk tercih

UUID vs Veritabanı Otomatik Artan ID vs Snowflake ID: Birincil anahtar yöntemi nasıl seçilir?

Bu üç yöntem backend birincil anahtarları için en yaygın seçeneklerdir ve sistemin ölçeklenebilirliğini, eşzamanlılık güvenliğini ve performans özelliklerini belirler. «Veri ölçeği / küresel benzersizlik gereksinimi / okunabilirlik gereksinimi» temelinde karar vermek, sonradan mimari değişikliklerden kaçınmayı sağlar.

BoyutUUIDVT Otomatik Artan IDSnowflake
Küresel benzersizlik✓ Evet (teorik olarak)✗ Hayır (sharding'de tekrarlanır)✓ Evet (veri merkezi + worker ID garantili)
Veri hacmi ifşası✓ İfşa etmez✗ Doğrudan ifşa (artan 1, 2, 3 gerçek veri hacmini ortaya koyar)⚠ Zaman biti oluşturma zamanını ifşa eder (toplam hacmi doğrudan ifşa etmez)
Sıralanabilirlik✗ Sırasız (ULID istisna)✓ Monoton artan (B-Tree dostu)✓ Eğilimli artan (aynı milisaniye içinde sıralı)
Veritabanı sharding✓ Doğal destek✗ Numaratör veya yeniden yapılandırma gerekir✓ worker ID ile ayrılır
Depolama maliyeti⚠ Yüksek (BINARY(16) 16 bayt)✓ Düşük (BIGINT 8 bayt)✓ Düşük (BIGINT 8 bayt)
Uygun senaryolarÇoklu servis/dağıtık birincil anahtarlar, dış tanımlayıcılar, veri hacmine duyarlı işlerTekil uygulamalar, backend yönetim sistemleri, küresel benzersizlik gerektirmeyenYüksek eşzamanlı IM, sipariş numaraları, mesaj ID'leri (kendiniz implemente etmeniz gerekir)

Best Practices

Üretim veritabanı birincil anahtarı için UUID v4 veya ULID tercih edin, v1'den kaçının

UUID v1'in son 48 biti MAC adresi, ilk 48 biti 100ns hassasiyetinde zaman damgasıdır — **bu iki alan makine parmak izi ve oluşturma zamanına geri çevrilebilir**. v1, RFC 4122'de açıkça «yalnızca geriye dönük uyumluluk gerektiğinde» kullanılması gerektiğini belirtmiştir. Üretim ortamlarında v4 (rastgele) veya ULID (sıralanabilir) tercih edilmeli, v1 yalnızca hata ayıklama veya oluşturan makineyi izleme gerektiğinde ara sıra kullanılmalıdır. **Kesinlikle yapılmaması gereken**, v1'i dışa açık kullanıcı ID'si, cihaz ID'si veya sipariş numarası olarak kullanmaktır.

UUID v1, v4 ve v5 nasıl seçilmeli?

UUID uzunluğu 128 bit ≠ entropi: v4 aslında yalnızca 122 bit

UUID v4 toplam 128 bit uzunluğa sahip olsa da, **ilk 4 bit sürüm numarasıdır (0100 olarak sabit), son 2 bit varyant numarasıdır (10 olarak sabit)**, gerçek anlamda rastgele olan yalnızca 122 bittir. Bu, RFC 4122'nin zorunlu kıldığı format kısıtlamasıdır, **«128 bit tamamen rastgele» iddiasında bulunan herhangi bir UUID v4 kütüphanesi hatalı bir uygulamadır**. Ayrıca v4'ün son 64 bitinde 7. baytın yüksek 2 biti de varyant alanıdır, gerçek entropi daha da düşüktür. Sistem tasarırken güvenliği 128 bit yerine 122 bit üzerinden hesaplayın, çarpışma riskini hafife almayın.

RFC 4122 - UUID Spesifikasyonu

UUID depolamak için mutlaka VARCHAR(36) yerine BINARY(16) sütunu kullanın

UUID v4 dizesi `550e8400-e29b-41d4-a716-446655440000` kompakt görünse de VARCHAR(36) aslında 36 bayt + 2 bayt uzunluk = 38 bayt depolar, **BINARY(16)'dan 2,4 kat fazla depolama alanı**. MySQL/PostgreSQL/MSSQL'un hepsi BINARY(16) yazmayı doğrudan destekleyen yerleşik UUID işlevlerine sahiptir, indeks boyutu da yarıya iner. Tablo 100 milyon satırı aştığında VARCHAR(36) birincil anahtar indeksi B-Tree yüksekliğini 1-2 katman artırır, **sorgu performansı %30-50 düşer**. Frontend'de görüntülerken dizeye dönüştürün, iş katmanında tutarlı bir şekilde BINARY(16) ile iletin.

UUID / ULID / NanoID Karşılaştırma Tablosu

URL senaryoları için NanoID veya tire içermeyen UUID kullanın, URL kodlamasından kaçının

UUID v4 karakter kümesi `[0-9a-f-]`'dir, **tire - URL path'inde iki kez URL kodlaması gerektirir** (önce %2D'ye, sonra %252D'ye dönüşür), bu çok çirkin görünür. İki çözüm: **(1) URL senaryoları için doğrudan NanoID kullanın** (varsayılan 21 karakter URL güvenli); **(2) UUID v4 + tireleri kapatın** ve 32 bit saf hex çıktısı alın, URL path segmenti olarak kodlama gerektirmez. Çerez senaryoları için de NanoID (A-Za-z0-9_-) veya tire içermeyen UUID tercih edin, `+` `/` `=` karakterlerinden (Base64 karakter kümesi) kaçının.

UUID'den tireleri kaldırabilir veya büyük harfe çevirebilir miyim?

Toplu oluşturma sonrasında mutlaka tekilleştirme yapın, oluşturucu hataları tekrara yol açabilir

UUID v4 çarpışma olasılığı yaklaşık 1/10^36'dır, teorik olarak tekilleştirme gerekmez — **ama mühendislikte teoriye güvenmeyin**. Linux çekirdeği RNG arızaları, Node.js'in eski sürümlerindeki `crypto.randomUUID` uygulama hataları, Cloud VM başlangıcında yetersiz entropi kaynağı ve diğer gerçek olaylar toplu oluşturulan UUID'lerin tekrar içermesine yol açmıştır. **Üretim ortamında 100 bin+ UUID toplu oluşturulduktan sonra mutlaka `SELECT id, COUNT(*) FROM t GROUP BY id HAVING COUNT(*) > 1` ile tekilleştirme doğrulaması yapın**, sorun tespit edilirse derhal oluşturucu sürümünü geri alın. Bu, veri taşıma ve toplu içe aktarma senaryolarında kanla ödenen derslerden çıkarılmış en iyi uygulamadır.

Birden fazla UUID'yi aynı anda oluşturabilir miyim?

Sık Sorulan Sorular

UUID ve GUID arasındaki fark nedir?

UUID (Universally Unique Identifier) ve GUID (Globally Unique Identifier) temelde aynı şeydir, sadece isimleri farklıdır: UUID, IETF standardının (RFC 4122) resmi adıdır, GUID ise Microsoft'un Windows ekosisteminde tercih ettiği terimdir. İkisi de `550e8400-e29b-41d4-a716-446655440000` gibi aynı 128-bit biçimi paylaşır. Bu araç tarafından oluşturulan standart UUID'ler, GUID gerektiren herhangi bir senaryoda birbirinin yerine kullanılabilir.

UUID v1, v4 ve v5 arasında nasıl seçim yapılır?

UUID v1 zaman damgası ve MAC adresine dayanır — zamana göre sıralıdır ve izlenebilir, ancak MAC adresi bilgilerini sızdırabilir. UUID v4 tamamen rastgeledir, en yaygın kullanılan ve en güvenli seçimdir, çoğu birincil anahtar ve tanımlayıcı senaryosu için uygundur. UUID v5, SHA-1 karma tabanlı bir ad alanı sürümüdür — aynı ad alanı + aynı ad her zaman aynı UUID'yi üretir, deterministik çıktı senaryoları için idealdir. Genel geliştirme için UUID v4 varsayılan seçimdir.

ULID ve NanoID'nin UUID v4'e göre ne gibi avantajları var?

ULID (26 karakter), UUID'den (tireli 36 karakter) daha kısadır ve oluşturma zamanına göre sözlüksel olarak sıralanabilir, bu da onu veritabanı dizinleri ve günlük izleme için ideal kılar. NanoID (varsayılan olarak 21 karakter) daha da kısa ve daha hızlıdır, URL güvenli karakterler kullanır, bu nedenle URL'lerde ve çerezlerde kaçış gerekmez — UUID'den yaklaşık %30 daha küçüktür. Üçünün de çakışma olasılığı ihmal edilebilir düzeydedir, ancak ULID'nin sıralanabilirliği dağıtık sistemlerde öne çıkarken, NanoID ön uç/URL senaryoları için daha kullanıcı dostudur.

Aynı anda birden fazla UUID oluşturabilir miyim?

Evet. Bu araç, 1'den 100'e kadar kimlikle toplu oluşturmayı destekler. Hızlı düğmeler veya kaydırıcı aracılığıyla sayıyı ayarlayın ve tek tıklamayla oluşturun — test verisi oluşturma, toplu içe aktarma ve betikler için benzersiz kimlik hazırlamak için mükemmeldir. Oluşturduktan sonra tüm sonuçları bir kerede kopyalayabilir veya TXT veya JSON dosyaları olarak dışa aktarabilirsiniz.

Toplu oluşturma kılavuzu

Bir dizgenin geçerli bir UUID olup olmadığını doğrulayabilir miyim?

Evet. "Doğrula" sekmesine geçin ve herhangi bir dizgeyi yapıştırın — araç otomatik olarak tanır ve doğrular: standart UUID'ler (v1/v3/v4/v5) belirli sürüm numaralarını bildirecektir, ayrıca ULID (26 karakter Crockford Base32) ve NanoID (21 karakter URL güvenli) biçimlerini de tanır, bu da geliştirme ve hata ayıklama sırasında kimlik biçimi sorunlarını hızla çözmek için çok kullanışlıdır.

Çevrimiçi UUID oluşturmak güvenli midir? Kimliklerim bir sunucuya sızdırılır mı?

Tamamen güvenlidir. Tüm kimlik oluşturma ve doğrulama işlemleri JavaScript aracılığıyla tarayıcınızda yerel olarak çalışır, kriptografik olarak güvenli rastgele sayılar için crypto.getRandomValues() kullanır. Oluşturulan hiçbir kimlik herhangi bir sunucuya gönderilmez ve hiçbir oluşturma geçmişi bulutta depolanmaz. Çevrimdışıyken bile çalışır, bu da onu kurumsal intranetler ve hassas projeler için uygun kılar.

Tireleri kaldırabilir veya UUID'leri büyük harfe dönüştürebilir miyim?

Evet. UUID v1/v4/v5 için araç iki geçiş sağlar: "Büyük Harf" çıktı harf durumunu değiştirir ve "Tireler" kısa çizgileri kaldırmanıza olanak tanır (URL'ler, yapılandırma dosyaları veya tiresiz biçim gerektiren veritabanları için kullanışlıdır). ULID ve NanoID varsayılan olarak tire içermez ve ayrıca büyük/küçük harf değiştirmeyi destekler.

UUID oluşturmak için neden komut satırı yerine çevrimiçi bir araç kullanmalıyım?

Komut satırı araçları (Linux'un uuidgen'i, Python'un uuid modülü gibi) bir geliştirme ortamı gerektirir. Çevrimiçi bir araç, kurulum gerektirmeden tarayıcınızda anında çalışır. Ayrıca, bu araç UUID sürüm tanıma, toplu dışa aktarma ve yerel geçmiş özelliklerini bir araya getirir — cihazlar arası çalışırken (örneğin teknik olmayan meslektaşlar için kimlik oluştururken) veya anında kimliklere ihtiyacınız olduğunda daha kullanışlıdır.

Sözlük

UUID
Universally Unique Identifier, 128-bit uzunluk, RFC 4122 standardı, yaygın sürümler arasında v1 (zaman damgası+MAC), v4 (rastgele), v5 (SHA-1 karma) bulunur.
GUID
Globally Unique Identifier, Microsoft'un UUID için kullandığı terim — ikisi biçim ve amaç açısından tamamen aynıdır.
ULID
Universally Unique Lexicographically Sortable Identifier, Crockford Base32 kodlaması kullanan 26 karakter, ilk 48 bit zaman damgasıdır — oluşturma zamanına göre sıralanabilir.
NanoID
Hafif bir benzersiz kimlik oluşturucu, varsayılan olarak 21 URL güvenli karakter (A-Za-z0-9_-), UUID'den daha kısa ve daha hızlıdır, ön uç ve URL senaryoları için idealdir.
UUID v1
Zaman damgası ve MAC adresine dayalı UUID sürümü, zamana göre sıralanabilir ancak MAC adresi ve oluşturma zamanını sızdırabilir — v4'ten daha az güvenlidir.
UUID v4
Tamamen rastgele sayılara dayalı UUID sürümü, en yaygın kullanılan, çakışma olasılığı ihmal edilebilir, geliştirmede varsayılan seçimdir.
UUID v5
SHA-1 karma tabanlı ad alanı UUID sürümü — aynı ad alanı + aynı ad girdisi aynı UUID çıktısını üretir, deterministik senaryolar için uygundur.
Çakışma Olasılığı
Rastgele oluşturulan iki kimliğin aynı olma olasılığı. UUID v4'ün çakışma olasılığı yaklaşık 17 milyar trilyonda 1'dir, pratik mühendislikte ihmal edilebilir.
Crockford Base32
Douglas Crockford tarafından tasarlanan, belirsiz karakterlerden kaçınmak için I/L/O/U'yu hariç tutarak büyük harfler ve rakamlar kullanan bir Base32 kodlaması — ULID tarafından kullanılır.

UUID / ULID / NanoID Karşılaştırması

ÖzellikUUID v4ULIDNanoID
Uzunluk36 karakter (tireli) / 32 karakter (tiresiz)26 karakter21 karakter (varsayılan)
Karakter SetiOnaltılık (0-9a-f)Crockford Base32 (32 karakter)URL güvenli (64 karakter)
SıralanabilirlikSırasız (rastgele)Zamana göre sıralıSırasız (rastgele)
URL güvenliKaçış gerekir (tireler + alfanümerik)Çoğunlukla güvenli (büyük harfler + rakamlar)Tamamen URL güvenli
Oluşturma HızıHızlıHızlıUUID'den ~%60 daha hızlı
Çakışma Olasılığı1/10^361/10^361/10^34 (21 karakterde)
Tipik Kullanım DurumlarıVeritabanı birincil anahtarları, genel kimliklerDağıtık sistemler, günlük izlemeKısa URL'ler, ön uç kimlikleri, çerezler

Dile Göre UUID Oluşturma Yöntemleri

DilKod
JavaScriptcrypto.randomUUID() // Modern tarayıcılar / Node.js 19+
Pythonimport uuid; uuid.uuid4()
JavaUUID.randomUUID()
Gogithub.com/google/uuid; uuid.New()
Bash/Linuxuuidgen veya cat /proc/sys/kernel/random/uuid

Authoritative References