Chaque code ici est statique. Le contenu est encodé dans le motif lui-même, le code est donc la donnée. Il n'y a pas de redirection par POLPROG, pas de lien court, pas de compte et rien qui puisse expirer ou être coupé. Un code généré aujourd'hui mènera au même contenu dans dix ans, que ce site existe encore ou non.
C'est l'inverse d'un QR code dynamique ou traçant, qui encode un lien vers le serveur d'un tiers et cesse de fonctionner dès que ce service ferme, change ses tarifs ou perd son domaine.
Ce qu'il sait encoder
Lien, texte brut, identifiants Wi-Fi, contact vCard, e-mail, SMS, téléphone, WhatsApp, position géographique et événement d'agenda. Chaque type a son propre formulaire, et chaque champ est validé au regard du format dans lequel il sera encodé, si bien qu'un code Wi-Fi portant un mot de passe et une carte de contact portant un nom ressortent tous deux bien formés.
L'encodeur
Un encodeur ISO/IEC 18004 complet, écrit comme un module de ce site plutôt que tiré comme une dépendance : découpage de l'entrée en séquences numériques, alphanumériques et octets, choix de la plus petite version qui convient, construction du flux de bits, correction Reed-Solomon, placement des données selon le parcours en zigzag, puis essai des huit masques avec conservation de la plus faible pénalité, exactement comme la norme l'exige. Écrire un encodeur ne se défend que s'il est vérifié plutôt que cru, ses matrices finales sont donc comparées bit à bit à une implémentation de référence éprouvée, pour chaque mode, chaque niveau de correction et un éventail de versions, avec en plus un aller-retour de décodage.
Avant de l'imprimer
Un QR code qui paraît correct à l'écran peut rester illisible sur papier, aussi le générateur juge-t-il le résultat au lieu de se contenter de le dessiner :
- Le contraste entre vos deux couleurs, avec un avertissement au-dessous d'environ 3:1, seuil à partir duquel les lectures commencent à échouer.
- L'inversion, car la plupart des décodeurs attendent du sombre sur clair et certains ne lisent pas du tout l'inverse.
- La taille des modules à la taille d'export choisie, car un symbole peut être plus dense que l'appareil censé le résoudre.
- La zone de silence, la bordure claire par laquelle le lecteur trouve le début du symbole. La norme demande quatre modules ; en dessous il avertit, à zéro il refuse.
- La couverture du logo, mesurée au regard du budget de correction d'erreurs plutôt qu'estimée.
La couverture croît avec le carré de la largeur, et c'est là que la surprise se joue : un logo large de 30 pour cent du code en masque 9 pour cent, et un logo de moitié en masque 25 pour cent. Ajouter un logo relève automatiquement le niveau de correction, un logo au-delà de la moitié du budget est signalé, et au-delà du budget entier il est refusé.
Où il s'exécute
Entièrement dans votre navigateur. L'encodeur, l'aperçu, la composition du logo et l'export PNG et SVG tournent en local, et il n'existe aucun point d'API derrière cette page, si bien qu'une clé Wi-Fi, un numéro de téléphone privé ou une carte de contact n'ont nulle part où être envoyés, même par accident. Un logo que vous ajoutez est lu avec FileReader et n'est jamais téléversé. Ouvrez le panneau réseau de votre navigateur pendant que vous utilisez l'outil : il reste vide.