Générateur d’UUID

Appuyez sur le bouton et obtenez un UUID de version 4, ou jusqu’à cent d’un coup. Ils sont produits par le générateur de nombres aléatoires cryptographique de votre navigateur, dans cette page — ce qui compte plus qu’il n’y paraît, parce qu’un identifiant issu d’une source faible ressemble exactement à un identifiant issu d’une bonne source et se comporte très différemment.

Jusqu’à cent à la fois, un par ligne.

Résultat

Appuyez sur le bouton et la réponse apparaîtra ici.

  • Où cela s’exécute

    Rien n’est envoyé, puisqu’il n’y a pas de fichier : tout est calculé dans cette page.

  • Sans file d’attente et sans compte

    Il répond aussi vite que votre machine le permet, et ne demande jamais qui vous êtes.

  • Autant de fois que vous voulez

    Rien n’est compté ni plafonné : répondre à nouveau ne nous coûte rien.

Comment cela fonctionne

  1. Choisissez combien il vous en faut. Un par défaut, cent au maximum.
  2. Appuyez sur Générer. Chacun apparaît sur sa propre ligne.
  3. Copiez-les. Ils ont été produits sur votre machine et n’existent nulle part ailleurs.

Ce que veut dire la version 4, et à quoi servent les autres

La version 4 est un UUID fait de bits aléatoires — 122 d’entre eux, les six restants étant fixés pour déclarer la version et la variante. Il ne porte aucune information sur le moment ni sur le lieu de sa fabrication, ce qui est justement pourquoi c’est la version par défaut : rien de lui ne fuite, et deux identifiants générés indépendamment n’importe où dans le monde ne se rencontreront pas.

Les autres répondent à d’autres questions. Les versions 1 et 6 embarquent un horodatage et un identifiant de machine, donc elles se trient par date de création et divulguent quelque chose sur la machine. Les versions 3 et 5 sont déterministes — un hash d’un nom dans un espace de noms, donc le même nom donne toujours le même UUID. La version 7 est la nouvelle version ordonnée dans le temps, conçue pour les clés de base où une insertion aléatoire coûte cher à l’index.

L’aléatoire est l’endroit où cela tourne mal, invisiblement

Un UUID produit par `Math.random` a la même forme, les mêmes tirets et le même chiffre de version qu’un UUID issu d’une source cryptographique. Rien en lui n’a l’air faible. Mais `Math.random` est un générateur pseudo-aléatoire rapide à petit état interne, et une poignée de sorties peut suffire à prédire les suivantes — ce qui transforme un identifiant « aléatoire » en identifiant devinable.

Cette page emploie `crypto.randomUUID`, qui puise dans l’entropie du système d’exploitation et fixe correctement les bits de version et de variante. Là où il n’est pas disponible, la page s’arrête et le dit au lieu de se rabattre : un repli silencieux est la façon dont des identifiants prévisibles arrivent en production, puisqu’il n’y a aucun symptôme à remarquer.

Un UUID n’est pas un secret, même aléatoire

Il est indevinable, ce qui n’est pas la même chose que secret. Les UUID finissent dans des URL, dans des journaux, dans des en-têtes de référent, dans des outils de mesure d’audience, dans des tickets de support et dans des captures d’écran. Tout ce qui est accessible en connaissant un UUID est accessible à quiconque a vu cette URL une fois.

Cela en fait une poignée indevinable acceptable pour quelque chose de peu sensible — un lien de partage vers un document, un envoi ponctuel — et un mauvais choix comme seule chose séparant Internet des données de quelqu’un. Si connaître l’identifiant donne l’accès, vous avez construit une authentification à partir d’une valeur qui fuit par conception.

Les collisions, et le nombre qui met mal à l’aise

Il existe 2^122 UUID de version 4 possibles. Pour atteindre une chance sur un milliard d’observer une seule collision, il faudrait en générer environ 10^15 — un milliard par seconde pendant à peu près un mois. Pour tout système réel, la réponse est que cela n’arrivera pas.

La réserve est que cela ne tient que si l’aléatoire est réel. Chaque collision d’UUID rapportée dans la nature remonte à un générateur faible ou mal initialisé : des conteneurs démarrés depuis une image identique et amorcés sur l’horloge, un équipement embarqué sans entropie au démarrage, une bibliothèque retombée sur `Math.random`. Le risque n’est pas dans les mathématiques, il est dans la source.

S’en servir comme clé de base de données

Un UUID aléatoire en clé primaire répartit les insertions uniformément dans l’index, ce qui est l’inverse de ce qu’un arbre B veut — chaque insertion touche une page différente, le cache cesse d’aider, et l’index se fragmente. Sur une grande table, c’est un coût mesurable et bien documenté.

Les réponses habituelles sont un UUID ordonné dans le temps comme la version 7, ou une clé séquentielle séparée avec l’UUID conservé comme identifiant externe. Il vaut mieux décider délibérément que découvrir le problème à l’échelle, car changer le type d’une clé primaire plus tard fait partie des migrations les plus coûteuses qui soient.

Les tirets, les majuscules et les accolades

La forme canonique compte trente-deux chiffres hexadécimaux en cinq groupes séparés par des tirets, en minuscules. L’outillage Windows entoure souvent l’ensemble d’accolades, et beaucoup de bases stockent la valeur sans tirets pour gagner quatre octets par ligne.

Ces variantes désignent le même identifiant, et pourtant elles ne se comparent pas comme des chaînes. Une jointure entre une table qui stocke les tirets et une autre qui ne les stocke pas ne remonte rien, sans aucune erreur : c’est un mode de panne courant et long à diagnostiquer, parce que les deux colonnes contiennent visiblement la même valeur.

Cent d’un coup, et pourquoi pas mille

Le plafond est là pour que la sortie reste lisible et copiable d’un geste, pas parce que le calcul coûterait quelque chose : générer mille UUID prendrait quelques millisecondes. Cent lignes tiennent dans un presse-papiers et se relisent ; dix mille ne se relisent pas.

Au-delà, l’outil approprié n’est plus une page web mais une commande dans le langage que vous employez : une boucle autour de `crypto.randomUUID` en JavaScript, `uuidgen` en ligne de commande, `gen_random_uuid()` dans PostgreSQL. Ce sont d’ailleurs les mêmes sources d’entropie, et le résultat a exactement la même qualité.

La version 7, et pourquoi elle n’est pas encore par défaut ici

La version 7 place un horodatage en millisecondes dans ses premiers bits, ce qui la rend croissante dans le temps et donc bien meilleure comme clé primaire. Elle a été normalisée en 2024 et les bibliothèques la proposent de plus en plus largement.

Elle n’est pas générée ici parce que `crypto.randomUUID` produit exclusivement de la version 4, et qu’écrire une version 7 à la main demanderait de remplacer la primitive de la plateforme par notre propre assemblage de bits — exactement ce que la section sur l’aléatoire déconseille. Quand la plateforme la proposera, cette page la proposera.

Ce qu’un UUID divulgue quand ce n’est pas la version 4

Un UUID de version 1 contient l’adresse MAC de la machine qui l’a produit et l’instant, à cent nanosecondes près, où il a été produit. Publier de tels identifiants revient donc à publier un inventaire partiel de son infrastructure et une chronologie exacte de ses créations d’enregistrements.

Ce n’est pas théorique : c’est ainsi qu’un document a autrefois été relié à la machine de son auteur. Si vous héritez d’un système qui expose des UUID de version 1 vers l’extérieur, la page de validation d’à côté vous dira lesquels, et le remplacement par de la version 4 est en général un changement d’une ligne.

Générateur d’UUID : questions fréquentes

Ces UUID sont-ils réellement aléatoires ?

Ils viennent de crypto.randomUUID, qui puise dans l’entropie cryptographique de votre système d’exploitation — la même source que celle des tokens de session et des clés. Là où le navigateur ne la propose pas, cette page s’arrête plutôt que de se rabattre sur Math.random, parce qu’un UUID faible est indiscernable d’un UUID solide.

Quelle est la différence entre un UUID et un GUID ?

Aucune, en pratique. GUID est le nom que Microsoft donne au même identifiant de 128 bits, et les deux termes sont interchangeables. La seule différence que vous rencontrerez est de mise en forme : l’outillage Windows les entoure souvent d’accolades, ce que le validateur d’à côté accepte.

Puis-je obtenir deux fois le même UUID ?

Pas de façon réaliste. Il existe 2^122 possibilités, et atteindre une chance sur un milliard d’observer une collision demanderait d’en générer un milliard par seconde pendant un mois. Le vrai risque n’est jamais l’arithmétique, c’est une source aléatoire faible, d’où l’emploi de celle de la plateforme.

Puis-je me servir d’un UUID comme token secret ?

Seulement pour ce qui est peu sensible. Un UUID de version 4 est indevinable, mais il n’est pas secret : il voyage dans les URL, les journaux, les référents et les captures d’écran. Correct comme lien de partage vers un document ; mauvais comme seule protection de données personnelles.

Les UUID générés ici sont-ils enregistrés quelque part ?

Non. Ils sont produits dans votre navigateur et jamais transmis, il n’en existe donc aucune copie ailleurs que dans votre presse-papiers. Rien dans le fait d’en générer cent ne touche un serveur, ce qui est aussi pourquoi il n’y a pas de limite à faire respecter au-delà du confort de lecture.

Autres outils