Generator UUID

Opcje formatowania

Liczba wygenerowana

Numer

Darmowy generator UUID/GUID/ULID/NanoID online obsługujący 5 formatów unikalnych ID, generowanie masowe do 100, konfigurowalne formatowanie i walidację UUID. Gotowy do natychmiastowego użycia — idealny dla kluczy głównych baz danych i tworzenia danych testowych.

Powiązane Rekomendacje

Co to jest UUID?

UUID (Universally Unique Identifier) to 128-bitowy identyfikator ustandaryzowany przez Open Software Foundation (OSF), zdefiniowany w RFC 4122. Jego celem jest umożliwienie systemom rozproszonym jednoznacznej identyfikacji informacji bez centralnego organu do przypisywania ID.

Standardowy UUID wygląda jak `550e8400-e29b-41d4-a716-446655440000`, składa się z 32 cyfr szesnastkowych podzielonych na 5 grup (8-4-4-4-12) myślnikami. Teoretycznie prawdopodobieństwo kolizji UUID v4 wynosi około 1/10^36 — gdybyś generował 1 miliard UUID na sekundę przez około 800 lat, prawdopodobieństwo pojedynczej kolizji wyniosłoby około 50%, co jest znikome w praktyce.

UUID są szeroko stosowane do kluczy głównych baz danych, rozproszonych ID śledzenia, ID żądań, ID śledzenia logów, unikalnego nazywania plików, ID danych testowych i identyfikatorów sesji. Prawie wszystkie główne języki programowania zawierają wbudowane biblioteki do generowania UUID.

Przypadki użycia

  • Generuj UUID v4 jako klucze główne rekordów tabel podczas projektowania baz danych, aby uniknąć wycieku objętości danych z autoinkrementacyjnych ID
  • Używaj ULID jako sortowalnych globalnych ID żądań/śledzenia w systemach rozproszonych lub architekturach mikrousług
  • Generuj UUID masowo jako dane testowe i symulowane ID zamówień/użytkowników podczas tworzenia API i testów integracyjnych
  • Używaj NanoID zamiast UUID w krótkich linkach frontendowych lub URL do udostępniania — krótsze, czystsze, nie wymaga kodowania URL
  • Używaj UUID v5 do generowania deterministycznych ID ze stałych przestrzeni nazw, zapewniając, że te same dane wejściowe zawsze dają te same wyniki
  • Używaj funkcji walidacji do identyfikacji typu i wersji ID podczas napotkania ID o nieznanym formacie w logach debugowania lub dokumentacji stron trzecich

Jak Używać

  1. Wybierz żądany typ ID z kart powyżej: UUID v4 (zalecane), v1, v5, ULID lub NanoID
  2. Jeśli wybierzesz UUID v5, wprowadź ciąg przestrzeni nazw; inne ID mogą bezpośrednio ustawiać opcje formatu
  3. Przełącz opcje wielkich liter i myślników według potrzeb, ustaw liczbę generowania masowego (1-100) za pomocą szybkich przycisków lub suwaka
  4. Kliknij przycisk generuj, aby zobaczyć wyniki — kopiuj pojedynczo, kopiuj wszystko naraz lub eksportuj jako TXT/JSON
  5. Aby zweryfikować istniejące ID, przejdź do zakładki "Waliduj" i wklej ciąg ID, aby uzyskać informacje o typie i wersji

Funkcje

  • Pięć typów ID w jednym narzędziu: UUID v1 (znacznik czasu), v4 (losowy), v5 (przestrzeń nazw), ULID (sortowalny) i NanoID (bezpieczny dla URL) — jedno narzędzie pokrywa wszystkie potrzeby stosu technologicznego
  • Walidacja i rozpoznawanie UUID: Przejdź do zakładki Waliduj, wklej dowolne ID aby zidentyfikować jego wersję UUID lub wykryć format ULID/NanoID — szybkie rozwiązywanie problemów podczas debugowania
  • Generuj masowo do 100: Wygeneruj dowolną liczbę od 1 do 100 ID naraz — koniec z ręcznym kopiowaniem jeden po drugim dla danych testowych
  • Elastyczne formatowanie: Przełączaj wielkie litery i myślniki dla UUID, aby dopasować się do wymagań formatu baz danych, URL i plików konfiguracyjnych
  • Eksport i historia lokalna: Kopiuj wszystko jednym kliknięciem, eksportuj pliki TXT/JSON, historia generowania zapisywana lokalnie do natychmiastowego odzyskania — operacje masowe bardziej wydajne
  • Bezpieczny losowość po stronie klienta: Używa API crypto przeglądarki dla kryptograficznie bezpiecznych liczb losowych, ID nigdy nie opuszczają Twojego urządzenia, działa offline

Przykłady kodu

Generowanie UUID v4 w JavaScript

javascript

Nowoczesne przeglądarki i Node.js 14.17+ mają wbudowane API Web Crypto, umożliwiając bezpośrednie generowanie UUID v4 bez bibliotek trzecich.

// Nowoczesne przeglądarki / 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();

Masowe generowanie UUID w Python

python

Użyj modułu uuid biblioteki standardowej Pythona do masowego generowania wielu UUID v4, idealne do przygotowywania danych testowych.

import uuid

# Generowanie pojedynczego UUID
uid = uuid.uuid4()
print(uid)

# Masowe generowanie 10 UUID
for _ in range(10):
    print(uuid.uuid4())

# Generowanie UUID wielkimi literami bez myślników
print(uuid.uuid4().hex.upper())

Generowanie UUID z wiersza poleceń Shell

bash

Szybko generuj UUID w terminalu Linux/macOS, odpowiednie do użycia w skryptach shell.

# Linux
uuidgen

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

# Bezpośrednie odczyt z pliku losowego systemu (najbardziej surowa metoda)
cat /proc/sys/kernel/random/uuid

Który schemat unikalnego ID wybrać?

UUID nie jest jedynym wyborem — autoinkrementalne ID bazy danych i Snowflake to również popularne schematy kluczy głównych. Najpierw oceń «skalę danych, czy potrzebna jest globalna unikalność, czy potrzebne jest sortowanie po czasie», a potem wybierz konkretny schemat — to pozwoli uniknąć wielu potknięć.

UUID v1 / v4 / v5 / ULID / NanoID: który wybrać?

5 typów ID ma różne kompromisy w zakresie skali danych, sortowalności i długości znaków. Podejmuj decyzje na podstawie «gdzie używane + czy potrzebne sortowanie + czy bezpośrednio w URL», co jest bardziej wiarygodne niż wybór na podstawie samych liczb.

SchematRekomendowany scenariuszSortowalnośćDługośćRekomendacja
UUID v1Systemy wewnętrzne wymagające sortowania po czasie, akceptujące ujawnienie adresu MAC i czasu generowaniaPo czasie36 znaków⚠ Zwykle niepolecane (ujawnienie prywatności)
UUID v4Klucz główny bazy danych, identyfikatory ogólne, większość scenariuszy biznesowychBez kolejności (losowe)36 znaków✓ Uniwersalny wybór
UUID v5Scenariusze wymagające deterministycznego wyniku (ten sam input → ten sam UUID)Bez kolejności36 znaków✓ Polecane dla stałej przestrzeni nazw
ULIDKlucz główny systemów rozproszonych, śledzenie logów, indeksy wymagające sortowania po czasiePo czasie (pierwsze 48 bitów to milisekundowy znacznik czasu)26 znaków✓ Pierwszy wybór dla systemów rozproszonych
NanoIDKrótkie URL-e, identyfikatory cookie, referencje JS na frontendzieBez kolejności (losowe)21 znaków (domyślnie)✓ Pierwszy wybór dla krótkich ID

UUID vs autoinkrementalne ID bazy danych vs Snowflake ID: jak wybrać schemat klucza głównego?

Te trzy schematy to najczęstsze wybory dla kluczy głównych backendu, determinujące skalowalność, bezpieczeństwo współbieżności i charakterystyki wydajności systemu. Decyzje podejmowane na podstawie «skali danych / wymagań globalnej unikalności / wymagań czytelności» pozwalają uniknąć późniejszych zmian architektonicznych.

WymiarUUIDAutoinkrementalne ID BDSnowflake
Globalna unikalność✓ Tak (teoretycznie)✗ Nie (shardowanie spowoduje duplikaty)✓ Tak (gwarantowane przez data center + worker ID)
Ujawnienie skali danych✓ Nie ujawnia✗ Bezpośrednio ujawnia (rosnące 1, 2, 3 zdradza rzeczywistą skalę)⚠ Bit czasu ujawnia czas generowania (nie ujawnia bezpośrednio łącznej skali)
Sortowalność✗ Bez kolejności (wyjątek ULID)✓ Monotonicznie rosnące (przyjazne dla B-Tree)✓ Rośnie z trendem (uporządkowane w obrębie tej samej milisekundy)
Shardowanie BD✓ Naturalne wsparcie✗ Wymaga generatora numerów lub przeróbek✓ Rozróżniane przez worker ID
Koszt przechowywania⚠ Wysoki (BINARY(16) 16 bajtów)✓ Niski (BIGINT 8 bajtów)✓ Niski (BIGINT 8 bajtów)
Odpowiednie scenariuszeKlucze główne wieloserwisowe/rozproszone, identyfikatory zewnętrzne, biznes wrażliwy na skalę danychAplikacje monolityczne, systemy administracji backendowej, nie wymagające globalnej unikalnościKomunikatory o wysokiej współbieżności, numery zamówień, ID wiadomości (wymaga własnej implementacji)

Best Practices

Dla kluczy głównych produkcyjnej bazy danych preferuj UUID v4 lub ULID, unikaj v1

Ostatnie 48 bitów UUID v1 to adres MAC, pierwsze 48 bitów to znacznik czasu o precyzji 100ns — **te dwa pola można odtworzyć jako odcisk maszyny i czas generowania**. W RFC 4122 wyraźnie stwierdzono, że v1 powinno być używane «tylko gdy potrzebna jest kompatybilność wsteczna». W środowisku produkcyjnym należy preferować v4 (losowe) lub ULID (sortowalne), v1 stosować okazjonalnie tylko do debugowania lub śledzenia maszyny źródłowej. **Absolutnie nie wolno** używać v1 jako publicznego identyfikatora użytkownika, identyfikatora urządzenia czy numeru zamówienia.

Jak wybrać między UUID v1, v4 a v5?

Długość UUID 128 bitów ≠ entropia: v4 faktycznie ma tylko 122 bity

Chociaż UUID v4 ma łączną długość 128 bitów, **pierwsze 4 bity to numer wersji (stałe 0100), ostatnie 2 bity to numer wariantu (stałe 10)**, naprawdę losowych jest tylko 122 bity. To ograniczenie formatu narzucone przez RFC 4122, **każda biblioteka UUID v4 twierdząca, że «128 bitów jest w pełni losowych», jest błędną implementacją**. Dodatkowo w ostatnich 64 bitach v4, starsze 2 bity 7. bajtu to również pole wariantu, więc faktyczna entropia jest jeszcze niższa. Projektując system, obliczaj bezpieczeństwo na podstawie 122 bitów (nie 128), aby nie niedoszacować ryzyka kolizji.

RFC 4122 - Specyfikacja UUID

Do przechowywania UUID koniecznie używaj kolumny BINARY(16), nie VARCHAR(36)

Ciąg UUID v4 `550e8400-e29b-41d4-a716-446655440000` wygląda kompaktowo, ale VARCHAR(36) faktycznie przechowuje 36 bajtów + 2 bajty długości = 38 bajtów, **czyli 2,4 raza więcej miejsca niż BINARY(16)**. MySQL/PostgreSQL/MSSQL mają wbudowane funkcje UUID obsługujące bezpośredni zapis BINARY(16), rozmiar indeksu również zmniejsza się o połowę. Gdy tabela przekroczy 100 milionów wierszy, indeks klucza głównego VARCHAR(36) zwiększa wysokość B-Tree o 1-2 poziomy, **wydajność zapytań spada o 30-50%**. Na frontendzie konwertuj na ciąg przy wyświetlaniu, warstwa biznesowa konsekwentnie przesyła BINARY(16).

Tabela porównawcza UUID / ULID / NanoID

W scenariuszach URL używaj NanoID lub UUID bez myślników, unikaj kodowania URL

Zestaw znaków UUID v4 to `[0-9a-f-]`, **myślnik - w ścieżce URL wymaga podwójnego kodowania URL** (najpierw escape do %2D, potem do %252D), co wygląda bardzo brzydko. Dwa rozwiązania: **(1) w scenariuszach URL używaj bezpośrednio NanoID** (domyślnie 21 znaków bezpiecznych dla URL); **(2) UUID v4 + wyłącz myślniki** dla wyjścia 32 znaków czystego hex, jako segment ścieżki URL nie wymaga kodowania. W scenariuszach cookie również preferuj NanoID (A-Za-z0-9_-) lub UUID bez myślników, unikając znaków `+` `/` `=` (zestaw znaków Base64).

Czy mogę usunąć myślniki lub zmienić UUID na wielkie litery?

Po masowym generowaniu koniecznie wykonaj deduplikację, błędy generatora mogą powodować duplikaty

Prawdopodobieństwo kolizji UUID v4 wynosi około 1/10^36, teoretycznie deduplikacja nie jest potrzebna — **ale w inżynierii nie ufaj teorii**. Awarie RNG jądra Linux, błędy implementacji `crypto.randomUUID` we wczesnych wersjach Node.js, niewystarczające źródło entropii przy starcie Cloud VM i inne rzeczywiste incydenty powodowały, że masowo wygenerowane UUID zawierały duplikaty. **W środowisku produkcyjnym po masowym wygenerowaniu 100 tys.+ UUID koniecznie użyj `SELECT id, COUNT(*) FROM t GROUP BY id HAVING COUNT(*) > 1` do sprawdzenia deduplikacji**, w przypadku wykrycia problemu natychmiast wycofaj wersję generatora. To najlepsza praktyka wypracowana krwią w scenariuszach migracji danych i masowego importu.

Czy mogę wygenerować wiele UUID naraz?

Często Zadawane Pytania

Jaka jest różnica między UUID a GUID?

UUID (Universally Unique Identifier) i GUID (Globally Unique Identifier) to zasadniczo ta sama rzecz z różnymi nazwami: UUID to formalna nazwa standardu IETF (RFC 4122), podczas gdy GUID to preferowany termin Microsoftu w ekosystemie Windows. Oba mają identyczny 128-bitowy format jak `550e8400-e29b-41d4-a716-446655440000`. Standardowe UUID generowane przez to narzędzie działają zamiennie w każdym scenariuszu wymagającym GUID.

Jak wybrać między UUID v1, v4 a v5?

UUID v1 jest oparty na znaczniku czasu i adresie MAC — uporządkowany czasowo i możliwy do śledzenia, ale może wyciekać informacje o adresie MAC. UUID v4 jest całkowicie losowy, najczęściej używany i najbezpieczniejszy wybór, odpowiedni dla większości scenariuszy kluczy głównych i identyfikatorów. UUID v5 to wersja oparta na przestrzeni nazw z haszem SHA-1 — ta sama przestrzeń nazw + ta sama nazwa zawsze generuje ten sam UUID, idealna dla scenariuszy deterministycznych wyników. Dla ogólnego rozwoju, UUID v4 jest domyślnym wyborem.

Jakie zalety mają ULID i NanoID w porównaniu do UUID v4?

ULID (26 znaków) jest krótszy niż UUID (36 znaków z myślnikami) i może być sortowany leksykograficznie według czasu utworzenia, co czyni go idealnym dla indeksów baz danych i śledzenia logów. NanoID (domyślnie 21 znaków) jest jeszcze krótszy i szybszy, używa znaków bezpiecznych dla URL, więc nie wymaga eskejpowania w URL i ciasteczkach — jest o około 30% mniejszy niż UUID. Wszystkie trzy mają znikome prawdopodobieństwo kolizji, ale możliwość sortowania ULID błyszczy w systemach rozproszonych, podczas gdy NanoID jest bardziej przyjazny dla scenariuszy frontend/URL.

Czy mogę wygenerować wiele UUID naraz?

Tak. To narzędzie obsługuje generowanie masowe od 1 do 100 ID. Ustaw liczbę za pomocą szybkich przycisków lub suwaka, a następnie wygeneruj jednym kliknięciem — idealne do tworzenia danych testowych, importu masowego i przygotowywania unikalnych ID dla skryptów. Po wygenerowaniu możesz skopiować wszystkie wyniki naraz lub wyeksportować jako pliki TXT lub JSON.

Przewodnik po generowaniu masowym

Czy mogę sprawdzić, czy ciąg znaków jest prawidłowym UUID?

Tak. Przejdź do zakładki "Waliduj" i wklej dowolny ciąg — narzędzie automatycznie identyfikuje i waliduje: standardowe UUID (v1/v3/v4/v5) podadzą swój konkretny numer wersji, a także rozpoznaje formaty ULID (26-znakowy Crockford Base32) i NanoID (21-znakowy bezpieczny dla URL), co czyni je bardzo wygodnym do szybkiego rozwiązywania problemów z formatem ID podczas tworzenia oprogramowania i debugowania.

Czy generowanie UUID online jest bezpieczne? Czy moje ID wyciekną na serwer?

Całkowicie bezpieczne. Całe generowanie i walidacja ID odbywa się lokalnie w Twojej przeglądarce za pomocą JavaScript, przy użyciu crypto.getRandomValues() dla kryptograficznie bezpiecznych liczb losowych. Żadne wygenerowane ID nie są wysyłane na żaden serwer, a historia generowania nie jest przechowywana w chmurze. Działa nawet w trybie offline, co czyni go odpowiednim dla intranetów przedsiębiorstw i wrażliwych projektów.

Czy mogę usunąć myślniki lub przekonwertować UUID na wielkie litery?

Tak. Dla UUID v1/v4/v5 narzędzie udostępnia dwa przełączniki: "Wielkie litery" przełącza wielkość liter wyjścia, a "Myślniki" pozwala usunąć kreski (przydatne dla URL, plików konfiguracyjnych lub baz danych wymagających formatu bez myślników). ULID i NanoID domyślnie nie mają myślników i również obsługują przełączanie wielkości liter.

Dlaczego używać narzędzia online zamiast wiersza poleceń do generowania UUID?

Narzędzia wiersza poleceń (jak uuidgen z Linuksa, moduł uuid z Pythona) wymagają środowiska programistycznego. Narzędzie online działa natychmiast w Twojej przeglądarce bez konieczności instalacji. Ponadto to narzędzie integruje rozpoznawanie wersji UUID, eksport masowy i funkcje historii lokalnej — wygodniejsze podczas pracy między urządzeniami (np. generowanie ID dla nietechnicznych kolegów) lub gdy potrzebujesz ID natychmiast.

Słownik

UUID
Universally Unique Identifier, długość 128 bitów, standard RFC 4122, popularne wersje obejmują v1 (znacznik czasu+MAC), v4 (losowy), v5 (hasz SHA-1).
GUID
Globally Unique Identifier, termin Microsoftu na UUID — oba są identyczne pod względem formatu i przeznaczenia.
ULID
Universally Unique Lexicographically Sortable Identifier, 26 znaków przy użyciu kodowania Crockford Base32, pierwsze 48 bitów to znacznik czasu — sortowalny według czasu utworzenia.
NanoID
Lekki generator unikalnych ID, domyślnie 21 znaków bezpiecznych dla URL (A-Za-z0-9_-), krótszy i szybszy niż UUID, idealny dla scenariuszy frontend i URL.
UUID v1
Wersja UUID oparta na znaczniku czasu i adresie MAC, sortowalna czasowo, ale może wyciekać adres MAC i czas generowania — mniej bezpieczna niż v4.
UUID v4
Wersja UUID całkowicie oparta na liczbach losowych, najczęściej używana, znikome prawdopodobieństwo kolizji, domyślny wybór w rozwoju oprogramowania.
UUID v5
Wersja UUID przestrzeni nazw opartej na haszu SHA-1 — ta sama przestrzeń nazw + ta sama nazwa wejściowa daje identyczne wyjście UUID, odpowiednia dla scenariuszy deterministycznych.
Prawdopodobieństwo kolizji
Prawdopodobieństwo, że dwa losowo wygenerowane ID będą identyczne. Prawdopodobieństwo kolizji UUID v4 wynosi około 1 na 17 miliardów trylionów, znikome w praktyce inżynierskiej.
Crockford Base32
Kodowanie Base32 zaprojektowane przez Douglasa Crockforda, które używa wielkich liter i cyfr z wyłączeniem I/L/O/U aby uniknąć niejednoznacznych znaków — używane przez ULID.

Porównanie UUID / ULID / NanoID

CechaUUID v4ULIDNanoID
Długość36 znaków (z myślnikami) / 32 znaki (bez myślników)26 znaków21 znaków (domyślnie)
Zestaw znakówSzesnastkowe (0-9a-f)Crockford Base32 (32 znaki)Bezpieczny dla URL (64 znaki)
SortowalnośćNieuporządkowany (losowy)Uporządkowany czasowoNieuporządkowany (losowy)
Bezpieczny dla URLWymaga eskejpowania (myślniki + alfanumeryczne)Przeważnie bezpieczny (wielkie litery + cyfry)Całkowicie bezpieczny dla URL
Szybkość generowaniaSzybkiSzybki~60% szybszy niż UUID
Prawdopodobieństwo kolizji1/10^361/10^361/10^34 (przy 21 znakach)
Typowe przypadki użyciaKlucze główne baz danych, ogólne IDSystemy rozproszone, śledzenie logówKrótkie URL, ID frontendu, ciasteczka

Metody generowania UUID według języka

JęzykKod
JavaScriptcrypto.randomUUID() // Nowoczesne przeglądarki / Node.js 19+
Pythonimport uuid; uuid.uuid4()
JavaUUID.randomUUID()
Gogithub.com/google/uuid; uuid.New()
Bash/Linuxuuidgen lub cat /proc/sys/kernel/random/uuid

Authoritative References