UUID Generator

Generišite UUID u pregledniku: potpuno slučajni v4, vremenski uređeni v7 za baze podataka ili deterministički v5. Do 1000 odjednom, a podaci nikada ne napuštaju vaš uređaj.

Pritisnite Generiši za izvlačenje
Verzija
Napredne opcije

Trebate identifikator koji se neće poklapati s nekim drugim koji je neko napravio, na mašini za koju nikada niste čuli, a da ne morate nikoga pitati za dozvolu? Upravo to je zadatak UUID-a. To je 128-bitni broj, zapisan kao 36 znakova u poznatom formatu 8-4-4-4-12, a cijeli njegov dizajn se zasniva na tome da nikoja dva neće biti ista iako ništa ne koordinira ko dobija koji. Ovaj besplatni generator ih stvara u vašem pregledniku: odaberite verziju u polju Verzija, navedite koliko vam ih treba u polju Broj i pritisnite Generiši. Stranica se otvara sa jednim v4 — verzijom koju većina projekata traži, tako da ste samo jedan klik udaljeni od prvog identifikatora.

Svaki identifikator kreira vaš preglednik pomoću Web Crypto API-ja. Verzija 4 koristi crypto.randomUUID() tamo gdje to preglednik nudi i crypto.getRandomValues() u ostalim slučajevima — kriptografski siguran izvor slučajnosti, umjesto JavaScript pseudo-slučajne funkcije kao što je Math.random(). Verzija 7 stavlja 48-bitnu vremensku oznaku (u milisekundama) na početak, zatim 12-bitni brojač koji se povećava u okviru iste milisekunde, i na kraju 62 slučajna bita. To je metoda redoslijeda opisana u RFC 9562; zbog tog brojača serija od hiljadu komada izlazi po redu, a ne izmiješana. Verzija 1 kombinuje vremensku oznaku sa slučajnim identifikatorom čvora koji ima postavljen multicast bit, tako da nikada ne nosi adresu vaše mrežne kartice kao što su to radile originalne implementacije iz 1990-ih. Verzije 3 i 5 uopšte nisu slučajne: one kreiraju hash imenskog prostora zajedno sa imenom, koristeći MD5 odnosno SHA-1, a to heširanje se također odvija na vašem uređaju. Ništa se ne šalje na server, ništa se ne zapisuje u logove, i kada se stranica učita, nastavlja raditi i bez internet veze.

Verzija je polje koje određuje sve ostalo. Verzija 4 se sastoji od 122 slučajna bita i nema strukturu — to je zadana opcija i pravi izbor kada identifikator samo treba biti jedinstven. Verzija 7 zadržava 62 slučajna bita, ali počinje sa vremenom kada je kreirana, pa se njihov niz sortira po redoslijedu nastanka; zbog toga je ovo verzija koja se bira kada identifikator postaje ključ u bazi podataka. Verzija 1 je originalna šema zasnovana na vremenu, zadržana ovdje za sisteme koji je i dalje traže. Verzije 3 i 5 su specifičan par: one su determinističke, što znači da isti ulazni podaci uvijek proizvode isti identifikator. One zahtijevaju dva dodatna polja — Imenski prostor, koji je jedan od standardnih prostora DNS, URL, OID i X.500 ili vaš Vlastiti imenski prostor (UUID), i Ime — niz znakova koji se identificira. Dajte verziji 5 imenski prostor URL i https://example.com/a, i dobit ćete isti UUID danas, sutra i na tuđoj mašini. Iz tog razloga polje Broj nestaje kada se odabere v3 ili v5: hiljadu kopija jedne determinističke vrijednosti bile bi samo hiljadu kopija jedne determinističke vrijednosti. Za sve ostale verzije polje Broj ide od 1 do 1000.

Četiri prekidača mijenjaju izgled rezultata bez mijenjanja 128 bitova ispod. Velika slova ispisuje heksadecimalne cifre velikim pismom, Bez crtica daje kompaktnu formu od 32 znaka koju preferiraju određene kolone i imena datoteka, dok Vitičaste zagrade obavija vrijednost u { } — format koji Windows i .NET svijet nazivaju GUID. Pod Napredne opcije, opcija urn:uuid: dodaje prefiks koji od njega pravi službeni URN; ona isključuje zagrade i formu bez crtica kada je uključena, jer standard dopušta tačno jednu URN formu i to je kanonska forma sa crticama. Format za kopiranje određuje kako se spaja serija kada je kopirate: po jedan u svakom redu, razdvojeni zarezima, ili svaka vrijednost pod navodnicima sa zarezom na kraju, što je spremno za direktno ubacivanje u niz u kodu. Ispod rezultata nalazi se red koji prikazuje slučajnost u bitovima — 122 za v4, 62 za v7 — i, za v7, vremensku oznaku kodiranu u prvom identifikatoru serije, tako da je vrijeme unutar vrijednosti vidljivo umjesto da se pretpostavlja. Kopiraj sve i Sačuvaj u datoteku poštuju odabrani Format za kopiranje. Historija čuva vaših zadnjih 10 serija u vašem pregledniku: kliknite na neku da je vratite, kopirajte ili izbrišite pojedinačan unos, ili očistite cijelu listu. Očisti prazni rezultat i ne dira vaše postavke, a preko 50 identifikatora lista postaje jedan blok sa klizačem umjesto pedeset pojedinačnih redova.

Najvažnija stvar na ovoj stranici je razlika između v4 i v7 kao primarnog ključa (primary key) i to nije pitanje ukusa. Indeksi u bazama podataka su stabla (poput B-tree) koja se drže u sortiranom redoslijedu, i mjesto gdje novi ključ pada u taj redoslijed određuje koliko posla zahtijeva unos. Ključ v4 je slučajan, tako da uzastopni unosi padaju u nepovezane dijelove indeksa: stranice (pages) koje su bile pune se cijepaju (page split), dijelovi stabla koje baza podataka drži u memoriji rijetko su oni koji će trebati za sljedeći unos, a indeks na kraju postaje veći i fragmentiraniji nego što to zahtijevaju redovi na koje pokazuje. Ključ v7 počinje sa trenutnom milisekundom, tako da uzastopni unosi padaju jedni pored drugih na desnom kraju stabla, što je obrazac koji stvara automatski inkrementirajući cijeli broj i obrazac oko kojeg su izgrađene strukture indeksa. To je taj kompromis: v7 vam daje ponašanje unosa sekvencijalnog ključa uz zadržavanje osobine zbog koje ste prvobitno izabrali UUID-ove, a to je da ga svako može stvoriti bez pitanja servera. Ono što to košta jeste da je vrijeme kreiranja sada čitljivo unutar identifikatora, a da li je to važno je pitanje o vašim podacima, a ne o formatu.

Ništa nikada ne provjerava UUID na jedinstvenost; njegova veličina je garancija. Nema nikakvog registra, povratnog putovanja do servera, pretrage — generator proizvodi broj i predaje ga, a razlog zbog kojeg se dva od njih ne sudaraju je jednostavno taj što postoji 2^122 mogućih v4 vrijednosti, odnosno oko 5,3 sekstiliona. Paradoks rođendana je pošten način za dimenzionisanje toga: trebalo bi vam otprilike 2,7 triliona identifikatora prije nego što bi postojala jednaka šansa da se bilo koja dva podudaraju, što znači milijardu novih UUID-ova svake sekunde tokom 86 godina. Vrijedi biti precizan o tome šta to obećava, a šta ne. To je statistička garancija, a ne aritmetička, i važi samo dok je slučajnost ispod nje stvarna — loše inicijaliziran generator ili virtuelna mašina klonirana zajedno sa svojim bazenom entropije ruše je na način koji format ne može otkriti. Verzija 7 još više sužava to pitanje: unutar jedne milisekunde jedan generator se uopšte ne može ponoviti, jer se brojač povećava umjesto da baca kockice, a kroz nezavisne generatore 62 slučajna bita odrađuju posao.

UUID je identifikator, a ne lozinka. Verzija 4 je nepredvidiva, a to dovodi ljude u iskušenje da je tretiraju kao tajnu — link za resetovanje lozinke, nepredvidiv URL, sesijski token, API ključ. Nepredvidivost je stvarna, ali tajnost je svojstvo načina na koji se postupa sa vrijednošću, a identifikatori se po dizajnu tretiraju nepažljivo: oni se nalaze u URL-ovima, koji završavaju u historiji preglednika, serverskim zapisima, zaglavljima referrer i analitici, te se ubacuju u poruke u chatovima. Ostale verzije su još gori kandidati. Verzija 1 i verzija 7 kodiraju trenutak nastanka, pa svako ko ga ima zna otprilike kada je napravljen i može suziti krug svega što je napravljeno oko njega. Verzije 3 i 5 su namjerno determinističke: v5 UUID email adrese nije heširana tajna, to je vrijednost koju svako sa istom adresom može izračunati za sekundu. Koristite UUID da biste imenovali stvari. Koristite generator lozinki ili token iz biblioteke napravljene za tajne, kada vrijednost mora ostati nepoznata.

Zašto odabrati ovaj UUID generator?

UUID-ovi se pojavljuju gdje god se nečemu mora dati ime prije nego što bilo šta može potvrditi da je to ime slobodno. Kod aplikacije ih kuje za redove koje se sprema unijeti, tako da objekat ima identitet prije nego što je ikada stigao do baze podataka, a klijent se može na njega referirati dok je upis još uvijek u toku. Distribuirani sistemi se oslanjaju na njih još jače: nekoliko servisa koji pišu u jednu tabelu, mobilni klijent koji radi van mreže u avionu i stvara zapise, red koji mora prepoznati poruku koju je već obradio — niko od njih ne može čekati svoj red za zajednički brojač. Verzija 5 pokriva drugačiju potrebu — to je stabilan identifikator izveden iz nečega što već imate: isti dokument, isti URL ili isti račun se uvijek preslikavaju na isti UUID, tako da se uvoz može pokrenuti dva puta bez dupliranja bilo čega. Na drugim mjestima su jednostavno format koji sistem zahtijeva — korelacijski identifikator provučen kroz zapise i praćenja (traces), ime datoteke koje se neće sudarati kada otpremanja od hiljadu korisnika slete u jedan bucket, Windows ključ registra, ili testni podaci koji moraju izgledati kao stvarni.

Vrijedi znati nekoliko poštenih ograničenja. Jedna serija je jedna verzija: vrijednost u polju Verzija se primjenjuje na sve u njoj, tako da je niz v4 identifikatora jedna serija, a v7 druga. Ovo je generator, a ne inspektor — lijepljenje UUID-a da bi se pročitala njegova verzija ili vremenska oznaka nije nešto što ova stranica radi. Sačuvaj u datoteku zapisuje običnu tekstualnu datoteku umjesto CSV ili JSON formata. Verzija 7 otvoreno otkriva kada je stvorena, u milisekundu tačno, što je stvarni kompromis a ne greška, a verzija 1 otkriva vrijeme na isti način; ako je to problem za vaše podatke, verzija 4 je verzija koja nikome ništa ne govori. Dvije posebne vrijednosti iz standarda nisu verzije i stoga nisu opcije pod Verzija, ali ih možete kopirati odavde: nil UUID, 00000000-0000-0000-0000-000000000000, i max UUID, ffffffff-ffff-ffff-ffff-ffffffffffff. Sve na ovoj stranici prati RFC 9562, specifikaciju koja je zamijenila RFC 4122 u 2024. godini, tako da je izlaz prihvaćen od strane svake biblioteke, baze podataka ili API-ja koji uopšte rukuju UUID-ovima. Unutar ovih ograničenja garancija je snažna: svaki identifikator je napravljen prema standardu, iz kriptografski sigurne slučajnosti, na vašoj vlastitoj mašini, i niko ga drugi nikada ne vidi.

FAQ

Kako da generišem UUID?

Izaberite verziju u polju Verzija, postavite koliko vam ih treba u polju Broj i pritisnite Generiši. Stranica se otvara s jednim identifikatorom verzije 4, što većina projekata i traži, tako da je običan UUID na jedan klik daleko. Svaka vrijednost se pojavljuje s vlastitim dugmetom za kopiranje, dok Kopiraj sve uzima cijelu seriju odjednom.

Koja je razlika između UUID v4 i v7?

Verzija 4 predstavlja 122 slučajna bita bez ikakve strukture, pa nikoja dva nemaju međusoban odnos. Verzija 7 troši prvih 48 bitova na milisekundu kada je kreirana, dodaje brojač i 62 slučajna bita, te se stoga može sortirati: serija izlazi u redoslijedu u kojem je stvorena. Koristite v4 kada identifikator samo treba da bude jedinstven, a v7 kada će takođe biti ključ u bazi podataka.

Koju UUID verziju trebam koristiti?

Verziju 4 osim ako nemate razloga odabrati drugu. Odaberite verziju 7 ako identifikator postaje primarni ključ i performanse unošenja su važne, verziju 5 ako vam je potrebno da isti unos uvijek proizvodi isti identifikator, a verziju 1 samo ako sistem s kojim morate razgovarati to izričito traži. Verzija 3 je verzija 5 s MD5 umjesto SHA-1 i postoji zbog kompatibilnosti.

Jesu li generisani UUID-ovi stvarno slučajni i sigurni?

Slučajnost je kriptografski sigurna: dolazi od Web Crypto API-ja vašeg preglednika, preko crypto.randomUUID() ili crypto.getRandomValues(), a ne od Math.random(). Sigurno u smislu nepredvidivosti je drugačije pitanje od sigurnog u smislu tajnosti — UUID je identifikator i ne bi ga trebalo koristiti kao lozinku, sesijski token ili API ključ.

Mogu li generisati puno UUID-ova odjednom?

Da, do 1000 u jednom potezu. Postavite Broj i pritisnite Generiši; preko pedeset vrijednosti rezultat postaje jedan blok sa klizačem, umjesto dugačke liste redova. Kopiraj sve i Sačuvaj u datoteku uzimaju cijelu seriju, spojenu onako kako nalaže opcija Format za kopiranje — po jedan u redu, odvojeni zarezima ili pod navodnicima za lijepljenje u niz.

Zašto mi v3 i v5 daju isti UUID svaki put?

Zato što je to upravo njihova svrha. Verzije 3 i 5 su determinističke: one heširaju imenski prostor i ime koje im date, tako da identični ulazi uvijek proizvode identičan identifikator, na bilo kojoj mašini i na bilo kojem jeziku. To ih čini korisnima za dobivanje stabilnog identifikatora iz nečega što već imate, i to je razlog zašto se polje Broj sakrije kada ih odaberete.

Šta su Imenski prostor i Ime, i koji imenski prostor trebam odabrati?

To su dva ulazna podatka iz kojih se izračunava UUID verzije 3 ili 5. Imenski prostor određuje kojoj vrsti ime pripada — DNS za imena hostova, URL za adrese, OID i X.500 za te sheme direktorija, ili Vlastiti imenski prostor (UUID) ako želite navesti svoj vlastiti UUID imenskog prostora, što je uobičajen izbor unutar aplikacije. Ime je sam tekst. Različiti imenski prostori daju potpuno drugačije rezultate za isto ime, što je i smisao njihovog postojanja.

Zašto je UUID v7 bolji od v4 za primarni ključ baze podataka?

Zbog mjesta gdje vrijednosti padaju u indeks. Indeks se čuva u sortiranom poretku, a slučajni v4 ključ pada bilo gdje u njega, pa unosi cijepaju stranice svuda po stablu, a dijelovi u memoriji su rijetko dijelovi koji će sljedeći trebati. Ključ v7 počinje sa trenutnom milisekundom, pa uzastopni unosi padaju zajedno na kraj indeksa, što je način na koji se ponaša sekvencijalni cjelobrojni ključ — a istovremeno omogućava svakom servisu da generiše identifikator bez ispitivanja centralnog brojača.

Mogu li ikada dva UUID-a biti ista?

U principu da, u praksi ne, i vrijedi znati koje je tačno. Ništa ne provjerava jedinstvenost: jednostavno postoji 2^122 mogućih vrijednosti verzije 4, oko 5,3 sekstiliona, a trebalo bi vam otprilike 2,7 triliona — milijardu svake sekunde 86 godina — prije nego bi postojala 50% šansa za jedan sudar. Garancija je statistička a ne apsolutna, i ovisi o tome da je slučajnost prava, što je razlog zašto ovaj generator koristi Web Crypto API, a ne običnu pseudo-slučajnu funkciju.

Mogu li koristiti UUID kao lozinku, API ključ ili sesijski token?

Ne, a to je greška koja najviše košta. UUID verzije 4 je nepredvidiv, ali identifikatori se tretiraju kao javni: završavaju u URL-ovima, historiji preglednika, evidencijama servera, zaglavljima preporuka i analitici. Verzije 1 i 7 dodatno otkrivaju kada su kreirane, a verzije 3 i 5 može ponovo izračunati svako ko zna ulaze. Za sve što mora ostati tajno, upotrijebite generator lozinki ili token iz biblioteke namijenjene tajnama.

Da li UUID v7 otkriva kada je stvoren?

Da, u milisekundu, i to je tako dizajnirano, a ne propust — vremenska oznaka je ono što v7 čini podložnim sortiranju. Red ispod rezultata vam pokazuje vrijeme kodirano u prvoj vrijednosti serije, tako da tačno vidite šta je otkriveno. Verzija 1 takođe nosi vremensku oznaku. Ako je vrijeme nastanka nešto što ne biste radije objavljivali, verzija 4 ne sadrži nikakvo vrijeme uopšte.

Da li UUID v1 izlaže moju MAC adresu?

Ne ovdje. Prvobitna šema koristila je adresu mrežne kartice računara kao polje čvora, odakle dolazi reputacija verzije 1, ali standard takođe dopušta slučajan identifikator čvora označen s multicast bitom, a to je ono što ovaj generator proizvodi. Vaša hardverska adresa se nikada ne čita i nikada ne pojavljuje u izlazu.

Šta mijenjaju opcije Velika slova, Bez crtica, Vitičaste zagrade i urn:uuid:?

Samo prezentaciju — 128 bitova ispod su identični u svakom obliku. Velika slova ispisuje heksadecimalne cifre velikim pismom, Bez crtica daje kompaktnu verziju od 32 znaka, Vitičaste zagrade stavlja vrijednost unutar { } (kako Windows i .NET zapisuju GUID), a urn:uuid: dodaje prefiks koji ga čini službenim URN-om. Kada je uključen, urn:uuid: isključuje ostale dvije opcije, jer standard definiše tačno jedan oblik URN-a i to je kanonski oblik s crticama.