MostlyQR

Aussi petit qu'un code QR peut-il être imprimé ? Les tailles, calculées

Il n'y a pas de taille minimale unique pour un code QR. Nous avons exécuté cinq charges utiles réelles à travers notre propre encodeur pour obtenir les nombres de modules, puis nous les avons convertis en millimètres.

Max Čelar··Impression et numérisation

Quoi de neuf ici : Version du symbole et nombre de modules pour cinq types de charges utiles réelles à tous les quatre niveaux de correction d'erreur, calculés avec l'encodeur que MostlyQR envoie, puis convertis en millimètres imprimés — donc la taille minimale est dérivée de votre charge utile au lieu d'être citée comme un seul nombre global.

Chaque guide d’impression de codes QR vous donne un seul chiffre. Deux centimètres. Un pouce. Trois centimètres pour l’emballage. Ces chiffres sont des suppositions déguisées en normes, et ils se trompent dans les deux sens : trop gros pour un lien court sur une carte de visite, dangereusement trop petit pour une vCard sur une étiquette de bouteille.

La vraie réponse est une division, et vous pouvez la faire avant d’imprimer quoi que ce soit.

# Pourquoi il n’existe pas de taille minimale unique

Un code QR n’est pas une image qui rétrécit. C’est une grille de modules — les petits carrés — et le nombre de modules est fixé par votre charge utile, pas par vous. Vingt et un caractères de lien court nécessitent une grille de 25×25. Une vCard avec un nom, un numéro de téléphone et un email nécessite 49×49. Imprimez les deux à 25mm et vous avez imprimé deux choses très différentes : dans la première, chaque module mesure 0,76mm de large ; dans la deuxième, 0,44mm.

Le module est ce que l’imprimante doit tenir et ce que l’appareil photo doit résoudre. Donc la question « quelle est la plus petite taille de mon code QR » est vraiment « quelle est la plus petite taille d’un module, et combien en ai-je » — et la deuxième partie est calculable.

# Ce que votre charge utile coûte en modules

Nous avons fait passer cinq types de charges utiles dans l’encodeur que MostlyQR expédie réellement (buildMatrix dans notre packages/qr, qui encapsule la bibliothèque MIT node-qrcode) à tous les quatre niveaux de correction d’erreur. Le chiffre après la barre oblique est la taille de la grille — les modules sur un côté, sans compter la zone silencieuse.

Charge utile Caractères EC L EC M EC Q EC H
lien court 21 v2 / 25 v2 / 25 v2 / 25 v3 / 29
accès Wi-Fi (WPA) 47 v3 / 29 v4 / 33 v4 / 33 v6 / 41
URL de campagne avec tags UTM 87 v5 / 37 v6 / 41 v7 / 45 v9 / 53
long URL produit 116 v6 / 41 v7 / 45 v9 / 53 v10 / 57
vCard (nom, org, téléphone, email, URL) 135 v6 / 41 v8 / 49 v9 / 53 v11 / 61

Ce sont les chaînes exactes, vous pouvez donc reproduire chaque ligne :

text
https://mqr.sh/AB12CD
WIFI:T:WPA;S:CafeGuest;P:coffee-and-cake-2026;;
https://example.com/spring-menu?utm_source=poster&utm_medium=qr&utm_campaign=spring2026
https://example.com/collections/spring-2026/products/heirloom-tomato-seed-pack-organic?variant=4471029&ref=packaging
BEGIN:VCARD ⏎ VERSION:3.0 ⏎ N:Novak;Ana ⏎ FN:Ana Novak ⏎ ORG:MostlyQR ⏎
TEL:+4420790000 ⏎ EMAIL:anna@example.org ⏎ URL:https://mostlyqr.com ⏎ END:VCARD

La dispersion est l’essentiel. Dans les charges utiles ordinaires et quotidiennes, la grille s’étend de 25 à 61 modules de côté — un facteur de 2,4 en densité linéaire, avant que quiconque n’ait choisi un format de papier.

# Si vous vérifiez ce tableau, vérifiez-le avec les chaînes

Le décompte des caractères seul ne reproduira pas ces chiffres, et il vaut la peine de savoir pourquoi avant de conclure que nous nous sommes trompés.

Un encodeur QR ne traite pas chaque caractère comme un octet. Il choisit un mode d’encodage par suite de caractères — numérique (3⅓ bits par chiffre), alphanumérique (5½ bits, mais seulement pour les chiffres, les lettres majuscules et quelques symboles), ou octet (8 bits) — et un bon encodeur divise une charge utile en plusieurs segments pour obtenir le coût total le moins élevé. Le nôtre le fait. Voici ce qu’il a réellement choisi :

Charge utile Segments
lien court Byte:14 + Alphanumeric:7
accès Wi-Fi Alphanumeric:10 + Byte:37
URL de campagne Byte:83 + Numeric:4
long URL produit Byte:95 + Numeric:7 + Byte:14
vCard Alphanumeric:11 + Byte:1 + Alphanumeric:11 + Byte:44 + Numeric:10 + Byte:49 + Alphanumeric:9

Encodez les mêmes décomptes de caractères comme une seule séquence d’octets à la place et vous obtenez un tableau différent et plus grand — v3/29 pour le lien court au niveau Q au lieu de v2/25, et v7/45 pour la vCard au niveau L au lieu de v6/41. Les deux tableaux sont corrects ; ils décrivent des charges utiles différentes.

Ce qui vous donne un levier gratuit, si vos liens courts utilisent un slug en majuscules. https://mqr.sh/AB12CD se divise en octet + alphanumérique car le schéma et l’hôte sont en minuscules. Écrivez l’URL entière en majuscules — HTTPS://MQR.SH/AB12CD — et elle devient un segment alphanumérique de 21 caractères : au niveau L c’est v1, 21 modules, une version entière plus petit que la forme à casse mixte. (Aux niveaux M et Q, cette chaîne particulière reste à v2/25 — elle bénéficie déjà de la queue alphanumérique ; le gain s’affiche au niveau L, et il augmente avec la longueur de la séquence en majuscules.) Le schéma et l’hôte sont insensibles à la casse donc l’URL se résout de manière identique ; le chemin ne l’est pas, donc cela ne fonctionne que si votre slug est véritablement en majuscules. Les nôtres le sont.

# Les mêmes 25mm, cinq codes différents

Maintenant, fixez la largeur imprimée et lisez ce que chaque charge utile vous laisse. C’est (largeur ÷ (modules + 8)), les 8 étant la zone silencieuse obligatoire de quatre modules de chaque côté :

Charge utile Taille du module EC M à 25mm Taille du module EC H à 25mm
lien court 0,76mm 0,68mm
accès Wi-Fi 0,61mm 0,51mm
URL de campagne avec UTM 0,51mm 0,41mm
long URL produit 0,47mm 0,38mm
vCard 0,44mm 0,36mm

Même carré sur la page. Deux fois la taille des caractéristiques à une extrémité du tableau par rapport à l’autre. Un imprimeur à l’aise pour tenir 0,5mm proprement produira un code de lien court parfait et une vCard marginale à partir de la même mise en page.

# La largeur minimale, de l’autre direction

La plupart des gens arrivent avec la question opposée : non pas « ce que j’obtiens à 25mm » mais « jusqu’où je peux aller ». Choisissez une taille de module que votre procédé d’impression peut réellement tenir — 0,5mm est un plancher commun pour l’offset et l’impression numérique décente sur papier couché — et la largeur s’ensuit :

Charge utile EC M EC H
lien court 16,5mm 18,5mm
accès Wi-Fi 20,5mm 24,5mm
URL de campagne avec UTM 24,5mm 30,5mm
long URL produit 26,5mm 32,5mm
vCard 28,5mm 34,5mm

C’est la plage que l’internet compresse en « environ 2cm ». Aux extrémités, 2cm c’est soit 20% plus grand que vous n’en avez besoin, soit 40% plus petit que vous ne pouvez vous le permettre.

Si votre imprimante peut tenir 0,33mm — sérigraphie fine, impression numérique de qualité, pas de papier absorbant — divisez ces chiffres par 1,5. Si vous imprimez sur du carton ondulé, du tissu ou autre chose qui absorbe l’encre, allez dans l’autre sens et supposez 1mm.

# Le plus gros levier est l’URL, pas l’imprimante

Regardez à nouveau le premier tableau. Le lien court et le long URL produit sont la même information — ils mènent tous les deux quelqu’un à la même page — et l’un d’entre eux mesure 25 modules tandis que l’autre en mesure 45.

C’est tout le jeu. Chaque millimètre de taille de module que vous achetez en discutant avec votre imprimante, vous pouvez l’obtenir gratuitement en raccourcissant ce que le code encode. Un lien court dynamique mesure 21 caractères peu importe la longueur de la destination, et il a un deuxième avantage qui compte davantage sur un tirage : vous pouvez changer où il pointe après que l’encre soit sèche, donc un code qui dépasse sa page d’accueil ne devient pas une impasse.

Pour tout ce qui sera imprimé petit — une carte de visite, une étiquette, le coin d’un menu — encodez un lien court et redirigez. Encoder l’URL de campagne complète avec ses tags UTM directement dans le code vous coûte 16 modules de côté et ne vous achète rien qu’une redirection ne puisse faire mieux.

# Ce que la correction d’erreur vous coûte en taille

La correction d’erreur ajoute de la redondance pour qu’un code endommagé ou partiellement couvert puisse toujours être lu. Ce n’est pas gratuit, et les tableaux ci-dessus le tarif :

  • lien court, M → H : 25 → 29 modules (+16% linéaire)
  • accès Wi-Fi, M → H : 33 → 41 (+24%)
  • vCard, M → H : 49 → 61 (+24%)

Un quart de plus en largeur, pour un code qui survit à être érafle, imprimé sur l’emballage, ou partiellement couvert par un logo. Sur une affiche, où l’espace est gratuit, prenez le niveau H et arrêtez d’y penser. Sur une étiquette où 30mm c’est tout ce que vous avez, le niveau M avec un lien court surpasse le niveau H avec une URL longue — la charge utile plus courte porte plus de robustesse que la correction d’erreur supplémentaire ne le ferait.

Si vous couvrez le milieu avec un logo, le compromis s’oriente fortement vers H, et il y a un budget mesuré pour la taille que le logo peut avoir.

# Ce que cela ne mesure pas

Tout ce qui précède concerne le symbole. C’est de l’arithmétique sur un encodeur, c’est exact, et vous pouvez le réexécuter. C’est aussi seulement la moitié de ce qui décide si un code imprimé scanne :

  • Nous n’avons pas testé la distance de balayage avec des caméras réelles. La règle empirique du secteur — la largeur du code doit être à peu près un dixième de la distance à laquelle vous voulez le balayer — est largement citée et nous ne l’avons pas vérifiée. Traitez-la comme un point de départ pour les affiches et la signalisation, pas comme une mesure.
  • L’étalement d’encre, le substrat et le contraste ne sont pas dans les chiffres. Un module 0,4mm sur du papier couché et un module 0,4mm sur du carton ondulé ne sont pas le même module.
  • La qualité de la caméra varie énormément. Un téléphone vieux de cinq ans dans un restaurant sombre est le vrai test, et c’est celui que vous devriez vraiment faire : imprimez le code à la taille que vous avez l’intention d’utiliser, sur le papier que vous avez l’intention d’utiliser, et scannez-le avec le pire téléphone du bureau.

Ce dernier n’est pas une mise en garde, c’est le conseil. L’arithmétique vous dit quelles tailles valent la peine d’être testées. Le test vous dit si ça marche.

# Réexécuter cela vous-même

Chaque tableau ci-dessus est imprimé par un script plutôt que tapé dans l’article, et le script se trouve dans le référentiel à draft/mostlyqr/seo/benchmarks/print-size.js. Il exécute buildMatrix sur les cinq chaînes ci-dessus, vide les segments du mode d’encodage, imprime le tableau de contrôle du mode octet à côté du vrai, et dérive les chiffres en millimètres. Si un chiffre ici est incorrect, ce fichier est l’endroit où il est incorrect.

# La version courte

  1. Encodez un lien court, pas l’URL complète — c’est le seul levier qui change la grille au lieu du papier.
  2. Recherchez le décompte de modules de votre charge utile ci-dessus, ou calculez-le.
  3. Multipliez (modules + 8) par le plus petit module que votre procédé d’impression peut tenir proprement. C’est votre largeur minimale. (Si vous intégrez le code dans l’un de nos modèles, une affiche à A3 et un tract à A4 laissent tous les deux bien plus d’espace que n’importe quelle charge utile ici en a besoin.)
  4. Imprimez-le à cette taille, sur le vrai papier, et scannez-le avec un mauvais téléphone.

Si vous voulez que le code porte une image aussi bien que des données, la question de taille devient encore plus pointue — une photographie a besoin d’une grille beaucoup plus dense pour être visible du tout, ce que nous avons mesuré séparément pour les codes QR photo.

Questions fréquemment posées

Quelle est la taille minimale d'un code QR ?

Il n'y en a pas une. Le code est une grille de modules, et le nombre de modules dont il a besoin dépend entièrement de la quantité de données que vous y mettez. Un lien court au niveau de correction d'erreur M fait 25 modules de large ; le même code contenant une vCard en fait 49. Imprimés à la même largeur, les modules du second sont presque moitié moins grands — donc l'un d'eux scanne à 17 mm et l'autre ne le fait pas. Calculez d'abord votre nombre de modules, puis choisissez une largeur.

Une URL plus longue rend-elle le code QR plus grand ?

Cela le rend plus dense, ce qui revient au même. Dans nos mesures, un lien court de 21 caractères s'encode en 25 modules au niveau M, et une URL de produit de 116 caractères en 45. Imprimés tous les deux à 25 mm de large, les modules font respectivement 0,76 mm et 0,47 mm. Raccourcir l'URL est le moyen le moins cher de rendre un code imprimable petit — cela ne coûte rien et c'est le seul levier qui change la grille plutôt que le papier.

Une correction d'erreur plus élevée rend-elle le code plus grand ?

Oui, et bien plus que la plupart des gens s'y attendent. Passer du niveau M au niveau H a ajouté entre 4 et 12 modules par côté dans les cinq charges utiles — pour la vCard, 49 modules sont devenus 61, ce qui représente une augmentation de 25 % de la taille linéaire que vous devez imprimer. Le niveau H en vaut généralement la peine si le code sera manipulé, imprimé sur l'emballage ou partiellement couvert par un logo, mais c'est une décision de taille, pas une mise à niveau gratuite.

Combien d'espace blanc un code QR a-t-il besoin autour de lui ?

Quatre modules de chaque côté. Cette zone silencieuse fait partie du symbole, pas de la décoration — les lecteurs l'utilisent pour trouver les bords — donc elle appartient au calcul. Chaque largeur imprimée de cet article est calculée comme (modules + 8) × taille du module pour exactement cette raison.

Sources
  1. QR Code standardization (ISO/IEC 18004) — Denso Wave
  2. node-qrcode (the MIT encoder our matrix builder wraps)
Plus sur ce sujet