Generátor UUID

Generujte standardní UUID online. Tato stránka využívá náhodné UUID v4 se 122 náhodnými bity a známým formátem o 36 znacích.

Formát
Vygenerovaná ID
Připraveno. Generujte UUID přímo ve svém prohlížeči.

Jak se toto ID sestavuje

Formát
UUID v4: šestnáctkové skupiny v uspořádání 8-4-4-4-12 s bity varianty podle RFC.
Entropie
122 náhodných bitů; verze a varianta spotřebovávají 6 bitů ze 128bitové hodnoty.
Čas
Není zakódováno žádné časové razítko ani údaje o zařízení.
Riziko kolize
Pravděpodobnost kolize (narozeninový problém) pro 122 náhodných bitů je u běžných aplikací, testů a databázových ID zanedbatelná.
Příklad
7c30793c-fe18-4e08-8fef-0b3d5d47a286

Vaše ID se generují lokálně pomocí silné náhodnosti v prohlížeči. Do služby BroBroGo se nic neposílá.

Časté dotazy

Jaký druh UUID tato stránka generuje?

Generuje hodnoty UUID v4: náhodná UUID se standardním formátem se spojovníky. Pokud chcete stejný generátor s podrobnostmi zaměřenými na verzi 4, použijte stránku pro UUID v4.

Odesílají se UUID na server?

Ne. Generování probíhá ve vašem prohlížeči pomocí Web Crypto API, takže hodnoty zůstávají na vašem zařízení.

Generátor UUID v4

Tento nástroj vytváří jedno nebo více UUID verze 4 – náhodné 36znakové řetězce ve standardním formátu 8-4-4-4-12 hexadecimálních znaků. Ovládáte počet identifikátorů (až 100) a to, zda se zobrazí velkými písmeny nebo s pomlčkami. Identifikátory se generují okamžitě ve vašem prohlížeči s využitím silné náhody z prohlížečového rozhraní; můžete zkopírovat jeden identifikátor nebo všechny najednou.

Co dělá tuto stránku odlišnou

UUID v4 používá 122 bitů náhody bez vložené časové značky, takže každá hodnota je prakticky nepředvídatelná a pravděpodobnost kolize je zanedbatelná. Na rozdíl od UUID v7 nebo ULID se hodnoty v4 řadí libovolně – nenesou žádnou časovou informaci, což při použití jako primární klíč fragmentuje databázové indexy. Tato stránka také umožňuje přepínat mezi velkými a malými písmeny a volit, zda se pomlčky zobrazí či nikoli, ale vnitřní náhoda a formát jsou pevně dány. Výchozí výstup je malými písmeny s pomlčkami. Změna libovolné volby vygeneruje celou sadu znovu.

Základní principy a struktura UUID v4

UUID verze 4 je definováno v RFC 4122 jako varianta, která nevyužívá časové údaje ani vlastnosti síťové karty. Místo toho je 122 bitů náhodných dat doplněno o 6 bitů pevně daných specifikací: 4 bity označují verzi (v4 = 0100 binárně = hexadecimálně 4) a 2 bity určují variantu (10 binárně, což dává v hexadecimálním zápisu hodnoty 8, 9, A nebo B v prvním nibblu třetího bloku). Výsledkem je 128 bitů uložených v 16 oktetech.

Formát zápisu je 8-4-4-4-12, tedy například:

f47ac10b-58cc-4372-a567-0e02b2c3d479

Podrobné rozložení:

Blok Délka Obsah
1 8 hex znaků 32 náhodných bitů
2 4 hex znaky 16 náhodných bitů
3 4 hex znaky První znak = 4 (verze), zbylé 3 znaky = 12 náhodných bitů
4 4 hex znaky První znak = 8, 9, A nebo B (varianta), zbylé 3 znaky = 12 náhodných bitů
5 12 hex znaků 48 náhodných bitů

Bez pomlček by stejné UUID vypadalo jako f47ac10b58cc4372a5670e02b2c3d479 (32 hex znaků). Počet pomlček je vždy 4, bez ohledu na hodnotu.

Při přepnutí na velká písmena se hexadecimální znaky a–f změní na A–F. Vnitřní hodnota zůstává stejná – záleží jen na formátování. Každá změna volby (počet, velikost písmen, pomlčky) spustí okamžité nové vygenerování všech identifikátorů.

Jak prohlížeč generuje náhodná data

Tento nástroj používá prohlížečové rozhraní Web Crypto API (crypto.getRandomValues), které poskytuje kryptograficky silnou pseudonáhodu. Na rozdíl od běžného Math.random() je tato metoda navržena tak, aby produkovala nepředvídatelná data vhodná pro zabezpečení. Rozhraní čerpá z entropie systému – pohyb myši, latence síťových operací, časování kláves a další zdroje – a generuje 32 pseudonáhodných bytů, ze kterých se poté konstruuje požadovaný počet UUID.

Pro každý UUID v4 se vytvoří 16 bytů náhody. Prvních šest bytů se upraví tak, aby se nastavila verze a varianta: čtvrtý oktet dostane horní nibbl nastaven na 0100 (verze 4) a šestý oktet dostane horní dva bity nastavené na 10 (varianta RFC 4122). Zbývajících 122 bitů zůstává zcela náhodných. Všechno zpracování probíhá lokálně v prohlížeči – nikam se neodesílá žádný mezikrok ani výsledný identifikátor.

Pravděpodobnost kolize a její dopady

Při 122 bitech náhody existuje 2^122 možných unikátních hodnot, tedy přibližně 5,3×10^36. Abychom dosáhli 50% pravděpodobnosti kolize, museli bychom vygenerovat zhruba 2,2×10^18 UUID – to je 2,2 kvintilionu identifikátorů. V praxi to znamená, že pokud byste každou sekundu vygenerovali miliardu UUID, trvalo by 70 let, než byste dosáhli poloviční šance na kolizi.

Tato čísla vycházejí z narozeninového paradoxu: pravděpodobnost kolize roste s druhou mocninou počtu vygenerovaných hodnot. U UUID v4 je riziko natolik nízké, že ho většina aplikací považuje za prakticky nulové. Přesto byste neměli spoléhat na to, že kolize nemůže nastat – například při ukládání identifikátorů do databáze je vhodné mít unikátní index jako ochranu.

Důležité je, že UUID v4 negeneruje časovou informaci. Když vygenerujete dvě UUID za sebou, nemůžete z nich vyčíst, které bylo dříve. To je výhodné pro případy, kdy nechcete, aby identifikátor prozrazoval čas vytvoření (například u anonymizovaných dat), ale zároveň to komplikuje řazení v databázi.

Dopad na výkon databáze

UUID v4 má při použití jako primární klíč v relačních databázích známý problém: náhodné řazení způsobuje fragmentaci indexů. Když databáze vkládá nový řádek, musí ho umístit na náhodnou pozici v B-stromu indexu, což vede k častým štěpením stránek. U sekvenčních klíčů (například auto_increment) se nové hodnoty přidávají na konec, což minimalizuje reorganizace.

Standardní UUID v4 způsobuje při vkládání až 4–5krát více I/O operací než sekvenční klíč v závislosti na velikosti databáze a indexu. Pro malé tabulky (do 100 000 řádků) je rozdíl zanedbatelný, ale u tabulek s miliony řádků může být zpomalení znatelné.

Alternativou je UUID v7, které kombinuje 48bitovou časovou značku s náhodnými bity. V7 zachovává jedinečnost a částečnou nepředvídatelnost, ale hodnoty se řadí přibližně chronologicky, což zlepšuje výkon indexů téměř na úroveň sekvenčních klíčů. ULID jde ještě dále – používá base32 kódování pro kratší reprezentaci při zachování časového řazení.

Pro identifikátory, u kterých nepotřebujete časové řazení (bezpečnostní tokeny, session ID, externí klíče bez vazby na databázové indexy), zůstává UUID v4 dobrou volbou. Nepředvídatelnost je u těchto případů důležitější než výkon při vkládání.

Možnosti formátování a jejich praktické využití

Tento nástroj nabízí tři ovládací prvky: počet (1–100), velikost písmen (výchozí malá) a zobrazení pomlček (výchozí zapnuto). Každá změna okamžitě vygeneruje novou sadu UUID.

Velikost písmen: Většina systémů používá malá písmena, ale některé starší systémy nebo specifikace vyžadují velká. Například některé varianty UUID v RFC 4122 se uvádějí velkými písmeny, ačkoli samotný standard říká, že zpracování by mělo být case‑insensitive. Výběr velikosti písmen nemění hodnotu UUID, pouze jeho textovou reprezentaci.

Pomlčky: Standardní formát s pomlčkami je čitelnější a očekávaný ve většině API. Některé systémy ale pracují s UUID bez pomlček, například v databázových sloupcích typu UNIQUEIDENTIFIER v SQL Serveru se hodnoty ukládají bez pomlček. Webová rozhraní někdy používají UUID s pomlčkami v URL, ale pak je nutné je URL‑encode. Bez pomlček je řetězec kratší o 4 znaky a lépe se kopíruje do systémů, které pomlčky neočekávají.

Počet: Generování až 100 UUID najednou je užitečné pro testování, předgenerování dávek identifikátorů nebo naplnění databáze testovacími daty. Všechna UUID se generují v jednom průchodu, takže i 100 hodnot vznikne prakticky okamžitě. Každé UUID je nezávislé a náhodné – neexistuje mezi nimi žádná korelace.

Místní zpracování a důsledky pro bezpečnost

Všechna generování probíhají výhradně v prohlížeči – ani vstupní parametry, ani vygenerovaná UUID se nikam neodesílají. To má několik důsledků:

  • Stránka funguje offline po načtení.
  • Žádný server se nedozví, jaké identifikátory jste vygenerovali.
  • Není možné, aby se vygenerovaná data zachytila při přenosu.
  • Není potřeba registrace ani přihlášení.

Pro bezpečnostní tokeny, resetovací odkazy nebo dočasné klíče je to důležité – víte, že nikdo jiný nemohl identifikátor zachytit ani ho ovlivnit. Kryptografická kvalita náhody je dána implementací crypto.getRandomValues, která je v moderních prohlížečích stejná jako ta, kterou používají samotné prohlížeče pro TLS relace.

Jediné riziko představuje přenos vygenerovaných UUID do jiného systému – například ručním zkopírováním do schránky. Pokud kopírujete identifikátory z prohlížeče do aplikace, ujistěte se, že je nepřeposíláte nezabezpečeným kanálem. Samotný nástroj s nimi ale nijak nenakládá.

Často kladené otázky

Je UUID v4 bezpečné pro generování přístupových tokenů? Ano, pokud potřebujete náhodný identifikátor, který není možné uhodnout. 122 bitů náhody poskytuje dostatečnou entropii. Pro dlouhodobé tokeny ale zvažte použití JWT nebo podobných mechanismů s podpisem.

Může se stát, že dvě UUID v4 budou stejná? Teoreticky ano, ale pravděpodobnost je extrémně nízká. Při vygenerování 2,2×10^18 UUID byste měli 50% šanci na jednu kolizi. Pro běžné použití (tisíce až miliony UUID) je kolize prakticky vyloučena.

Proč se UUID v4 nedoporučuje jako primární klíč v databázi? Náhodné řazení způsobuje fragmentaci indexů, což zpomaluje vkládání. Pokud databáze obsahuje miliony řádků, může být rozdíl oproti sekvenčnímu klíči výrazný. Alternativou je UUID v7 nebo ULID, které kombinují časové řazení s náhodou.

Znamená volba velkých písmen, že UUID má jinou hodnotu? Ne. Velká a malá písmena jsou považována za case‑insensitive – a a A reprezentují stejnou hexadecimální hodnotu 10. Volba formátování nemění samotné UUID.

Proč je maximální počet UUID omezen na 100? Limit 100 UUID na jedno vygenerování zajišťuje, že stránka zůstane rychlá a přehledná. Pokud potřebujete více, můžete kliknout několikrát nebo použít programové řešení.

Je bezpečné používat UUID v4 v URL adresách? Ano, ale pozor na pomlčky – v některých kontextech mohou být interpretovány jako oddělovače. Pokud UUID vkládáte do URL, doporučuje se odstranit pomlčky nebo celý řetězec správně URL‑encodovat.