Comment fonctionnent vraiment les codes QR : des pixels aux données
Comment un code QR transforme une grille de carrés noirs et blancs en un lien, un message ou des identifiants Wi-Fi — le processus de scan et de décodage expliqué simplement.
Comprendre le fonctionnement des codes QR revient à suivre un tout petit voyage : un appareil photo voit une grille de carrés noirs et blancs, s'oriente, échantillonne chaque carré comme un 1 ou un 0, puis reconstruit le message d'origine — le tout en une fraction de seconde.
On dirait de la magie lorsque l'on pointe son téléphone vers une affiche et qu'un site web apparaît. Mais il n'y a aucune magie — juste une chaîne de traitement magnifiquement conçue qui transforme des pixels en données. Parcourons-la étape par étape, du moment où la lumière atteint l'appareil photo à l'instant où le lien surgit. 🐾
De quoi est fait un code QR ?
Un code QR est une grille de petits carrés appelés modules. Chaque module est soit sombre, soit clair, et cette obscurité ou clarté représente un seul chiffre binaire — un bit. Le sombre signifie généralement 1 ; le clair signifie généralement 0. Enchaînez assez de ces bits et vous obtenez des octets, et à partir des octets vous pouvez construire du texte, des liens ou n'importe quoi d'autre.
Si les bits et les octets vous semblent flous, notre initiation au binaire, aux bits et aux octets est un bon point de départ tout en douceur. En résumé : tout dans un code QR se ramène à des uns et des zéros.
Étape 1 : comment un scanneur trouve-t-il le code ?
Avant de pouvoir lire quoi que ce soit, le scanneur doit répondre à deux questions : Où est le code ? et Dans quel sens est-il tourné ? Les codes QR résolvent cela avec trois grands carrés imbriqués dans les coins, appelés motifs de repérage (finder patterns).
Chaque motif de repérage présente un rapport très précis de sombre-clair-sombre lorsqu'on le traverse d'une ligne de scan — 1:1:3:1:1. Ce rapport est rare dans les images ordinaires, si bien que le logiciel peut balayer l'image, repérer trois de ces marqueurs et savoir immédiatement qu'il regarde un code QR. Comme il y en a trois (et non quatre), le scanneur peut aussi déterminer quel coin manque et donc dans quel sens le code est tourné.
C'est le « Quick » de Quick Response : ces trois carrés d'angle permettent de lire le code sous presque n'importe quel angle, y compris à l'envers.
Étape 2 : comment aligne-t-il la grille ?
Trouver le code ne suffit pas — le scanneur doit superposer une grille précise pour savoir exactement où se trouve chaque module. Plusieurs éléments l'aident ici :
- Motifs de synchronisation : une ligne pointillée de modules sombres et clairs alternés qui court entre les motifs de repérage, jouant le rôle d'une règle qui indique au scanneur la taille et le nombre de modules.
- Motifs d'alignement : des carrés imbriqués plus petits (présents dans tous les codes sauf les plus minuscules) qui permettent au scanneur de corriger la perspective et la courbure, pour qu'un code sur une canette bombée ou sur un téléphone incliné reste lisible.
- Informations de version et de format : des bandes réservées près des repères qui indiquent au scanneur la taille du code et ses réglages de correction d'erreurs.
Chacune de ces parties a un rôle — notre guide sur l'anatomie d'un code QR les nomme et les situe toutes.
Étape 3 : comment transforme-t-il les carrés en bits ?
Une fois la grille verrouillée, le scanneur échantillonne le centre de chaque module et décide : est-il sombre ou clair ? Le sombre devient 1, le clair devient 0. L'image s'est désormais transformée en un long flux de bits disposés selon un parcours en zigzag précis qui serpente de haut en bas le long des colonnes du code.
Le masque doit d'abord être retiré
Voici une subtilité. Pour garder le code lisible, les encodeurs QR brouillent le motif à l'aide d'un masque — un motif répétitif appliqué par XOR sur les données afin de disperser les grands blocs de carrés d'une même couleur qui perturberaient les scanneurs. Les informations de format indiquent au lecteur lequel des huit masques a été utilisé, pour qu'il puisse l'inverser. Notre article sur le masquage des données explique pourquoi cette texture d'apparence aléatoire est délibérée.
Étape 4 : comment corrige-t-il les erreurs ?
Dans le monde réel, les codes se rayent, se salissent, s'impriment mal ou se font partiellement recouvrir par un logo. Les codes QR gèrent cela grâce à la correction d'erreurs de Reed–Solomon, une méthode mathématique qui ajoute des données redondantes afin que le message d'origine puisse être reconstruit même lorsqu'une partie manque ou est erronée.
Selon le niveau choisi lors de la création du code — L, M, Q ou H — le code peut récupérer d'environ 7 %, 15 %, 25 % ou 30 % de dommages. Le scanneur utilise les octets de correction d'erreurs pour détecter et réparer les erreurs avant le décodage. Nos guides sur la correction d'erreurs QR et sur Reed–Solomon, expliqué simplement vont plus loin sans l'algèbre lourde.
| Niveau | Récupération | Idéal pour |
|---|---|---|
| L | ~7 % | Écrans numériques nets |
| M | ~15 % | Impression courante |
| Q | ~25 % | Environnements industriels ou sales |
| H | ~30 % | Logos, conditions difficiles |
Étape 5 : comment décode-t-il le message ?
Le scanneur dispose maintenant de bits propres. Les premiers bits forment un indicateur de mode qui précise le type de données qui suit — numérique, alphanumérique, octet (pour le texte général et les URL) ou Kanji. Les bits suivants donnent la longueur. Puis les bits de données proprement dits sont interprétés selon ce mode. Notre article sur les modes d'encodage détaille chacun d'eux.
Une fois les octets décodés en texte, le téléphone reconnaît de quoi il s'agit — une URL, des identifiants Wi-Fi, une carte de contact — et propose l'action appropriée, comme ouvrir un navigateur. Et voilà toute la chaîne : localiser → aligner → échantillonner → démasquer → corriger les erreurs → décoder.
Pourquoi la zone de silence est-elle importante ?
Un ingrédient facilement oublié se trouve à l'extérieur du code : la zone de silence (quiet zone), une marge unie (d'environ quatre modules de large) qui entoure l'ensemble. Sans elle, un texte ou un visuel voisin peut déborder sur les motifs de repérage et le scanneur ne parvient jamais à s'accrocher. C'est la raison pour laquelle un code collé contre d'autres contenus refuse parfois tout simplement de se lire. Consultez notre article sur la zone de silence pour comprendre pourquoi cet espace vide gagne sa place.
Puis-je observer cela moi-même ?
En quelque sorte ! Un œil averti peut repérer les motifs de repérage, lire les bits de format et même déterminer le mode d'encodage à la main. C'est un exercice amusant — notre article sur la lecture d'un code QR à l'œil nu montre jusqu'où vous pouvez aller avant que le masquage ne rende la chose trop délicate.
Si vous souhaitez un code propre et honnête à examiner, vous pouvez créer un code QR gratuit avec QR Puppy — statique, sans suivi, sans expiration.
Questions fréquentes
À quelle vitesse un code QR se scanne-t-il ?
Généralement en une fraction de seconde. Les téléphones modernes exécutent la chaîne localiser-aligner-échantillonner-décoder en continu sur le flux de l'appareil photo, si bien qu'à l'instant où un code valide remplit une partie suffisante du cadre, il se décode presque instantanément.
Pourquoi puis-je scanner un code QR à l'envers ?
Les trois motifs de repérage occupent trois coins, pas quatre. En détectant quel coin est dépourvu de motif de repérage, le scanneur détermine l'orientation du code et le fait pivoter mentalement avant de le lire — n'importe quel angle fonctionne donc.
La couleur d'un code QR affecte-t-elle le scan ?
Oui. Les scanneurs s'appuient sur le contraste entre les modules sombres et clairs. Le noir sur blanc est le plus sûr ; les combinaisons de couleurs à faible contraste ou inversées peuvent échouer. Si vous devez utiliser de la couleur, gardez les modules sombres réellement sombres et le fond réellement clair.
Que se passe-t-il si une partie du code manque ?
Grâce à la correction d'erreurs de Reed–Solomon, un code peut perdre environ 7 % à 30 % de lui-même (selon son niveau) et se décoder quand même. Au-delà de ce seuil, le scanneur ne peut plus reconstruire les données et le code ne se lit plus.
Deux codes QR différents peuvent-ils contenir les mêmes données ?
Deux codes ayant les mêmes données, la même version, le même niveau d'erreur et le même masque auront un aspect identique. Modifiez n'importe quel choix d'encodage — comme le masque ou le niveau d'erreur — et le même message peut produire un code à la texture différente mais tout aussi valide.
Créez un QR code de façon honnête 🐾
Gratuit pour toujours, sans suivi, sans expiration — généré directement dans votre navigateur.