Generator UUID v4

Generați valori UUID v4 online: 122 de biți aleatori, format standard de UUID și rezultate gata de copiat direct în browser.

Format
ID-uri generate
Pregătit. Generați valori UUID v4 direct în browser.

Cum este construit acest ID

Structură
UUID pe 128 de biți cu versiunea 4 și biți de variantă RFC, afișat sub formă de grupuri hexazecimale 8-4-4-4-12.
Entropie
122 de biți aleatori obținuți prin crypto.randomUUID().
Timp
Niciunul; ID-urile v4 nu dezvăluie momentul în care au fost create.
Risc de coliziune
Coliziunile sunt guvernate de cei 122 de biți aleatori, ceea ce depășește cu mult volumele practice ale sistemelor normale.
Exemplu
dc7a977a-e249-4ef0-a854-0c0e86d28fdb

ID-urile dumneavoastră sunt generate local folosind funcții criptografice din browser. Nimic nu este trimis către BroBroGo.

Întrebări frecvente

Când ar trebui să folosesc UUID v4?

Utilizați UUID v4 atunci când aveți nevoie de identificatori aleatori opaci, care nu se sortează după timpul creării și nu expun informații temporale.

Pot elimina cratimele sau pot folosi majuscule pentru rezultat?

Da. Instrumentul dedicat UUID v4 păstrează panoul de opțiuni UUID, astfel încât puteți activa sau dezactiva cratimele și scrierea cu majuscule.

Generator de UUID v4: Identificatori aleatori, standard și personalizabili

Ce face această pagină diferită

Generatorul de UUID v4 pe care îl ai în față nu este un simplu producător de șiruri hexazecimale. Diferența fundamentală constă în faptul că fiecare identificator folosește 122 de biți de aleatoritate pură – restul de 6 biți sunt fixați conform standardului pentru versiunea 4 și varianta RFC 4122. Asta înseamnă că spre deosebire de UUID v7 sau ULID, valorile UUID v4 se sortează arbitrar – nu conțin absolut nicio informație temporală sau de ordine. Iar acest lucru are o consecință directă: dacă le folosești ca cheie primară într-o bază de date, vei fragmenta indexurile B-tree într-un mod pe care identificatorii bazați pe timp (precum UUID v7) nu îl produc.

Pe această pagină poți controla numărul de UUID-uri generate (de la 1 la 100), poți comuta între litere mici și mari (a–f vs. A–F) și poți decide dacă păstrezi sau nu cratimele din formatul canonic. Orice modificare a opțiunilor regenerază instantaneu toate ID-urile, direct în browser, fără vreun apel către server.

Structura internă a UUID v4

Un UUID v4 canonic este un șir de 36 de caractere în formatul 8‑4‑4‑4‑12, de exemplu f47ac10b-58cc-4372-a567-0e02b2c3d479. Fiecare caracter este o cifră hexazecimală (0–9 și a–f sau A–F). Ceea ce nu se vede din exterior este modul în care cei 128 de biți sunt distribuiți:

  • 122 de biți sunt generați aleatoriu – aceasta este sursa principală de entropie.
  • 4 biți sunt fixați pentru a indica versiunea (valoarea 0100 în binar, adică 4 în hexazecimal) – aceștia ocupă poziția a 13-a cifră hexazecimală (al patrulea grup, prima cifră).
  • 2 biți sunt fixați pentru a indica varianta RFC 4122 (valoarea 10 în binar) – aceștia apar în prima cifră a celui de-al treilea grup (poziția a 9-a cifră hexazecimală).

Deci din punct de vedere matematic, un UUID v4 nu conține decât 122 de biți realmente aleatori, nu 128. Pentru un ochi antrenat, acest amestec de biți fixați și aleatori este chiar vizibil: al treilea grup începe întotdeauna cu 4, iar al patrulea grup începe cu 8, 9, a sau b (în hexazecimal, varianta 10xx corespunde cifrelor 8–b).

Când dezactivezi opțiunea „Include hyphens”, obții un șir de 32 de caractere hexazecimale – același UUID, doar că fără separatori. Este util pentru contexte în care cratimele nu sunt permise (de exemplu în nume de fișiere sau în URL-uri), dar reține că astfel pierzi lizibilitatea formatului canonic.

Aleatoritatea și probabilitatea coliziunii

Cu 122 de biți aleatori, numărul total de UUID v4 posibile este 2¹²², adică aproximativ 5,3 × 10³⁶. Pentru a înțelege cât de mică este probabilitatea de coliziune, iată câteva repere concrete:

  • Dacă ai genera un miliard de UUID-uri pe secundă timp de 100 de ani, probabilitatea de a produce măcar o coliziune ar fi de ordinul 10⁻¹² – practic neglijabilă.
  • Formula standard pentru estimarea riscului de coliziune este aproximarea p ≈ n² / (2m), unde n este numărul de ID-uri generate, iar m este spațiul total (2¹²²). Pentru n = 10¹⁸ (un cvintilion), p este în jur de 10⁻⁵ – încă extrem de mic.

De aceea, pentru orice aplicație practică – fie că generezi 100 de ID-uri acum, fie că rulezi un sistem distribuit cu miliarde de intrări – coliziunile UUID v4 sunt efectiv imposibile. Aceasta este și principala justificare pentru care UUID v4 a devenit standardul de facto pentru chei universale în sisteme descentralizate, unde nu există un server central care să aloce ID-uri unice.

Impactul UUID v4 asupra indexării bazei de date

Aici intervine partea mai puțin plăcută. Deoarece UUID v4 este complet aleatoriu, două ID-uri generate succesiv nu au nicio relație între ele – unul poate fi 00000000-0000-4000-8000-000000000000, iar următorul ffffffff-ffff-4fff-bfff-ffffffffffff. Aceasta înseamnă că, atunci când sunt inserate într-un index B-tree al bazei de date, paginile indexului sunt actualizate în locații imprevizibile, ceea ce duce la:

  • Fragmentare masivă – paginile noi se creează în toate colțurile indexului, nu doar la capăt.
  • Performanță de scriere degradată – inserările pot necesita reechilibrări frecvente ale arborelui.
  • Memorie cache ineficientă – paginile recent inserate sunt dispersate, nu localizate împreună.

În schimb, UUID v7 (disponibil tot pe acest site) înglobează un timestamp Unix în primii biți, ceea ce face ca ID-urile generate cronologic să fie sortate aproximativ în ordinea creării. Acest lucru reduce drastic fragmentarea indexului – inserările se fac preponderent la sfârșitul indexului, similar cu un AUTO_INCREMENT.

Dacă folosești UUID v4 ca cheie primară într-un tabel cu milioane de rânduri, vei observa o scădere semnificativă a performanței de scriere comparativ cu un ID secvențial sau cu un UUID v7. În schimb, pentru tabele mici (sub 10.000 de rânduri) sau pentru chei care nu sunt indexate (de exemplu, token-uri de sesiune stocate separat), această problemă nici nu se pune.

UUID v4 versus identificatori bazați pe timp

Pe lângă UUID v4, același generator oferă și UUID v7, ULID și NanoID. Iată cum se compară UUID v4 cu alternativele bazate pe timp:

Caracteristică UUID v4 UUID v7 ULID
Biți aleatori 122 74 80
Ordonare Aleatorie Aproximativ cronologic Cronologică
Vizibilitatea datei Nu Da (parțial) Da (10 caractere timestamp)
Fragmentare index Mare Mică Mică
Dimensiune 36 caractere 36 caractere 26 caractere (Crockford Base32)

Alegerea între ele depinde de caz: vrei identificatori care nu pot fi ghiciți sau ordonați temporal? Atunci UUID v4 este potrivit. Vrei chei primare care să nu strice performanța indexului? Atunci alege UUID v7 sau ULID. Vrei compactitate maximă și sortare cronologică fără fragilitate? ULID poate fi soluția.

Cazuri de utilizare pentru identificatori ne-secvențiali

UUID v4 nu este doar o curiozitate tehnică – are aplicații practice bine definite:

  • API tokens și sesiuni – pentru a preveni enumerarea sau ghicirea ID-urilor, un token generat aleator este esențial. De exemplu, un session_id sub formă de UUID v4 nu poate fi ghicit prin încercare succesivă.
  • Identificatori de obiecte în sisteme distribuite – când mai multe noduri generează ID-uri fără coordonare, coliziunile sunt practic imposibile. Servicii precum Cassandra, Riak sau sisteme de mesagerie distribuită folosesc UUID v4 pentru evenimente și entități.
  • Testare și populare a bazelor de date – pentru a genera date realiste de test, UUID v4 oferă un set divers de valori unice, fără a depinde de un generator central.
  • E-mail tracking și campaign identifiers – pentru a preveni identificarea destinatarilor prin numere secvențiale, UUID v4 asigură anonimizarea identității.

Personalizarea formatului: majuscule, cratime și copiere

Generatorul oferă trei comutatoare care îți permit să adaptezi UUID-ul la nevoile specifice:

  • Uppercase – dacă activezi această opțiune, literele hexazecimale a–f devin A–F. Utilitatea este în principal estetică sau de compatibilitate cu anumite sisteme (de exemplu, unele baze de date sau API-uri preferă litere mari). Nu afectează valoarea UUID-ului, doar reprezentarea.
  • Include hyphens – când este dezactivat, UUID-ul devine un șir continuu de 32 de caractere hexazecimale. Acest lucru este util în contexte unde cratimele nu sunt permise: nume de fișiere, chei în Redis, identificatori în URL-uri, sau în sisteme care nu suportă caracterul -.
  • Count – poți genera de la 1 la 100 de UUID-uri simultan. Fiecare ID este independent, generat cu crypto.randomUUID() sau API-uri similare ale browserului. Toate ID-urile apar instantaneu, fără întârziere.

După generare, poți copia fiecare ID individual (făcând clic pe el) sau poți copia toate ID-urile simultan cu butonul „Copy all”. Starea paginii se actualizează: după copierea tuturor apare mesajul „Copied all!”, iar după generare apare „Ready.” sau „Generated.”.

Întrebări frecvente

1. Ce înseamnă exact „122 de biți de aleatoritate”? În UUID v4, 122 din cei 128 de biți sunt generați aleator. Restul de 6 biți sunt fixați conform standardului: 4 biți pentru versiune (valoarea 4) și 2 biți pentru variantă (valoarea 10 în binar). Acești biți fixați asigură că generatorul produce întotdeauna un UUID v4 valid.

2. Cât de mare este probabilitatea de coliziune? Extrem de mică. Cu spațiul de 2¹²² posibilități, pentru a avea o probabilitate de 50% de coliziune, ar trebui să generezi aproximativ 2⁶¹ UUID-uri (aproximativ 2,3 × 10¹⁸). Pentru orice aplicație reală, riscul este neglijabil.

3. De ce să folosesc UUID v4 în loc de UUID v7? Dacă nu ai nevoie de sortare cronologică și vrei ca ID-urile să fie complet imprevizibile (de exemplu pentru token-uri de securitate), UUID v4 este alegerea corectă. Dacă îți pasă de performanța indexării bazei de date, preferi UUID v7.

4. Pot folosi UUID v4 fără cratime în baze de date? Da, dar asigură-te că coloana este definită ca VARCHAR(32) (sau CHAR(32)) și că nu există restricții privind literele mari-mici. Unele baze de date (MySQL, PostgreSQL) acceptă și tipul UUID nativ, dar acesta este de obicei reprezentat cu cratime.

5. Cum se face copierea individuală? Fă clic pe orice UUID generat – acesta este copiat automat în clipboard. Vei primi un feedback vizual (de obicei o schimbare de culoare sau un tooltip). Pentru a copia toate ID-urile simultan, folosește butonul „Copy all”.

6. Ce se întâmplă dacă setez count la 100? Veți primi exact 100 de UUID-uri, fiecare generat independent cu 122 de biți de aleatoritate. Nu există limitări de performanță notabile, deoarece generarea se face local în browser, fără apeluri de rețea. Toate ID-urile sunt gata instantaneu.