Correction d’erreur et taille des QR codes : L, M, Q et H testés
Une correction d’erreur plus forte permet à un QR code de survivre aux dégâts, mais le rend aussi plus dense. Nous avons généré des codes pour quatre contenus courants à chaque niveau et les avons couverts petit à petit jusqu’à ce qu’ils ne se lisent plus.
Tout générateur de QR code demande un niveau de correction d’erreur : L, M, Q ou H. L’explication habituelle est qu’un niveau plus élevé permet au code de supporter plus de dégâts. C’est vrai, mais cela a un coût rarement mentionné, et la tolérance réelle est plus faible que les chiffres généralement cités. Nous avons généré des codes pour quatre types de contenu courants à chaque niveau, puis les avons masqués petit à petit jusqu’à ce que notre lecteur ne puisse plus les lire.
Ce que fait la correction d’erreur
Un QR code stocke son contenu sous forme d’une suite d’octets, appelés mots de code, et y ajoute des mots de code supplémentaires calculés à partir d’eux avec le codage de Reed-Solomon, la même technique que sur les CD. Si certains mots de code sont abîmés, les mots supplémentaires permettent au lecteur de les reconstruire. Les quatre niveaux fixent la part du code consacrée à cela :
| Niveau | Mots de code récupérables | Conseil habituel |
|---|---|---|
| L (bas) | Environ 7 % | Écrans et documents propres |
| M (moyen) | Environ 15 % | Le choix par défaut courant |
| Q (quartile) | Environ 25 % | Impression, extérieur, logos |
| H (haut) | Environ 30 % | Conditions difficiles, grands logos |
Les mots de code supplémentaires occupent une place qui contiendrait sinon du contenu. Pour un même contenu, un niveau plus élevé demande une grille de carrés (appelés modules) plus grande.
De combien le code grandit

| Contenu | Caractères | L | M | Q | H |
|---|---|---|---|---|---|
| Lien court | 19 | 25 × 25 | 25 × 25 | 25 × 25 | 29 × 29 |
| Identifiants Wi-Fi | 61 | 33 × 33 | 33 × 33 | 41 × 41 | 45 × 45 |
| Lien avec codes de suivi | 89 | 37 × 37 | 41 × 41 | 49 × 49 | 53 × 53 |
| Carte de contact | 202 | 53 × 53 | 57 × 57 | 65 × 65 | 77 × 77 |
Un lien court tient dans la plus petite grille à trois niveaux sur quatre, car cette grille a de la place libre. Un contenu plus long grandit vite : la carte de contact au niveau H demande 77 × 77 modules, presque dix fois la surface du lien court.
C’est important, car ce que l’appareil photo doit voir, c’est le module, pas le code. Sur un code imprimé de 2,5 cm de large, le lien court a des modules de 1 mm, et la carte de contact au niveau H des modules de 0,3 mm, à peu près la taille d’un grain de sel. Ce sont les petits modules qui font échouer les codes sur les impressions de mauvaise qualité, à distance et sous une faible lumière.
Combien de dégâts un code supporte
Pour tester les niveaux, nous avons masqué le centre de chaque code avec un carré blanc, là où l’on place généralement un logo, et augmenté sa taille d’un pour cent de la surface du code à la fois, jusqu’à l’échec du lecteur de notre lecteur de QR code.
| Contenu | L | M | Q | H |
|---|---|---|---|---|
| Lien court | 5 % | 6 % | 9 % | 16 % |
| Identifiants Wi-Fi | 5 % | 8 % | 14 % | 19 % |
| Lien avec codes de suivi | 7 % | 11 % | 20 % | 20 % |
| Carte de contact | 8 % | 12 % | 19 % | 15 % |

Deux choses ressortent. D’abord, la tolérance réelle était plus faible que les chiffres de la norme, souvent d’un tiers ou plus. Un carré masqué coupe des mots de code sur ses bords, en abîmant plus que sa taille ne le laisse penser, et il peut cacher des repères d’alignement dont le lecteur se sert pour trouver la grille. Ensuite, les niveaux les plus élevés n’ont pas toujours gagné : sur la carte de contact, H a échoué avant Q. Les codes plus grands ont plus de repères d’alignement qu’un carré centré peut toucher, et chaque lecteur gère les dégâts un peu différemment.
La leçon pratique est de garder une marge. Si un code doit supporter des dégâts, ne comptez pas utiliser toute sa correction d’erreur.
Les logos dans les QR codes
Un logo fonctionne en abîmant volontairement le code et en comptant sur la correction d’erreur pour le réparer. Notre générateur de QR code relève le niveau à Q quand vous ajoutez un logo, s’il était plus bas, et limite la surface cachée par le logo à une part de ce que ce niveau peut récupérer. Nous avons vérifié toutes les combinaisons de nos quatre types de contenu, des niveaux M, Q et H et de tailles de logo de 24 à 40 %, la plus grande que propose le générateur : toutes ont été lues.
Faire un QR code qui se lit à tous les coups
- Gardez un contenu court. Utilisez un lien court plutôt qu’un long lien avec des codes de suivi. C’est le plus gros gain, car moins de modules signifie des modules plus grands.
- Prenez M pour les écrans et les impressions propres, Q pour les affiches, les emballages et tout ce qui porte un logo. Ne prenez H que pour un contenu court, pour que la grille reste petite.
- Imprimez-le assez grand. Une règle courante veut une largeur de code d’au moins un dixième de la distance de lecture : 3 cm pour un chevalet de table lu à 30 cm, 30 cm pour une affiche lue à 3 mètres.
- Gardez un fort contraste et une marge. Des carrés foncés sur fond clair, et une bordure libre d’au moins quatre modules. Les codes clairs sur fond foncé ne sont pas lus par toutes les applications.
- Testez avant d’imprimer, avec un vieux téléphone comme avec un récent, à la vraie distance.
Les codes créés avec notre générateur sont statiques : le contenu est dans le code lui-même, il fonctionne donc pour toujours et ne dépend d’aucun service. Certains services font des codes « dynamiques » qui pointent vers leur propre serveur et redirigent de là, ce qui permet de changer la destination plus tard, mais cesse de fonctionner si le service ou votre abonnement prend fin.
Questions et réponses
Quel niveau de correction d’erreur choisir pour un QR code ?
M pour les écrans et les impressions propres, Q pour l’impression, l’extérieur et les codes avec logo. H rend le code bien plus dense : réservez-le aux contenus courts.
Quelle part d’un QR code peut-on masquer ?
Moins que les 7, 15, 25 et 30 % de la norme ne le laissent penser. Dans notre test, un carré centré pouvait masquer 5 à 8 % en L, 6 à 12 % en M, 9 à 20 % en Q et 15 à 20 % en H.
Un logo rend-il un QR code plus difficile à lire ?
Il consomme une partie de la correction d’erreur. Avec une correction au niveau Q et un logo de taille modeste, tous nos codes de test ont été lus.
Quelle est la taille minimale d’un QR code imprimé ?
Une règle courante veut une largeur d’un dixième de la distance de lecture, environ 2 à 3 cm pour un code lu à bout de bras. Un contenu court permet des codes plus petits.
Les outils de cet article
À lire aussi sur le blog
ZIP, 7z ou RAR : quel format d’archive est le meilleur ?
Nous avons compressé les mêmes dossiers de photos, vidéos, documents et données en ZIP, 7z et RAR, puis mesuré le poids et la vitesse. Le gagnant dépend presque entièrement de ce qu’il y a dedans.
CSV, Excel ou JSON : quel format pour vos données ?
Nous avons enregistré le même tableau de 100 000 lignes en CSV, en classeur Excel et en JSON, puis comparé les poids, la vitesse de lecture dans du code et ce qui se passe mal avec les dates, les zéros initiaux et les longs nombres.
Les timestamps Unix expliqués
Un timestamp Unix n’est qu’un nombre de secondes, et pourtant il cause un flot régulier de bugs. Ce qu’il compte, comment reconnaître secondes et millisecondes d’un coup d’œil, ce qui se passe avec les fuseaux et les secondes intercalaires, et pourquoi 2038 compte.