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 nombre. Deux centimètres. Un pouce. Trois centimètres pour l’emballage. Ces chiffres sont des suppositions déguisées en normes, et ils sont faux dans les deux sens : trop grand 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 calculer avant d’imprimer quoi que ce soit.

# Pourquoi il n’y a pas de taille minimale unique

Un code QR n’est pas une image qui devient plus petite. 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 e-mail nécessite 49×49. Imprimez les deux à 25 mm et vous avez imprimé deux choses très différentes : dans la première, chaque module fait 0,76 mm de large ; dans la deuxième, 0,44 mm.

Le module est ce que l’imprimante doit tenir et ce que la caméra doit résoudre. Donc la question « à quelle taille minimale puis-je réduire mon code QR » revient vraiment à « à quelle taille minimale un module peut-il être, et combien en ai-je » — et la deuxième moitié est calculable.

# Ce que votre charge utile coûte en modules

Nous avons exécuté cinq types de charges utiles via l’encodeur que MostlyQR expédie réellement (buildMatrix dans nos packages/qr, qui encapsule la bibliothèque MIT node-qrcode) à tous les quatre niveaux de correction d’erreurs. Le nombre 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
Connexion Wi-Fi (WPA) 47 v3 / 29 v4 / 33 v4 / 33 v6 / 41
URL de campagne avec balises UTM 87 v5 / 37 v6 / 41 v7 / 45 v9 / 53
URL de produit long 116 v6 / 41 v7 / 45 v9 / 53 v10 / 57
vCard (nom, organisation, téléphone, e-mail, URL) 135 v6 / 41 v8 / 49 v9 / 53 v11 / 61

Voici 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:Celar;Max ⏎ FN:Max Celar ⏎ ORG:MostlyQR ⏎
TEL:+3861234567 ⏎ EMAIL:max@mostlyqr.com ⏎ URL:https://mostlyqr.com ⏎ END:VCARD

L’écart est le point. Sur des charges utiles ordinaires et quotidiennes, la grille va de 25 à 61 modules par côté — un facteur de 2,4 de 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 nombre de 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 exécution 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 total le moins cher. Le nôtre le fait. Voici ce qu’il a réellement choisi :

Charge utile Segments
lien court Byte:14 + Alphanumeric:7
Connexion Wi-Fi Alphanumeric:10 + Byte:37
URL de campagne Byte:83 + Numeric:4
URL de produit long 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 nombres de caractères sous la forme d’une seule exécution en octet à 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 cela devient un seul segment alphanumérique de 21 caractères : au niveau L, c’est v1, 21 modules, une version entière plus petite que la forme en 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 apparaît au niveau L, et il augmente avec la longueur de l’exécution 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 vraiment en majuscules. Le nôtre l’est.

# Les mêmes 25 mm, 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 de module EC M à 25 mm Taille de module EC H à 25 mm
lien court 0,76 mm 0,68 mm
Connexion Wi-Fi 0,61 mm 0,51 mm
URL de campagne avec UTM 0,51 mm 0,41 mm
URL de produit long 0,47 mm 0,38 mm
vCard 0,44 mm 0,36 mm

Le même carré sur la page. Deux fois la taille de la caractéristique à un bout du tableau par rapport à l’autre. Une imprimerie qui est à l’aise de maintenir 0,5 mm 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 « qu’est-ce que j’obtiens à 25 mm » mais « jusqu’où puis-je aller au minimum ». Choisissez une taille de module que votre processus d’impression peut réellement maintenir — 0,5 mm est un plancher courant pour l’offset et une bonne impression numérique sur papier couché — et la largeur suit :

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

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

Si votre imprimante peut maintenir 0,33 mm — sérigraphie fine, bon numérique, pas de papier absorbant — divisez ceux-ci par 1,5. Si vous imprimez sur du carton ondulé, du tissu ou quelque chose qui propage l’encre, allez de l’autre côté et supposez 1 mm.

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

Regardez à nouveau le premier tableau. Le lien court et l’URL du produit long sont les mêmes informations — ils envoient tous les deux quelqu’un à la même page — et l’une d’elles fait 25 modules tandis que l’autre en fait 45.

C’est tout le jeu. Chaque millimètre de taille de module que vous gagnez en discutant avec votre imprimeur, vous pouvez l’obtenir gratuitement en raccourcissant ce que le code encode. Un lien court dynamique fait 21 caractères peu importe la longueur de la destination, et il a un deuxième avantage qui compte davantage sur une bande imprimée : vous pouvez changer où il pointe après que l’encre soit sèche, donc un code qui outlive 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 balises UTM directement dans le code vous coûte 16 modules par 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 l’évaluent :

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

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

Si vous couvrez le milieu avec un logo, le compromis penche dur vers H, et il y a un budget mesuré pour la taille maximale du logo.

# 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 scan avec de vraies caméras. La règle de pratique de l’industrie — la largeur du code devrait être à peu près un dixième de la distance à partir de laquelle vous voulez le scanner — 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 de l’encre, le substrat et le contraste ne sont pas dans les chiffres. Un module 0,4 mm sur du papier couché et un module 0,4 mm sur du carton ondulé ne sont pas le même module.
  • La qualité des caméras 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 exécuter : imprimez le code à la taille que vous envisagez, sur le papier que vous envisagez, 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 saisi dans l’article, et le script est 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 en mode octet à côté du vrai, et dérive les chiffres en millimètres. Si un nombre 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 nombre de modules de votre charge utile ci-dessus, ou calculez-le.
  3. Multipliez (modules + 8) par le plus petit module que votre processus d’impression tient proprement. C’est votre largeur minimale. (Si vous posez le code dans l’un de nos modèles, une affiche en A3 et un dépliant en A4 laissent tous deux beaucoup plus de place que n’importe quelle charge utile ici n’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 en plus des données, la question de la 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 photographiques.

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