Générer des identifiants
Générez des UUID des versions 1, 3, 4, 5, 6 et 7, ou des ULID, un par un ou par lots de mille maximum, et analysez n'importe quel identifiant pour connaître sa version, sa variante et la date qu'il contient. Ils sont calculés dans votre navigateur avec le générateur cryptographique du système.
122 bits aléatoires. Le plus utilisé quand il suffit d'un identifiant unique.
Format
Résultat
Analyser un UUID ou ULID
Accepte tirets, accolades, le préfixe urn:uuid: ou un ULID de 26 caractères
Type
Version 7 : date Unix triable
Variante
RFC 9562 (anciennement RFC 4122)
Date de création
22 févr. 2022, 16:22:22 2022-02-22T19:22:22.000Z · 1645557742000 ms
Canonique017f22e2-79b0-7cc3-98c4-dc0c0c07398f
Majuscules017F22E2-79B0-7CC3-98C4-DC0C0C07398F
GUID avec accolades{017F22E2-79B0-7CC3-98C4-DC0C0C07398F}
URNurn:uuid:017f22e2-79b0-7cc3-98c4-dc0c0c07398f
En ULID01FWHE4YDGFK1SHH6W1G60EECF
Hexadécimal017f22e279b07cc398c4dc0c0c07398f
Entier décimal1989357241971137676463954034883508623
Base64AX8i4nmwfMOYxNwMDAc5jw==

Comment ça marche

Un UUID est un nombre de 128 bits écrit sous forme de 32 chiffres hexadécimaux répartis en cinq groupes (8-4-4-4-12). Il identifie un enregistrement sans demander à quiconque si la valeur est déjà prise : deux serveurs, deux applis mobiles ou deux processus peuvent créer des identifiants en même temps sans se coordonner et sans collision. Le format est défini par la RFC 9562, qui a remplacé la RFC 4122 en 2024 et ajouté les versions 6, 7 et 8.

Le chiffre qui ouvre le troisième groupe indique la version, et chaque version organise les bits différemment. La 4 est du pur hasard. La 7 commence par la date en millisecondes, si bien que les identifiants sont triés par création. Les versions 3 et 5 n'ont rien d'aléatoire : elles proviennent du hachage d'un espace de noms et d'un nom, et donnent donc toujours le même résultat. Les versions 1 et 6 contiennent une date précise à 100 nanosecondes et un nœud qui était historiquement l'adresse MAC de l'ordinateur.

L'analyseur fait le chemin inverse : il lit la version et la variante, récupère la date des UUID v1, v6 et v7 et des ULID, et affiche la même valeur écrite en GUID, URN, hexadécimal, entier ou Base64. Tout est calculé dans votre navigateur ; aucun identifiant n'est envoyé à un serveur.

Exemples

v5 · DNS · www.example.com2ed6657d-e927-568b-95e1-2665a8aea6a2C'est le vecteur de test de la RFC 9562. Toute bibliothèque qui implémente correctement la version 5 doit renvoyer exactement cette valeur pour ce nom dans l'espace DNS.
017F22E2-79B0-7CC3-98C4-DC0C0C07398F2022-02-22T19:22:22.000ZLes 12 premiers chiffres d'un UUID v7 sont les millisecondes Unix en hexadécimal : 0x017F22E279B0 vaut 1645557742000.
C232AB00-9414-11EC-B3C8-9F6BDECED8461EC9414C-232A-6B00-B3C8-9F6BDECED846Le même instant en version 1 et en version 6. La 6 réordonne les bits de la date du plus au moins significatif pour que le texte se trie chronologiquement ; la séquence d'horloge et le nœud ne changent pas.
01ARZ3NDEKTSV4RRFFQ69G5FAV01563e3a-b5d3-d676-4c61-efb99302bd5bUn ULID occupe les mêmes 128 bits qu'un UUID, il peut donc être stocké dans une colonne uuid. Mais il n'a ni version ni variante : lu comme un UUID, ces chiffres font partie de l'aléatoire.

Cas d'usage

  • Créer la clé primaire côté client ou dans plusieurs services à la fois, sans attendre que la base de données attribue un auto-incrément.
  • Générer des clés d'idempotence pour qu'un paiement ou une commande relancés ne soient pas traités deux fois.
  • Marquer chaque requête avec un identifiant de corrélation pour la suivre dans les logs de plusieurs microservices.
  • Dériver avec v5 un identifiant stable à partir d'une clé naturelle (un e-mail, une URL, un SKU) pour que deux systèmes obtiennent la même valeur sans partager de table.
  • Savoir quand un enregistrement a été créé à partir de son UUID v7 ou de son ULID lorsqu'il apparaît dans un log ou un rapport d'erreur.
  • Charger des données de test avec des centaines d'identifiants valides en une seule fois.

Questions fréquentes

v4 ou v7 pour une clé primaire ?

v7, sauf si vous avez une raison de masquer la date de création. Les index en arbre B stockent les clés dans l'ordre, et un v4 atterrit n'importe où dans l'index : chaque insertion touche une page différente, les pages se scindent et le cache est moins efficace. Un v7 va toujours à la fin, comme un auto-incrément. Attention à SQL Server : le type uniqueidentifier trie en commençant par les six derniers octets, donc un v7 n'y est pas séquentiel non plus.

Deux UUID v4 peuvent-ils se répéter ?

En théorie oui, en pratique non. Un v4 a 122 bits aléatoires, et pour atteindre 50 % de probabilité d'au moins une répétition il faudrait en générer environ 2,7 × 10¹⁸, soit un milliard par seconde pendant plus de 85 ans. La condition est d'utiliser un générateur cryptographique : les vrais doublons signalés viennent de graines mal initialisées, pas des mathématiques.

UUID et GUID, c'est la même chose ?

Oui, GUID est le nom employé par Microsoft et le texte est identique ; sous Windows il apparaît généralement en majuscules et entre accolades. La différence est dans le binaire : Guid.ToByteArray de .NET stocke les trois premiers groupes en little-endian, donc si vous lisez ces octets bruts depuis un autre langage vous verrez les premiers chiffres inversés.

Puis-je utiliser un UUID comme jeton secret ?

Un v4 bien généré possède 122 bits imprévisibles, ce qui suffit pour un lien difficile à deviner, mais la RFC 9562 précise que les UUID ne sont pas conçus comme des identifiants secrets : beaucoup de bibliothèques ne garantissent pas un générateur cryptographique, et les versions 1, 6 et 7 révèlent la date de création. Pour des jetons de session ou de réinitialisation de mot de passe, mieux vaut générer des octets aléatoires dédiés.

ULID ou UUID v7 ?

Ils contiennent presque la même information : 48 bits de millisecondes et le reste aléatoire. L'ULID s'écrit en 26 caractères sans tirets ni lettres ambiguës, plus pratique dans une URL. Le v7 est un UUID standard, il entre donc dans les colonnes uuid de PostgreSQL et dans n'importe quel validateur sans conversion. Si vous partez de zéro et que votre base a un type uuid, choisissez v7.

Pourquoi le nœud de mes UUID v1 n'est-il pas mon adresse MAC ?

Parce qu'exposer l'adresse MAC de la carte réseau permet de retrouver la machine qui a créé chaque identifiant, et c'est ainsi que l'auteur du virus Melissa a été identifié en 1999. La RFC 9562 recommande un nœud aléatoire avec le bit multicast activé, ce que fait cet outil ; l'analyseur vous prévient quand un UUID v1 contient une vraie adresse MAC.