Ce qu'est un UUID v4
Un UUID (identifiant universellement unique) est une valeur de 128 bits ecrite sous forme de 32 chiffres hexadecimaux dans un motif 8-4-4-4-12, comme f47ac10b-58cc-4372-a567-0e02b2c3d479. Les UUID de version 4 sont aleatoires : sur les 128 bits, 122 proviennent d'une source aleatoire cryptographiquement sure, tandis que 6 sont fixes par la spec — le 4 qui commence le troisieme groupe marque la version, et le premier caractere du quatrieme groupe est toujours 8, 9, a ou b (les bits de variante). Cela laisse 2¹²² ≈ 5,3 × 10³⁶ valeurs possibles, ce qui explique pourquoi personne ne coordonne les UUID et que les collisions ne se produisent malgre tout jamais en pratique.
Generation en masse, vraiment aleatoire
Definissez un nombre de 1 a 50 et cliquez sur Generer ; Tout copier place le lot dans votre presse-papiers, un UUID par ligne, pret a coller dans un script de peuplement SQL, un fichier de fixtures ou une colonne de tableur. Chaque UUID provient du crypto.randomUUID() natif du navigateur — une API adossee a un CSPRNG, pas Math.random(). Cette distinction compte : Math.random() est assez previsible pour que des "UUID" construits a partir de lui puissent entrer en collision ou etre devines ; la source Web Crypto, non.
Ou les UUID battent les ID auto-incrementes
- Systemes distribues : n'importe quel client ou service peut creer un ID sans aucune coordination — pas de compteur central, pas d'aller-retour vers la base de donnees.
- Fusion de donnees : des lignes creees hors ligne ou dans des bases distinctes peuvent etre combinees sans conflit d'ID.
- References non devinables : les ID sequentiels divulguent de l'information (
/invoice/1041invite a sonder/invoice/1042) ; les UUID aleatoires ne s'enumerent pas. Ils sont indevinables, mais — ce n'est pas un substitut a de vraies verifications d'autorisation. - Generes avant l'insertion : votre code connait l'ID avant que la ligne n'existe, ce qui simplifie le lien entre enregistrements associes dans une seule transaction.
Notes pratiques et pieges
- Stockage : un UUID fait 16 octets en tant que colonne native
UUID/binaire mais 36 octets en texte — preferez le type natif dans Postgres ou MySQL 8. - Localite d'index : les valeurs v4 aleatoires se dispersent dans un index B-tree, ce qui peut ralentir les tres grandes tables a fortes insertions. L'UUID v7 (ordonne par le temps) resout cela ; v4 reste le bon choix par defaut pour un usage general.
- Casse : la forme canonique est en minuscules, et les comparaisons doivent etre insensibles a la casse.
- UUID = GUID : le terme de Microsoft pour le meme format de 128 bits.
La generation tourne entierement dans votre navigateur — aucun serveur ne voit ni ne journalise jamais les identifiants, ils sont donc surs a utiliser directement dans des donnees de production. Besoin de secrets aleatoires plutot que d'ID ? Utilisez le generateur de mots de passe. Vous voulez plutot une empreinte de contenu existant ? C'est le generateur de hash.