Generador d'UUID v4

Genereu valors UUID v4 en línia: 122 bits aleatoris, estructura d'UUID estàndard i resultats a punt per copiar al vostre navegador.

Format
ID generats
Llest. Genereu valors UUID v4 al vostre navegador.

Com es construeix aquest ID

Estructura
UUID de 128 bits amb versió 4 i bits de variant RFC, mostrat en grups hexadecimals de 8-4-4-4-12.
Entropia
122 bits aleatoris obtinguts de crypto.randomUUID().
Temps
Cap; els identificadors v4 no revelen el moment en què van ser creats.
Risc de col·lisió
Les col·lisions estan regulades per 122 bits aleatoris, un volum que supera amb escreix les necessitats pràctiques dels sistemes habituals.
Exemple
c5223c81-dbb6-49b1-b81e-0d069813d12c

Els ID es generen localment amb mètodes aleatoris forts del navegador. No s'envia res a BroBroGo.

Preguntes freqüents

Quan hauria d'utilitzar UUID v4?

Utilitzeu UUID v4 quan necessiteu identificadors aleatoris opacs que no s'ordenin cronològicament i que no exposin informació temporal.

Puc eliminar els guions o posar la sortida en majúscules?

Sí. L'eina d'UUID v4 manté el panell d'opcions d'UUID, de manera que podeu activar o desactivar els guions i la sortida en majúscules.

L’UUID v4: estructura i estàndard

L’UUID (Universally Unique Identifier) v4, definit per l’RFC 4122, és un identificador de 128 bits que s’obté majoritàriament per atzar. La forma canònica el representa com una cadena de 36 caràcters en format hexadecimal separats per guions: 8‑4‑4‑4‑12. Per exemple: 550e8400-e29b-41d4-a716-446655440000. D’aquests 128 bits, 122 són purament aleatoris i els 6 restants estan fixats per al propòsit del format: 4 bits indiquen la versió (el valor 0100 en binari, que equival al dígit «4» en hex) i 2 bits senyalen la variant (normalment 10 en binari, que dona lloc al dígit «a», «b», «c» o «d» en la novena posició). Aquesta combinació garanteix que qualsevol UUID v4 generat sigui vàlid segons l’estàndard, mentre maximitza l’espai d’aleatorietat disponible.

L’eina que descrivim exposa exactament aquesta estructura. En seleccionar la opció «UUID v4» del desplegable (que també ofereix UUID v7, ULID i NanoID), l’usuari obté identificadors que respecten la composició de bits de l’RFC. Els commutadors «Majúscules» i «Incloure guions» permeten modificar la representació textual sense canviar la identitat subjacent: posar les lletres hex en majúscules (A‑F en lloc de a‑f) o eliminar els guions per obtenir una cadena contínua de 32 caràcters hex. Qualsevol canvi d’opció regenera immediatament tots els ID.

Per què 122 bits d’aleatorietat?

La decisió d’usar 122 bits aleatoris no és trivial. Amb aquesta quantitat d’entropia, la probabilitat de col·lisió és negligible per a totes les aplicacions pràctiques. Per posar-ho en xifres: si generéssiu 1.000 milions d’UUID v4 per segon durant un any, la probabilitat de trobar un sol duplicat seria inferior a 10⁻¹². Aquest càlcul es basa en la paradoxa de l’aniversari: per a un espai de 2¹²² valors, el nombre esperat de col·lisions després de generar N identificadors és aproximadament N² / (2·2¹²²). Fins i tot amb N = 2⁶¹ (uns 2,3·10¹⁸), la probabilitat és només del 50%, i generar tants UUIDs és prohibitius en qualsevol entorn real.

Aquesta aleatorietat prové del navegador: l’eina fa servir mètodes criptogràfics (com crypto.randomUUID o crypto.getRandomValues) per obtenir bits forts i impredictibles. No hi ha cap servidor al mig, ni cap font de temps o adreça MAC. Per això, UUID v4 és idòni per a aplicacions de seguretat on es requereix que els identificadors siguin inenumerables —és a dir, que un atacant no pugui endevinar el següent ID a partir dels anteriors. A diferència dels UUID v1 o v7, que incorporen marques de temps i per tant són ordenables i correlacionables, el v4 no revela cap informació sobre el moment o el lloc de generació.

Tanmateix, aquesta mateixa aleatorietat té un cost: els UUID v4 no segueixen cap ordre. Si s’usen com a clau primària en una base de dades relacional, el valor de cada fila és essencialment aleatori respecte a les altres. Això afecta directament el rendiment de les estructures d’índex.

Impacte en bases de dades: indexació i fragmentació

Els sistemes de bases de dades relacionals (com PostgreSQL, MySQL o SQLite) organitzen les claus primàries en un índex B‑tree (o el seu equivalent). Aquest índex espera que les claus arribin en un ordre creixent —per exemple, claus autoincrementals o UUID v7 amb temps monòton— per poder inserir nous nodes als extrems de l’arbre. Quan les claus són aleatòries (com passa amb UUID v4), cada inserció obliga a localitzar un lloc dins de l’arbre existent, sovint al mig, i a reequilibrar-lo. Això provoca fragmentació de l’índex i augmenta el nombre d’operacions d’E/S per inserció.

L’efecte no és negligible. En un B‑tree típic, una inserció amb clau aleatòria pot requerir un 40–60% més de pàgines d’índex noves que una inserció seqüencial. A més, les càrregues massives de dades (com en una migració) perden la localitat d’emmagatzematge: els fitxers d’índex es dispersen pel disc. Per a bases de dades petites (fins a uns 100.000 registres), la diferència és mínima; però per a taules amb milers de milions de files, la fragmentació pot degradar el rendiment de les escriptures i, a llarg termini, de les consultes d’interval.

Les alternatives com UUID v7 (que reserva 48 bits per a una estampa de temps en mil·lisegons) o ULID estan dissenyades per evitar aquest problema: són ordenables temporalment i, per tant, més amigables per als B‑trees. Si la vostra aplicació necessita aleatorietat (per seguretat o per evitar enumeració) però alhora ha de suportar moltes escriptures, podeu considerar una clau composta: un segment temporal per a l’índex i un segment aleatori per a la identitat. L’eina que descrivim no genera aquests formats híbrids, però sí que ofereix una opció per a UUID v7 al desplegable, de manera que podeu comparar les dues famílies.

Personalització del format: majúscules i guions

L’eina permet dos ajustos de presentació que només tenen sentit en el context dels UUID (tant v4 com v7). El commutador «Majúscules» canvia les lletres hexadecimals de minúscules a majúscules. Tot i que l’RFC 4122 recomana minúscules (i la majoria d’implementacions les fan servir), alguns sistemes o guies d’estil empresarial exigeixen majúscules per a claus visibles (per exemple, en logs o en URL). La conversió és purament cosmètica; els 128 bits subjacents no canvien. No obstant, cal tenir en compte que si després compareu cadenes textualment, la caixa pot ser rellevant: 550e8400 i 550E8400 són el mateix UUID, però una comparació de cadenes (com en un switch en Javascript o en una base de dades que no normalitzi) les tractaria com a diferents. Per tant, és millor decidir una convenció i mantenir-la.

El commutador «Incloure guions» suprimeix els guions del format canònic. El resultat és una cadena contínua de 32 caràcters hex, com 550e8400e29b41d4a716446655440000. Per què algú voldria treure’ls? Perquè els guions no són imprescindibles: l’UUID es pot representar com un enter de 128 bits en contextos internacionals (URL, paràmetres d’API, noms de fitxer) on volem minimitzar la llargada o evitar caràcters especials. Per exemple, un UUID sense guions és més fàcil d’usar en un fragment d’URL (/item/550e8400e29b41d4a716446655440000) sense codificar. Perdre els guions no afecta la unicitat, però redueix la llegibilitat humana: la separació en blocs ajuda a verificar visualment que no falten caràcters. L’eina, en qualsevol cas, sempre genera els mateixos 128 bits; només canvia la forma textual.

Casos d’ús pràctics

Els UUID v4 són omnipresents en sistemes distribuïts on no hi ha un coordinador central per assignar seqüències. Aquí teniu tres perfils típics d’usuari de l’eina:

  • Desenvolupadors d’aplicacions: Necessiten generar centenars o milers d’identificadors per a sessions, transaccions o objectes en memòria. Amb el comptador configurable (d’1 a 100), poden obtenir de cop un conjunt d’ID per a proves funcionals o per inicialitzar una base de dades de mostra. La generació local evita latències de xarxa.
  • Dissenyadors de bases de dades distribuïdes: Saben que en sistemes sense ordre central (com entorns multi‑master o sistemes offline) els UUID v4 són una solució senzilla per evitar conflictes entre nodes. Accepten la fragmentació de l’índex a canvi de la independència de coordinació.
  • Enginyers de seguretat: Valoritzen la impredictibilitat. Un UUID v4 pot servir com a token de sessió no endeviable, com a ID de petició en APIs públiques o com a clau per a enllaços temporals de restabliment de contrasenya. Com que no conté cap marca de temps, no revela quan es va crear l’identificador, cosa que evita atacs de correlació temporal.

Per a testejadors i generadors de dades de prova, l’eina ofereix la possibilitat de copiar un sol UUID fent clic sobre ell (mitjançant el portapapers) o copiar‑los tots alhora amb un botó. La resposta «Copiat tots!» confirma l’acció.

Generació al navegador: privacitat i rendiment

Tota la generació es duu a terme dins del navegador de l’usuari. No s’envia cap dada a un servidor; el codi JavaScript accedeix a l’API crypto.randomUUID() o a crypto.getRandomValues() per obtenir 16 bytes aleatoris (128 bits) per cada UUID. Això té dos avantatges clars:

  1. Privacitat: No hi ha cap registre al proveïdor de l’eina de quants UUID s’han generat ni per a què s’usen. Ideal per a aplicacions sensibles.
  2. Rendiment: La generació és instantània —fins i tot amb 100 UUIDs, el temps d’espera és inferior a un mil·lisegon. No hi ha latència de xarxa ni limitacions de taxa de peticions.

L’estat de la interfície mostra «Ready.» o «Generated.» segons si hi ha hagut algun canvi. Com que les opcions (format, comptatge, majúscules, guions) desencadenen una regeneració immediata, l’usuari sempre veu el resultat de la combinació actual.

Preguntes freqüents

Quina és la probabilitat de col·lisió entre dos UUID v4 generats amb aquesta eina?
Cada UUID v4 utilitza 122 bits aleatoris. Amb 2¹²² valors possibles, la probabilitat de col·lisió en generar 1.000 milions d’ID és inferior a 10⁻¹². A efectes pràctics, considereu‑la nul·la per a qualsevol volum raonable.

Per què el comptador només permet d’1 a 100?
Per mantenir la usabilitat de la interfície i no sobrecarregar la visualització. Si necessiteu més de 100 ID, podeu generar‑los en lots successius (cada lot s’obté en un clic copiant‑los tots) sense penalització de rendiment.

Què passa si activo majúscules i trec guions alhora?
Obtindreu una cadena de 32 caràcters hex en majúscules, com 550E8400E29B41D4A716446655440000. Els 128 bits subjacents són exactament els mateixos que amb minúscules i guions. La representació canviada és únicament textual.

Quina diferència hi ha entre UUID v4 i UUID v7 en aquesta eina?
L’UUID v4 és totalment aleatori (122 bits); l’UUID v7 usa un estampa de temps de 48 bits i 74 bits aleatoris. El v7 és ordenable cronològicament (ideal per a índexos B‑tree), mentre que el v4 no ho és. Ambdós formats comparteixen els mateixos commutadors de majúscules i guions.

Puc copiar un UUID individual fent clic?
Sí. Feu clic sobre qualsevol UUID de la llista i es copiarà automàticament al portapapers. La interfície no mostra cap confirmació visual, però el sistema operatiu emmagatzemarà l’ID.

La generació depèn d’un servidor extern?
No. Tot el càlcul es fa al vostre navegador, emprant l’API criptogràfica nativa. No hi ha cap connexió de xarxa durant la generació.