MostlyQR

Hoe klein kan een QR-code worden afgedrukt? De afmetingen, berekend

Er is geen enkele minimumgrootte voor een QR-code. We hebben vijf echte payloads door onze eigen encoder gehaald voor de moduletelling, en die vervolgens in millimeters omgezet.

Max Čelar··Afdrukken & scannen

Wat is hier nieuw: Symboolversie en moduletelling voor vijf werkelijke payloadtypen op alle vier foutcorrectieniveaus, berekend met de encoder die MostlyQR verstuurt, vervolgens omgezet naar afgedrukte millimeters — dus de minimumgrootte wordt afgeleid van uw payload in plaats van als één algemeen getal te worden opgegeven.

Elk gidswerk over het printen van QR-codes geeft je één getal. Twee centimeter. Een inch. Drie centimeter voor verpakking. Die getallen zijn gissingen vermomd als normen, en ze zijn in beide richtingen fout: te groot voor een korte link op een visitekaartje, gevaarlijk te klein voor een vCard op een flesLabel.

Het echte antwoord is een deling, en je kunt dit berekenen voordat je iets print.

# Waarom er geen enkele minimale grootte bestaat

Een QR-code is geen plaatje dat kleiner wordt. Het is een grid van modules — de kleine vierkantjes — en het aantal modules is vastgesteld door je payload, niet door jou. Een korte link van éénentwintig tekens heeft een grid van 25×25 nodig. Een vCard met een naam, telefoonnummer en e-mailadres heeft 49×49 nodig. Print beide op 25 mm en je hebt twee totaal verschillende dingen geprint: in het eerste geval is elke module 0,76 mm groot; in het tweede geval 0,44 mm.

De module is wat de printer vast moet houden en wat de camera moet oplossen. Dus de vraag “hoe klein kan mijn QR-code zijn” is eigenlijk “hoe klein kan één module zijn, en hoeveel modules heb ik” — en het tweede deel is berekenbaar.

# Wat je payload in modules kost

We hebben vijf payloadtypen door de encoder gehaald die MostlyQR werkelijk gebruikt (buildMatrix in onze packages/qr, die de MIT node-qrcode-bibliotheek omwikkelt) op alle vier de foutcorrectiesniveaus. Het getal na de slash is de gridgrootte — de modules langs één zijde, niet meegerekend de stille zone.

Payload Tekens EC L EC M EC Q EC H
korte link 21 v2 / 25 v2 / 25 v2 / 25 v3 / 29
Wi-Fi toevoegen (WPA) 47 v3 / 29 v4 / 33 v4 / 33 v6 / 41
campagne-URL met UTM-tags 87 v5 / 37 v6 / 41 v7 / 45 v9 / 53
lange product-URL 116 v6 / 41 v7 / 45 v9 / 53 v10 / 57
vCard (naam, organisatie, telefoon, e-mail, URL) 135 v6 / 41 v8 / 49 v9 / 53 v11 / 61

Dit zijn de exacte strings, dus je kunt elke rij reproduceren:

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

De spreiding is het punt. Over normale, alledaagse payloads varieert de grid van 25 tot 61 modules aan een zijde — een factor van 2,4 in lineaire dichtheid, voordat iemand een papierformaat heeft gekozen.

# Als je deze tabel controleert, controleer je hem met de strings

Het aantal tekens alleen reproduceert die getallen niet, en het is belangrijk om te weten waarom voordat je concludeert dat we het fout hebben.

Een QR-encoder behandelt niet elk teken als een byte. Hij kiest een codeermodus per reeks tekens — numeriek (3⅓ bits per cijfer), alfanumeriek (5½ bits, maar alleen voor cijfers, hoofdletters en een handvol symbolen), of byte (8 bits) — en een goede encoder splitst één payload in meerdere segmenten om het goedkoopste totaal te krijgen. Die van ons doet dat. Dit is wat het werkelijk koos:

Payload Segmenten
korte link Byte:14 + Alphanumeric:7
Wi-Fi toevoegen Alphanumeric:10 + Byte:37
campagne-URL Byte:83 + Numeric:4
lange product-URL Byte:95 + Numeric:7 + Byte:14
vCard Alphanumeric:11 + Byte:1 + Alphanumeric:11 + Byte:44 + Numeric:10 + Byte:49 + Alphanumeric:9

Codeer dezelfde tekentellingen in plaats daarvan als een enkele byte-reeks en je krijgt een ander, groter tabel — v3/29 voor de korte link op niveau Q in plaats van v2/25, en v7/45 voor de vCard op niveau L in plaats van v6/41. Beide tabellen zijn correct; ze beschrijven verschillende payloads.

Wat je een gratis hefboom geeft, als je korte links gebruiken een hoofdletterhypher. https://mqr.sh/AB12CD splitst in byte + alfanumeriek omdat het schema en de host in kleine letters zijn. Schrijf de hele URL in hoofdletters — HTTPS://MQR.SH/AB12CD — en het wordt één alfanumeriek segment van 21 tekens: op niveau L is dat v1, 21 modules, een hele versie kleiner dan de gemengde-case-vorm. (Op niveaus M en Q blijft deze specifieke string op v2/25 — het profiteert al van de alfanumerieke staart; de winst verschijnt op L, en deze groeit met de lengte van de reeks in hoofdletters.) Schema en host zijn niet gevoelig voor hoofd-/kleine letters zodat de URL identiek wordt omgezet; het pad is niet, dus dit werkt alleen als je slug echt in hoofdletters is. Die van ons zijn.

# Dezelfde 25 mm, vijf verschillende codes

Zet nu de afdrukbreedte vast en lees wat elke payload je oplevert. Dit is (breedte ÷ (modules + 8)), de 8 is de verplichte stille zone van vier modules aan elke zijde:

Payload EC M modulegrootte op 25 mm EC H modulegrootte op 25 mm
korte link 0,76 mm 0,68 mm
Wi-Fi toevoegen 0,61 mm 0,51 mm
campagne-URL met UTM’s 0,51 mm 0,41 mm
lange product-URL 0,47 mm 0,38 mm
vCard 0,44 mm 0,36 mm

Dezelfde vierkant op de pagina. Twee keer de functiegrote aan één kant van de tabel aan de andere. Een drukkerij die comfortabel 0,5 mm zuiver kan handhaven, produceert een perfecte korte-link-code en een marginale vCard vanuit dezelfde lay-out.

# De minimale breedte, van de andere kant

De meeste mensen komen met de tegengestelde vraag: niet “wat krijg ik op 25 mm” maar “hoe klein kan ik gaan”. Kies een modulegrootte die je drukproces werkelijk kan handhaven — 0,5 mm is een gemeenschappelijke ondergrens voor offset en behoorlijke digitale druk op gecoat papier — en de breedte volgt:

Payload EC M EC H
korte link 16,5 mm 18,5 mm
Wi-Fi toevoegen 20,5 mm 24,5 mm
campagne-URL met UTM’s 24,5 mm 30,5 mm
lange product-URL 26,5 mm 32,5 mm
vCard 28,5 mm 34,5 mm

Dit is het bereik dat het internet samenprest tot “ongeveer 2 cm”. Aan de uiteinden ervan, is 2 cm ofwel 20% groter dan je nodig hebt of 40% kleiner dan je weg kunt komen.

Als je printer 0,33 mm kan handhaven — fijn schermdruk, goede digitaal, geen absorberend papier — deel deze door 1,5. Als je op gegolfd karton, stof of iets wat inkt verspreidt afdrukt, ga de andere kant op en reken met 1 mm.

# De grootste hefboom is de URL, niet de printer

Kijk opnieuw naar de eerste tabel. De korte link en de lange product-URL zijn dezelfde informatie — beide brengen iemand naar dezelfde pagina — en een van hen is 25 modules terwijl de ander 45 is.

Dat is het hele spel. Elke millimeter modulegrootte die je koopt door met je printer in discussie te gaan, kun je gratis krijgen door in te korten wat de code codeert. Een dynamische korte link is 21 tekens ongeacht hoe lang het doel is, en het heeft een tweede voordeel dat meer uitmaakt op een drukwerk: je kunt veranderen waar het naar wijst nadat de inkt droog is, dus een code die langer meegebruikt dan de landingspagina ervan, wordt geen dood einde.

Voor alles dat klein wordt afgedrukt — een visitekaartje, een label, de hoek van een menu — codeer een korte link en redirect. Het coderen van de volledige campagne-URL met de UTM-tags rechtstreeks in de code kost je 16 modules aan een zijde en koopt niets wat een redirect niet beter kan doen.

# Wat foutcorrectie je in grootte kost

Foutcorrectie voegt redundantie toe zodat een beschadigde of gedeeltelijk afgedekte code nog steeds leesbaar is. Het is niet gratis, en de tabellen hierboven geven er een prijs voor:

  • korte link, M → H: 25 → 29 modules (+16% lineair)
  • Wi-Fi toevoegen, M → H: 33 → 41 (+24%)
  • vCard, M → H: 49 → 61 (+24%)

Een kwart meer breedte, voor een code die overleeft als deze geschramd wordt, op verpakking wordt afgedrukt, of gedeeltelijk door een logo wordt bedekt. Op een poster, waar ruimte gratis is, neem niveau H en stop er verder over na te denken. Op een label waar 30 mm alles is wat je hebt, niveau M met een korte link verslaat niveau H met een lange URL — de kortere payload draagt meer van de robuustheid dan de extra foutcorrectie zou doen.

Als je het midden met een logo bedekt, verschuift de afweging hard naar H, en er is een gemeten budget voor hoe groot het logo kan zijn.

# Wat dit niet meet

Alles hierboven gaat over het symbool. Het is rekenkunde over een encoder, het is exact, en je kunt het opnieuw uitvoeren. Het is echter slechts de helft van wat bepaalt of een afgedrukte code scant:

  • We hebben niet de scanaantal op afstand getest met echte camera’s. De industrieregel — de breedte van de code moet ongeveer een tiende van de afstand zijn waarvan je deze wilt scannen — wordt veel aangehaald en we hebben deze niet geverifieerd. Beschouw het als een startpunt voor posters en bewegwijzering, niet als een meting.
  • Inktverspreiding, substraat en contrast zitten niet in de getallen. Een module van 0,4 mm op gecoat karton en een module van 0,4 mm op gegolfd karton zijn niet dezelfde module.
  • Camerakwaliteit varieert enorm. Een vijf jaar oude telefoon in een donker restaurant is de echte test, en dat is degene die je werkelijk zou moeten uitvoeren: druk de code af in de grootte die je van plan bent, op het papier dat je van plan bent, en scan hem met de slechtste telefoon op kantoor.

Dat laatste is geen voorbehoud, het is het advies. De rekenkunde vertelt je welke maten het waard zijn om te testen. De test vertelt je of het werkt.

# Dit zelf opnieuw uitvoeren

Elke tabel hierboven wordt door een script afgedrukt in plaats van in het artikel te worden getypt, en het script bevindt zich in de repository op draft/mostlyqr/seo/benchmarks/print-size.js. Het voert buildMatrix uit over de vijf strings hierboven, dumpt de codeersegmenten, drukt de byte-mode-controltabel naast de echte af, en berekent de millimetergetallen. Als een getal hier fout is, is dat bestand waar het fout is.

# De korte versie

  1. Codeer een korte link, niet de volledige URL — het is de enige hefboom die het grid in plaats van het papier verandert.
  2. Zoek het moduleaantal van je payload hierboven op, of bereken het.
  3. Vermenigvuldig (modules + 8) met de kleinste module die je drukproces schoon kan handhaven. Dat is je minimale breedte. (Als je de code in een van onze sjablonen plaatst, een poster op A3 en een flyer op A4 laten beide veel meer ruimte over dan welke payload hier ook nodig is.)
  4. Druk het af in die grootte, op het echte papier, en scan het met een slechte telefoon.

Als je wilt dat de code een plaatje en gegevens draagt, wordt de groottevraag nog veel scherper — een foto heeft een veel dichter grid nodig om überhaupt zichtbaar te zijn, wat we apart hebben gemeten voor foto QR-codes.

Veelgestelde vragen

Wat is de minimumgrootte voor een QR-code?

Er is niet één getal. De code is een raster van modules, en hoeveel modules het nodig heeft, hangt volledig af van hoeveel gegevens u erin plaatst. Een korte koppeling op foutcorrectieniveau M heeft 25 modules; dezelfde code met een vCard heeft 49. Afgedrukt met dezelfde breedte zijn de modules van de tweede bijna half zo groot — dus één ervan scant op 17 mm en de ander niet. Bereken eerst uw moduletelling, kies dan een breedte.

Maakt een langere URL de QR-code groter?

Het maakt het dichter, wat op hetzelfde neerkomt. In onze metingen codeert een 21-tekenige korte koppeling naar 25 modules op niveau M, en een 116-tekenige product-URL naar 45. Druk beide 25 mm breed af en de modules zijn respectievelijk 0,76 mm en 0,47 mm. Het verkorten van de URL is de goedkoopste manier om een code klein af te drukken — het kost niets en het is de enige hefboom die het raster verandert in plaats van het papier.

Maakt hogere foutcorrectie de code groter?

Ja, en meer dan de meeste mensen verwachten. Van niveau M naar niveau H verhoogde tussen 4 en 12 modules per zijde op alle vijf payloads — voor de vCard werden 49 modules 61, wat een 25% toename is in de lineaire grootte die je moet afdrukken. Niveau H is meestal de moeite waard als de code wordt behandeld, op verpakkingen wordt afgedrukt of gedeeltelijk door een logo wordt bedekt, maar het is een groottebeslissing, geen gratis upgrade.

Hoeveel witruimte heeft een QR-code eromheen nodig?

Vier modules aan elke kant. Die stille zone maakt deel uit van het symbool, geen decoratie — lezers gebruiken het om de randen te vinden — dus het hoort in de rekenkunde. Elke afgedrukte breedte in dit artikel wordt om precies die reden berekend als (modules + 8) × modulegrootte.

Bronnen
  1. QR Code standardization (ISO/IEC 18004) — Denso Wave
  2. node-qrcode (the MIT encoder our matrix builder wraps)
Meer in dit onderwerp