Generator UUID

Dalej

UUID-y dają globalnie unikalne identyfikatory bez konieczności koordynacji z centralnym organem. Ten generator tworzy zgodne z RFC 4122 wartości v1 (znacznik czasu + MAC), v4 (losowe) i v7 (z prefiksem czasu, sortowalne). Wybierz wersję, poproś o 1 albo 1000 i skopiuj listę do danych startowych, generowania kluczy API czy testów jednostkowych.

Jak generować UUID-y

  1. 1

    Wybierz wersję

    v4 do ogólnych losowych, v7 gdy liczy się kolejność sortowania, v1 gdy potrzebujesz informacji o czasie.

  2. 2

    Określ ilość

    Jeden UUID albo paczka do 10 000 w jednym przebiegu.

  3. 3

    Generuj

    Wartości korzystają z crypto API przeglądarki, by zapewnić kryptograficzną losowość.

  4. 4

    Skopiuj lub pobierz

    Pobierz jako listę po jednym w wierszu, tablicę JSON albo CSV.

Której wersji UUID użyć?

Wersja Struktura Najlepsza do
v1 Znacznik czasu + zegar + adres MAC ID logów, gdy potrzebujesz chronologii
v4 122 bity losowości Ogólne unikalne ID, dane testowe
v7 Znacznik czasu Unix ms + losowość (sortowalne) Klucze główne w bazach danych

Dlaczego v7 staje się domyślną

v4 jest losowa, przez co fatalnie sprawdza się jako klucz główny w bazie: wstawienia rozpraszają się po B-drzewie i obniżają przepustowość zapisu. v7 (sfinalizowana w RFC 9562 w 2024) poprzedza UUID 48-bitowym znacznikiem czasu w milisekundach, więc nowe wiersze trafiają na koniec indeksu. Nadal masz unikalność bez koordynacji, plus orientacyjną kolejność sortowania według czasu utworzenia.

Reguły formatu

UUID to 128 bitów zapisanych jako 32 cyfry szesnastkowe w układzie 8-4-4-4-12:

018f5b9c-7d4a-7a1b-8c0e-2e1b3c4d5e6f
         ^^                ^
         półbajt wersji    bity wariantu
  • Półbajt wersji to 13. znak (po 018f5b9c-7d4a-). Wynosi 4 dla v4, 7 dla v7 itd.
  • Bity wariantu to dwa pierwsze bity 17. znaku. Wynoszą 10 (wysoki półbajt 8/9/a/b) dla UUID-ów RFC 4122.

Szanse kolizji

Dla v4 szanse wygenerowania duplikatu są znikomo małe: trzeba by wygenerować 2,7 tryliona (2,7 × 10^18) UUID-ów, zanim trafi się na 50% szansę kolizji. To więcej, niż kiedykolwiek zobaczy większość baz danych. v7 współdzieli losowy ogon, więc szanse kolizji są równoważne w obrębie tej samej milisekundy.

Najczęściej zadawane pytania

Historycznie tak, bo osadzały adres MAC hosta generującego. Nowoczesne generatory (w tym ten) podstawiają losowy 48-bitowy identyfikator węzła, więc v1 nie zdradza już sprzętu.

Gdy generowana jest z CSPRNG (czego to narzędzie używa przez crypto.getRandomValues), v4 jest na tyle nieprzewidywalna, by służyć jako token sesji. Ale UUID-y same w sobie nie są sekretami, jeśli potrzebujesz sekretu, nazwij go wprost.

Tak, są bezpieczne dla URL-i (tylko hex i myślniki). Aby skrócić wyświetlanie, rozważ zakodowanie surowych 128 bitów w base-32 lub base-62, albo użyj ULID-a, który ma 26 znaków i jest sortowalny jak v7.

Nie. Generowanie odbywa się w przeglądarce, a wartości nigdy nie trafiają na serwer.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach