
Combien de QR codes différents peuvent exister ?
Le plus grand QR code défini par la norme contient 2 953 octets. Chaque suite différente de 2 953 octets est un contenu différent, donc le nombre de contenus possibles est 256 à la puissance 2 953. Écrit en décimal, c'est un nombre de 7 112 chiffres qui commence par 3,4. Rien de physique ne se compte avec des nombres de cette taille.
C'est une réponse, et elle est exacte pour ce qu'elle mesure. La question paraît glissante parce que « combien de QR codes sont possibles » peut vouloir dire au moins trois choses différentes, et les trois ont des réponses très différentes.
Décidez ce que vous comptez
Trois candidats, chacun légitime.
Le nombre de contenus distincts qu'un QR code peut porter. C'est celui qui sert. Deux codes portant la même chaîne sont le même code à toutes fins pratiques, même si l'un a été généré à une version plus haute avec un masque différent.
Le nombre de symboles valides distincts, c'est-à-dire de motifs de modules qui se décodent réellement. Plus grand, parce qu'un même contenu peut être encodé à de nombreuses versions, à quatre niveaux de correction d'erreurs, avec l'un de huit masques appliqué, et chacun de ces cas est une image différente de la même information.
Le nombre de motifs de modules distincts dans une grille de cette taille, valides ou non. Le plus grand des trois et presque dépourvu de sens, puisque l'écrasante majorité d'entre eux ne sont pas du tout des QR codes.
Ce qui suit compte le premier, et énonce chaque borne pour ce qu'elle est plutôt que comme un recensement exact de quoi que ce soit.
La borne à la plus grande version
La version 40 au niveau de correction d'erreurs le plus bas est la configuration de capacité maximale : 7 089 caractères numériques, 4 296 caractères alphanumériques, 2 953 octets ou 1 817 kanji. Ces plafonds viennent des tables de capacité, et chaque mode produit un décompte différent.
En mode octet, un contenu de 2 953 octets exactement a 256 possibilités par octet, ce qui donne 256 puissance 2 953 contenus. En puissance de deux, cela fait 2 puissance 23 624, qui en décimal a 7 112 chiffres.
En mode numérique le plafond est de 7 089 chiffres, soit environ 10 puissance 7 089 nombres distincts de cette longueur. Moins que le chiffre du mode octet, ce qui est la bonne relation : le mode numérique tasse plus de caractères mais moins de valeurs possibles par caractère.
Deux réserves gardent tout cela honnête. Ces décomptes portent sur des contenus de la longueur maximale exacte. Inclure tous les contenus plus courts relève le total d'un facteur un peu supérieur à la base divisée par la base moins un, ce qui ne change rien à cette échelle. Et le chiffre du mode octet suppose que n'importe quelle chaîne d'octets est un contenu légal, ce qu'elle est en mode octet brut, même là où un décodeur présenterait le résultat comme du texte illisible.
La version 1 dépasse déjà l'internet
La partie intéressante de l'arithmétique est la vitesse à laquelle elle cesse de compter.
La version 1 est une grille de 21 par 21, le plus petit symbole qui existe, assez clairsemé pour être redessiné sur du papier millimétré. Au niveau de correction d'erreurs le plus bas, elle porte 17 octets. Le décompte des contenus de 17 octets est 256 puissance 17, soit exactement 87 112 285 931 760 246 646 623 899 502 532 662 132 736 : quarante et un chiffres, environ 8,7 fois 10 puissance 40.
À titre de comparaison, l'espace d'adressage IPv6 entier est 2 puissance 128, environ 3,4 fois 10 puissance 38. Le plus petit QR code qui existe porte plus de contenus distincts qu'il n'y a d'adresses dans le protocole conçu pour numéroter chaque appareil sur Terre jusqu'à la fin des temps.
Les estimations placent le nombre d'atomes de l'univers observable autour de 10 puissance 80. Un code en version 2 dépasse cela. Tout ce qui est au-dessus de la version 2 est de l'arithmétique sans aucun référent physique, ce qui explique pourquoi la réponse honnête à la question initiale est une borne et non un décompte d'objets.
Le décompte des motifs, pour être complet
Ignorez la validité et demandez plutôt combien d'images en noir et blanc tiennent dans une grille de version 40. Cette grille fait 177 par 177, soit 31 329 positions de module, donc 2 puissance 31 329 motifs : un nombre à 9 431 chiffres.
Presque aucun ne se décode. Les trois motifs de repérage et leurs séparateurs sont fixes. Les motifs de synchronisation sont fixes. Les motifs d'alignement sont fixes. Les informations de format et de version sont contraintes. Les modules de données portent des mots de code de correction d'erreurs calculés à partir des données, donc la plupart des combinaisons de bits sont invalides par construction, et l'un de huit masques a été appliqué par-dessus tout cela. Les éléments structurels qui rendent un code lisible sont exactement ceux qui font de ce décompte une surestimation d'une marge énorme.
C'est une borne supérieure véritable et une réponse inutile. Ne la citez que si quelqu'un demande précisément combien d'images pourraient tenir dans la grille.
La contrainte est l'URL, pas le format
Personne n'a jamais été à court de QR codes. Ce dont les gens manquent, c'est de place sur l'objet.
Chaque caractère ajouté pousse le contenu vers la version suivante, chaque version ajoute quatre modules par côté, et à largeur imprimée fixe, plus de modules signifie que chacun est plus étroit. Quelque part en dessous de la résolution de votre procédé d'impression ou de l'appareil photo qui vient flasher le code, les lectures commencent à échouer aux bords de la plage de lumière et d'angle. Cette échelle est déroulée dans les versions 1 à 40, et sa fin physique se trouve dans le guide des tailles.
Donc la question de capacité qui compte n'est jamais combien de codes existent. C'est jusqu'où vous pouvez raccourcir la seule chaîne que vous encodez. Une redirection de 40 caractères et une URL de 240 caractères portant cinq paramètres de suivi sont identiques du point de vue du visiteur, et à environ trois versions d'écart sur l'étiquette.
Et en France ?
Pour donner une idée de l'échelle, comparons avec un jeu que tous les Français connaissent : le Loto de la Française des Jeux. Pour trouver la bonne combinaison et remporter le gros lot, il y a environ une chance sur 19 millions.
Le nombre de QR codes possibles de la plus grande version est un nombre de plus de sept mille chiffres. Autrement dit, tomber par hasard sur le même code qu'un autre est infiniment moins probable que de gagner le Loto des milliers de fois de suite. Le risque réel de collision ne vient jamais du format, mais des identifiants courts choisis par les outils de codes dynamiques, d'où l'intérêt de choisir un prestataire sérieux.
Le nombre qui, lui, s'épuise
Il existe malgré tout un terrain suffisamment restreint pour mériter une vraie planification, et ce n'est pas le format lui-même : c'est l'espace des identifiants courts qui se cachent derrière vos codes dynamiques, celui que votre propre système distribue code après code.
Un lien court utilisant six caractères tirés des majuscules, des minuscules et des chiffres donne 62 puissance 6, soit environ 56,8 milliards de valeurs. Sept caractères en donnent environ 3 500 milliards. Ce sont les nombres à vérifier quand vous frappez des identifiants article par article, parce que, contrairement au format lui-même, ils sont finis d'une manière qu'un système réel peut atteindre.
Une limite plus tranchante se cache à l'intérieur de celle-là. Si les identifiants sont distribués séquentiellement, l'espace que vous pouvez utiliser en sécurité n'est pas l'espace entier, parce que n'importe qui peut deviner le suivant. S'ils sont tirés au hasard, les collisions deviennent probables bien avant que l'espace ne soit plein, autour de la racine carrée de sa taille, donc un espace de 56,8 milliards commence à produire des collisions au bout de quelques centaines de milliers de tirages si vous ne vérifiez pas à l'insertion. C'est une contrainte d'ingénierie réelle, et c'est le seul nombre de cet article que quiconque atteindra vraiment.
Encodez votre URL réelle la plus longue et votre version redirigée la plus courte du même lien, posez les deux symboles côte à côte, et comptez les modules de chacun. Cette différence est le seul chiffre de capacité qui change ce que vous imprimez.


