Les QR codes expliqués : capacité, correction d’erreurs et taille d’impression

Mis à jour :

Un QR code est une grille de carrés noirs et blancs qui stocke du texte : le plus souvent un lien, parfois des identifiants Wi-Fi, un numéro de téléphone ou une demande de paiement. Il a été présenté en 1994 par Denso Wave, alors une division de l’équipementier automobile Denso, pour suivre les composants dans ses usines, et s’est généralisé lorsque les appareils photo des téléphones ont appris à le lire. Un même code reste lisible même lorsqu’une partie en est sale ou masquée, et la quantité qu’il peut contenir dépend de trois choix : la quantité de texte, le type de texte et l’ampleur des dégâts auxquels il doit résister. Ce guide présente ces choix et ce qu’ils impliquent pour un code que vous vous apprêtez à imprimer.

Ce que contient la grille

Chaque carré est un module. Les trois grands carrés situés dans les coins sont les motifs de repérage : ils indiquent au lecteur où se trouve le code et dans quel sens il est orienté. Entre eux, des lignes de modules alternés, les motifs de synchronisation, donnent l’espacement de la grille, et à partir de la version 2, des carrés d’alignement plus petits aident à compenser une surface courbe ou inclinée. Une bande placée à côté des motifs de repérage enregistre le niveau de correction d’erreurs et le masque, l’un des 8 motifs superposés aux données pour qu’elles ne forment jamais de grandes zones vides ni de formes ressemblant à un motif de repérage. Les codes de version 7 ou supérieure enregistrent aussi leur version. Tout le reste correspond aux données et à la correction d’erreurs.

Autour du code, il doit y avoir une marge vide, la zone de silence, large de quatre modules de chaque côté. Sans elle, le lecteur peut ne pas trouver où le code se termine, et un code qui paraît parfait à l’écran peut devenir illisible une fois imprimé sur un fond chargé.

Les versions : pourquoi certains codes sont plus denses

La taille de la grille s’appelle la version. La version 1 mesure 21 × 21 modules, et chaque version ajoute 4 modules par côté, jusqu’à la version 40 et ses 177 × 177 modules. Un générateur choisit la plus petite version qui peut contenir le texte : plus de texte signifie donc des modules plus nombreux et plus petits sur une même surface imprimée. Voici les versions nécessaires à quelques contenus typiques au niveau M, le choix le plus courant :

ContenuCaractèresVersion au niveau M
https://ntools.xyz182 (25 × 25)
Des identifiants Wi-Fi avec un mot de passe de 28 caractères584 (33 × 33)
Un lien long avec cinq paramètres de suivi1268 (49 × 49)

Le lien long nécessite presque deux fois plus de modules par côté que le lien court. Imprimé à la même taille, ce code a des modules à peine plus larges que la moitié de ceux du lien court : le téléphone doit donc être tenu plus près et plus stable. Raccourcir le lien est le moyen le plus efficace de rendre un code plus facile à scanner.

Ce que peut contenir un QR code

Un QR code encode le texte selon l’un de quatre modes. Le mode numérique est celui qui stocke les chiffres de la façon la plus compacte. Le mode alphanumérique couvre 45 caractères : les chiffres, les lettres majuscules de A à Z, l’espace et $ % * + - . / :. Le mode octet accepte n’importe quelles données, et c’est celui qu’utilisent presque tous les liens, car les lettres minuscules ne font pas partie du jeu alphanumérique. Le mode Kanji sert au texte japonais.

Le jeu de caractères que la norme prévoit par défaut pour le mode octet est l’ISO 8859-1, qui ne couvre que les lettres d’Europe occidentale. Le texte écrit dans d’autres alphabets, ou contenant des symboles comme €, est encodé en UTF-8 par la plupart des générateurs, nTools compris, et le lecteur doit le reconnaître, ce que font beaucoup de lecteurs, mais pas tous. Le plus grand code, la version 40, peut contenir :

NiveauChiffresAlphanumériqueOctets
L7 0894 2962 953
M5 5963 3912 331
Q3 9932 4201 663
H3 0571 8521 273

Ce sont des limites, pas des objectifs. Un code de version 40 compte 31 329 modules, et un téléphone ne peut le lire que s’il est imprimé en grand et avec netteté. Pour tout ce qui s’imprime, un contenu court garde le code facile à lire.

Générateur de QR et Wi-Fi QR

Correction d’erreurs : L, M, Q et H

Les QR codes utilisent la correction d’erreurs Reed–Solomon, la même famille de codes que celle employée sur les CD. Une partie de chaque code est constituée de données redondantes à partir desquelles le lecteur peut reconstituer ce qui manque. Il existe quatre niveaux, et chacun peut restaurer environ la part suivante des données :

Denso Wave indique que le niveau M est le plus souvent choisi, Q ou H étant choisis pour les environnements salissants comme les usines, et L pour les conditions propres et les grandes quantités de données. Le prix d’un niveau plus élevé, c’est la taille : un même lien nécessite plus de modules au niveau H qu’au niveau M. Les pourcentages portent sur des mots de code, des blocs de 8 bits, et non sur des modules : une rayure qui traverse le code peut donc en abîmer davantage que sa surface ne le laisse penser.

Un logo au centre d’un code ne fonctionne que parce que la correction d’erreurs reconstitue les modules qu’il masque ; il consomme donc une partie de cette marge avant même que le code ait à faire face à la saleté ou aux reflets. Si vous en ajoutez un, gardez-le petit, ne couvrez jamais les trois carrés des coins ni la zone de silence, et testez le résultat sur plusieurs téléphones.

À quelle taille l’imprimer

La taille imprimée est égale au nombre de modules, plus 8 pour la zone de silence, multiplié par la largeur d’un module. L’exemple donné par Denso Wave elle-même est un code de version 3, large de 29 modules, imprimé avec des modules de 0,254 mm : 7,4 mm pour le code et 9,4 mm avec sa marge. Des modules aussi petits conviennent à un lecteur dédié tenu près de l’étiquette ; l’appareil photo d’un téléphone tenu à bout de bras a besoin de modules bien plus grands.

Pour une largeur imprimée de 2 cm marge comprise, un code de version 2 a des modules d’environ 0,61 mm de large, alors que ceux d’un code de version 8 mesurent environ 0,35 mm. Si un code doit être petit, gardez son contenu court.

Les QR codes Wi-Fi

Un code Wi-Fi est du texte brut dans un format que reconnaissent les appareils photo des téléphones. Il a été popularisé par le projet de codes-barres ZXing et ne fait pas partie de la norme QR elle-même :

Les caractères \ ; , : et " sont échappés par une barre oblique inverse dans le nom ou le mot de passe ; le générateur nTools s’en charge pour vous.

Le mot de passe est stocké dans le code sous forme de texte lisible : quiconque scanne le code, ou le prend en photo, dispose du mot de passe. Pour un code affiché au mur, utilisez un réseau invité.

Codes statiques et dynamiques

Un code statique contient le contenu lui-même, comme le lien ou les identifiants Wi-Fi. Il n’expire jamais, n’a pas de limite de scans et fonctionne sans aucun service intermédiaire ; pour changer le contenu, il faut imprimer un nouveau code. Le générateur nTools crée des codes statiques.

Un code dynamique, vendu par de nombreux services de QR codes, contient un lien court vers ce service, qui redirige ensuite vers votre véritable adresse. Vous pouvez modifier la destination plus tard et compter les scans, mais chaque scan dépend du service : si l’abonnement prend fin ou si l’entreprise ferme, les codes imprimés cessent de fonctionner.

Scanner en toute sécurité

Un QR code ne peut rien exécuter par lui-même ; il se contente de transmettre du texte au téléphone, le plus souvent un lien. Le risque, c’est la destination de ce lien. La Federal Trade Commission, l’agence américaine de protection des consommateurs, met en garde contre les faux codes collés par-dessus les vrais, par exemple sur des horodateurs, et contre les codes reçus dans des messages inattendus qui vous pressent d’agir immédiatement.

Questions fréquentes

Les QR codes expirent-ils ?

Un code statique n’expire jamais : il contient le contenu lui-même. Un code dynamique cesse de fonctionner lorsque le service derrière son lien court arrête de le rediriger.

Pourquoi mon QR code ne se scanne-t-il pas ?

Les causes habituelles sont un code imprimé trop petit pour la quantité de contenu, une zone de silence absente ou encombrée, un contraste faible, un reflet ou un pli, ou un logo qui couvre une trop grande partie du code. Raccourcir le contenu agrandit chaque module.

Quel niveau de correction d’erreurs choisir ?

Le niveau M convient à la plupart des codes imprimés. Utilisez Q ou H si le code va se salir ou s’user, ou s’il porte un logo, en acceptant qu’il soit plus dense.

Que fait le générateur nTools ?

Il crée des codes statiques au niveau M, en choisissant la plus petite version qui convient, et ajoute la zone de silence de quatre modules. Le code est dessiné dans votre navigateur et rien de ce que vous saisissez n’est envoyé en ligne.

Guides associés