Générateur UUID v7

Générez des UUID v7 en ligne : UUID triables par temps avec horodatage milliseconde de 48 bits et 74 bits aléatoires.

Format
Identifiants générés
Prêt. Générez des UUID v7 dans votre navigateur.

Comment cet ID est construit

Structure
Horodatage Unix milliseconde de 48 bits, bits de version 7, bits de variante RFC et remplissage aléatoire.
Entropie
74 bits aléatoires dans cette implémentation ; il n’y a pas de compteur monotone.
Temps
Oui. Les 48 premiers bits encodent le moment de création, donc les IDs se trient par temps entre millisecondes différentes.
Risque de collision
Dans une même milliseconde, les collisions dépendent de 74 bits aléatoires ; à volume extrême, mieux vaut un service d’ID coordonné.
Exemple
01a044bc-5fa6-7615-b84f-9d0d02f3b765

Vos identifiants sont générés localement avec l’aléa fort du navigateur. Rien n'est envoyé à BroBroGo.

FAQ

Pourquoi choisir UUID v7 plutôt que UUID v4 ?

UUID v7 garde la forme UUID mais se trie par temps, utile pour les logs, index de base de données et flux d’événements presque chronologiques.

UUID v7 masque-t-il l’heure de création ?

Non. L’horodatage fait partie de l’ID. Utilisez UUID v4 ou NanoID si vous voulez un identifiant opaque sans donnée temporelle.

Comprendre la structure de l’UUID v7

L’UUID v7 est un identifiant unique universel de 128 bits représenté sous forme de chaîne de 36 caractères. Sa particularité est d’enchâsser un horodatage Unix en millisecondes sur 48 bits en tête de l’identifiant, suivi de 74 bits aléatoires (les 6 bits restants servent à la version et à la variante). Concrètement, les premiers caractères de la chaîne – par exemple 01F8M9P6- – codent la date et l’heure de création, ce qui permet de trier les ID par ordre chronologique de génération.

Cette structure répond à un besoin précis: améliorer la localité d’index dans les bases de données. Contrairement à l’UUID v4, dont les 122 bits aléatoires produisent un désordre total, l’UUID v7 groupe les enregistrements créés à peu près au même moment dans une même zone de l’index B‑tree. Les insertions deviennent ainsi plus rapides et la fragmentation des tables est réduite.

Il faut toutefois retenir une nuance importante: l’UUID v7 ne garantit pas un ordre strict entre des identifiants générés pendant la même milliseconde. Si deux ID sont créés au même instant, leur classement relatif dépend de la portion aléatoire, ce qui peut briser l’ordre temporel fin. Ce compromis est intentionnel: il permet à plusieurs générateurs de produire des ID simultanément sans coordination, tout en restant statistiquement uniques.

Fonctionnement du générateur UUID v7 de BroBroGo

L’outil propose une interface simple: vous choisissez un nombre d’identifiants à générer (entre 1 et 100 inclus), activez ou non l’affichage en majuscules et l’inclusion des tirets, puis la page vous renvoie immédiatement la liste.

Les réglages sont les suivants:

  • Format: fixé à UUID v7 (sélectionnable dans un sélecteur, car la page pourrait offrir d’autres formats, mais ici seul v7 est décrit).
  • Nombre: un champ numérique, validé pour rester dans l’intervalle 1‑100.
  • Majuscules: un interrupteur qui transforme les lettres hexadécimales (a‑f) en majuscules (A‑F). Exemple: 01f8m9p6‑... devient 01F8M9P6‑....
  • Tirets: un interrupteur qui retire ou insère les tirets aux positions standard (8‑4‑4‑4‑12). Sans tirets, la chaîne fait 32 caractères au lieu de 36.

Dès que vous modifiez une option – que ce soit le nombre, le cas ou la présence des tirets – tous les ID sont régénérés instantanément. Aucun bouton « Générer » n’est nécessaire, ce qui évite les manipulations inutiles.

La liste affichée peut être copiée de deux façons:

  • Copie individuelle: en cliquant sur un ID, cet ID précis est copié dans le presse‑papiers.
  • Copie collective: un bouton permet de copier tous les ID en une fois. L’interface affiche alors temporairement « Copied all! » pour confirmer l’action.

L’état de l’outil est indiqué en bas: « Ready. » lorsqu’il n’y a pas eu de génération, « Generated. » après la première génération, et « Copied all! » lors de la copie groupée.

Toute la génération se déroule localement dans le navigateur, en utilisant l’API crypto.getRandomValues pour produire des bits aléatoires cryptographiquement forts. Aucune donnée n’est envoyée au serveur de BroBroGo. Votre vie privée et la confidentialité des identifiants sont donc préservées.

Pourquoi l’UUID v7 surpasse l’UUID v4 pour les bases de données

L’UUID v4, bien que très répandu, souffre d’un défaut majeur: ses bits sont entièrement aléatoires (sauf 6 bits réservés). Insérer des lignes avec une clé primaire UUID v4 dans une table indexée par B‑tree force la base de données à réorganiser fréquemment les pages d’index, car les nouvelles valeurs se dispersent aléatoirement dans l’arbre. Ce phénomène, appelé fragmentation d’index, ralentit les insertions et augmente l’espace de stockage.

L’UUID v7 atténue ce problème en plaçant un horodatage au début. Les ID créés successivement tombent dans des plages de valeurs voisines, ce qui permet à la base de données d’insérer les nouvelles lignes à la fin de l’index (ou près de la fin), sans avoir à réorganiser constamment les pages existantes. Le gain de performance en écriture est significatif, surtout pour les tables qui reçoivent un grand nombre d’insertions simultanées.

Comparaison rapide:

Propriété UUID v4 UUID v7
Ordre chronologique Aucun Oui, par milliseconde (sauf collisions temporelles)
Localité d’index Mauvaise Bonne
Collision Extrêmement rare (122 bits aléatoires) Extrêmement rare (74 bits aléatoires + horodatage)
Format 36 caractères (8‑4‑4‑4‑12) 36 caractères (8‑4‑4‑4‑12)
Unguessabilité Excellente Excellente (partie aléatoire cryptographique)

Il est important de noter que l’UUID v7 n’est pas strictement monotone à l’intérieur d’une même milliseconde, contrairement à ULID ou à certaines implémentations de UUID v1. Ce compromis est acceptable dans la plupart des applications, car les ID générés au même instant restent triables de façon déterministe (par leur partie aléatoire) et restent uniques.

Cas d’utilisation et applications concrètes

L’UUID v7 est particulièrement adapté aux architectures où l’on a besoin à la fois d’identifiants imprévisibles et d’un classement temporel. Voici quelques contextes typiques:

  • Systèmes distribués: chaque nœud peut générer des ID sans coordination centrale. L’horodatage intégré permet de reconstituer l’ordre de création des événements, même si les nœuds ne sont pas synchronisés à la milliseconde près.
  • Bases de données relationnelles: les clés primaires UUID v7 réduisent la fragmentation des index B‑tree, ce qui améliore les performances des INSERT et des SELECT sur des plages de dates.
  • Traçabilité et audit: les identifiants portent leur date de génération, ce qui simplifie l’analyse des journaux et des pistes d’audit sans avoir à stocker un champ timestamp séparé.
  • Messagerie et files d’attente: les messages peuvent être ordonnés approximativement par leur ID, facilitant le traitement FIFO.

Un développeur qui migre d’UUID v4 vers v7 constate souvent une amélioration notable des temps d’écriture sur des tables volumineuses. Toutefois, il faut garder à l’esprit que l’UUID v7 n’est pas un remplacement direct de l’UUID v1 (qui ordonne strictement les ID générés sur une même machine). Pour des applications exigeant un ordre total par date de création, ULID ou des variantes ordonnancées restent préférables.

Précautions et limites à connaître

Malgré ses avantages, l’UUID v7 comporte des limites qu’il faut comprendre avant de l’adopter.

  1. Ordre non garanti intra‑milliseconde: si deux ID sont générés dans la même milliseconde, leur ordre est arbitraire du point de vue temporel. Ce n’est pas un problème pour la plupart des bases de données, mais cela peut surprendre les développeurs habitués à une séquence strictement croissante.

  2. Taille fixe: l’UUID v7 fait toujours 36 caractères (ou 32 sans tirets). Dans certains contextes où l’espace de stockage est compté (par exemple, dans des URL ou des jetons très courts), des formats comme NanoID (21 caractères) peuvent être plus adaptés.

  3. Dépendance à l’horloge système: l’horodatage est tiré de l’heure locale du navigateur ou du serveur. Si l’horloge est déréglée, l’ordre temporel peut devenir erroné. Toutefois, dans un navigateur, l’API Date.now() est généralement fiable.

  4. Limite de 100 ID par génération: l’outil impose un maximum de 100 identifiants par requête. Cela permet d’éviter des temps de traitement trop longs et de garder l’interface réactive. Pour générer plus d’ID, il faut lancer plusieurs fois l’outil.

  5. Pas de transmission au serveur: toutes les opérations sont locales. Si vous avez besoin de générer des ID côté serveur, il faudra utiliser une bibliothèque adaptée. L’outil de BroBroGo est conçu pour un usage ponctuel et de test.

Enfin, bien que l’UUID v7 soit défini dans un standard (RFC 9562), son adoption est encore récente. Vérifiez que votre pile technologique le supporte nativement avant de l’utiliser en production.

Foire aux questions (FAQ)

Q: Quelle est la différence entre UUID v7 et UUID v4?
R: L’UUID v7 commence par un horodatage Unix en millisecondes (48 bits), ce qui le rend triable par ordre de création. L’UUID v4 est entièrement aléatoire (122 bits). Le v7 améliore la localité d’index dans les bases de données, tandis que le v4 provoque de la fragmentation.

Q: L’UUID v7 garantit‑il un ordre strict pour des ID générés dans la même milliseconde?
R: Non. La partie horodatage est identique pour des ID créés au même instant, et l’ordre est alors déterminé par la partie aléatoire. Il n’y a pas de séquence garantie. ULID ou UUID v1 offrent un ordre plus fin à l’intérieur d’une milliseconde.

Q: Combien d’UUID v7 puis‑je générer en une seule fois avec l’outil?
R: Entre 1 et 100. Le champ de saisie valide les valeurs hors de cet intervalle. Pour obtenir plus d’ID, il faut relancer l’outil.

Q: Mes données sont‑elles envoyées à un serveur lorsque je génère des ID?
R: Non. La génération se fait entièrement dans votre navigateur à l’aide de l’API crypto.getRandomValues. Aucune information n’est transmise à BroBroGo.

Q: Puis‑je copier tous les ID d’un coup?
R: Oui. La page affiche un bouton qui copie la totalité de la liste dans le presse‑papiers. Vous recevrez la confirmation « Copied all! ».

Q: Pourquoi l’outil limite‑t‑il le nombre d’ID à 100?
R: Pour assurer une réactivité immédiate de l’interface et éviter de surcharger le navigateur. La génération d’un grand nombre d’ID en une fois n’apporte pas de gain pratique pour les tests courants.