Les UUID expliqués : v4, v7 et comment choisir la bonne version

Mis à jour :

Un UUID est un identifiant de 128 bits que n’importe quel ordinateur peut créer seul, sans compteur central, avec la quasi-certitude que personne d’autre n’a produit le même. C’est pourquoi on les retrouve comme clés de base de données, noms de fichiers, identifiants de requête et numéros de commande. La plupart des UUID que vous croisez sont en version 4, purement aléatoire ; la version 7, normalisée en 2024, y ajoute l’instant de création et s’impose rapidement comme le meilleur choix pour les bases de données. Ce guide explique comment en lire un, en quoi les versions diffèrent, quel est le risque réel de collision, et laquelle choisir.

À quoi ressemble un UUID

Un UUID fait 128 bits, écrits sous la forme de 32 chiffres hexadécimaux répartis en cinq groupes séparés par des tirets — 8, 4, 4, 4 et 12 chiffres, soit 36 caractères au total :

La norme actuelle est la RFC 9562, publiée en mai 2024, qui a remplacé la RFC 4122 de 2005. Les lettres peuvent s’écrire en majuscules, en minuscules ou en mélangeant les deux ; les trois formes désignent la même valeur.

Les bases de données dotées d’un type UUID natif, comme PostgreSQL, stockent la valeur sur 16 octets plutôt que sous forme de 36 caractères de texte.

Lire la version

Deux chiffres indiquent à quel type d’UUID vous avez affaire. Le premier chiffre du troisième groupe est la version. Le premier chiffre du quatrième groupe est la variante : pour tout UUID conforme à la norme, il vaut 8, 9, a ou b.

UUIDVersionNature
3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b904Aléatoire
01a0d86f-ca00-7b3e-9f21-6c4d8a0e5b177Ordonné dans le temps, créé le 25 septembre 2026 à 12:00:00 UTC
00000000-0000-0000-0000-000000000000—Le Nil UUID : tous les bits à 0, pour signifier « aucune valeur »
ffffffff-ffff-ffff-ffff-ffffffffffff—Le Max UUID : tous les bits à 1, utilisé comme borne supérieure

Les versions

VersionMode de générationUsage aujourd’hui
1Horodatage et adresse réseau (MAC) de l’ordinateurAncienne ; elle révèle quelle machine a créé l’UUID
3Empreinte MD5 d’un espace de noms et d’un nomUniquement pour reproduire des identifiants existants ; préférez la version 5
4122 bits aléatoiresLe choix par défaut presque partout
5Empreinte SHA-1 d’un espace de noms et d’un nomLe même nom donne toujours le même UUID
6La version 1 réordonnée pour se trier dans le tempsUniquement là où la version 1 est déjà utilisée
7Horodatage Unix en millisecondes, suivi de bits aléatoiresLes nouvelles bases de données et tout ce qui gagne à suivre l’ordre chronologique
8Structure définie par l’applicationFormats expérimentaux ou propres à un éditeur

La version 2 existe pour un ancien système de sécurité et sort du cadre de la norme. La RFC 9562 indique que les implémentations devraient utiliser la version 7 plutôt que les versions 1 et 6 lorsque c’est possible.

Version 4 : aléatoire

Un UUID de version 4 fixe 6 de ses 128 bits pour indiquer la version et la variante, et remplit les 122 autres de données aléatoires. La norme demande un générateur de nombres aléatoires cryptographiquement sûr, ce que les navigateurs fournissent avec crypto.randomUUID() — la fonction qu’utilise le générateur nTools.

Avec 122 bits aléatoires, les collisions ne posent pas de problème en pratique. La probabilité que deux UUID quelconques coïncident n’atteint 50 % qu’après environ 2,7 × 10¹⁸ UUID — à un milliard par seconde, il faudrait environ 86 ans pour y arriver. Après mille milliards d’UUID, la probabilité que deux d’entre eux soient identiques est d’environ 1 sur 10 000 milliards. Le risque réaliste, c’est un générateur de nombres aléatoires défaillant, pas les mathématiques.

Générateur UUID

Version 7 : triée dans le temps

Un UUID de version 7 place le temps Unix en millisecondes dans ses 48 premiers bits, puis la version et la variante, puis 74 bits aléatoires ou issus d’un compteur. Comme le temps vient en premier, les UUID créés plus tard se classent après les plus anciens, aussi bien sous forme de texte que d’octets.

Dans l’exemple ci-dessus, les 12 premiers chiffres hexadécimaux, 01a0d86fca00, correspondent à 1 790 337 600 000 millisecondes après le 1er janvier 1970 : le 25 septembre 2026 à 12:00:00 UTC. L’horodatage de 48 bits suffit jusqu’en l’an 10889. Au sein d’une même milliseconde, les générateurs utilisent soit des bits aléatoires, soit un compteur ajouté pour que les UUID d’un même processus sortent tout de même dans l’ordre.

La prise en charge arrive dans les outils du quotidien : PostgreSQL 18, sorti en septembre 2025, a ajouté une fonction intégrée uuidv7() aux côtés de uuidv4().

Laquelle utiliser comme clé de base de données

La plupart des bases de données conservent les clés primaires dans un index B-tree (arbre B), qui reste efficace lorsque les nouvelles clés arrivent dans l’ordre.

Pour une nouvelle table qui a besoin d’UUID, la version 7 est généralement le meilleur choix. La version 4 reste la bonne option lorsque l’instant de création ne doit pas pouvoir se déduire de l’identifiant.

Ce qu’un UUID n’est pas

Questions fréquentes

Deux UUID aléatoires peuvent-ils être identiques ?

En théorie, oui ; en pratique, non. Il faudrait environ 2,7 × 10¹⁸ UUID de version 4 pour avoir 50 % de chances d’obtenir une seule coïncidence, à condition qu’ils proviennent d’un véritable générateur de nombres aléatoires.

Un GUID est-il la même chose qu’un UUID ?

Oui. GUID est le nom que Microsoft donne au même identifiant de 128 bits. Les outils Windows l’affichent souvent en majuscules ou entre accolades, comme {3F2A9C1E-5B7D-4E8A-9C21-7D4E5F6A8B90}, mais la valeur est la même.

Les UUID sont-ils sensibles à la casse ?

Non. 3F2A9C1E-… et 3f2a9c1e-… sont le même UUID. Comparez-les sans tenir compte de la casse, ou stockez-les dans une colonne de type UUID natif, ce qui règle la question.

Quelle version le générateur nTools crée-t-il ?

La version 4, grâce à la fonction crypto.randomUUID() du navigateur. Il en crée jusqu’à 100 à la fois, entièrement sur votre appareil.

Guides associés