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.
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.
Elke gids voor het afdrukken van QR-codes geeft je één getal. Twee centimeter. Een inch. Drie centimeter voor verpakkingen. Deze getallen zijn gissingen opgedost als normen, en ze zijn fout in beide richtingen: te groot voor een korte link op een visitekaartje, gevaarlijk te klein voor een vCard op een flessenlabel.
Het echte antwoord is een deling, en je kunt het doen voordat je iets afdrukt.
# Waarom er geen enkele minimale grootte is
Een QR-code is geen afbeelding die kleiner wordt. Het is een raster van modules — de kleine vierkantjes — en het aantal modules is vastgesteld door je payload, niet door jou. Eenentwintig tekens van korte link heeft een raster van 25×25 nodig. Een vCard met een naam, een telefoonnummer en een e-mailadres heeft 49×49 nodig. Druk beide af op 25 mm en je hebt twee heel verschillende dingen afgedrukt: in de eerste is elke module 0,76 mm breed; in de tweede 0,44 mm.
De module is wat de printer moet vasthouden 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 heb ik er” — en het tweede deel is berekenbaar.
# Wat je payload kost in modules
We hebben vijf payload-typen door de encoder die MostlyQR daadwerkelijk verzend (buildMatrix in ons packages/qr, die de MIT node-qrcode bibliotheek omvat) op alle vier foutcorrectieniveaus gehaald. Het getal na de schuine streep is de rastergrootte — de modules aan één zijde, niet inclusief 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 join (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:
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
De spreiding is het punt. Binnen gewone, alledaagse payloads loopt het raster 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 het dan met de strings
Alleen het aantal tekens zal die nummers niet reproduceren, en het is belangrijk om te weten waarom voordat je concludeert dat we ze verkeerd hebben.
Een QR-encoder behandelt niet elk teken als een byte. Het kiest een coderingsmodus 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 verschillende segmenten om het totaal het goedkoopst te maken. De onze doet dat. Dit is wat het daadwerkelijk koos:
| Payload | Segmenten |
|---|---|
| korte link | Byte:14 + Alphanumeric:7 |
| Wi-Fi join | 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 één bytereeks 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 een hoofdletterrups gebruiken. 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 dat is v1, 21 modules, een hele versie kleiner dan de gemengde-hoofdlettervariant. (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 het groeit met de lengte van de hoofdletterreeks.) Schema en host zijn niet-gevoelig voor hoofdletters, dus de URL wordt hetzelfde opgelost; het pad niet, dus dit werkt alleen als je rups echt in hoofdletters is. De onze zijn.
# Dezelfde 25 mm, vijf verschillende codes
Zet nu de afgedrukte breedte vast en lees wat elke payload je laat. Dit is (breedte ÷ (modules + 8)), de 8 zijn de verplichte vier-module stille zone 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 join | 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 |
Hetzelfde vierkantje op de pagina. Twee keer de tekengrootte aan het ene uiteinde van de tabel als aan het andere. Een drukkerij die comfortabel 0,5 mm netjes kan aanhouden, zal een perfecte korte-linkcode en een marginale vCard uit dezelfde indeling produceren.
# De minimale breedte, van de andere kant
De meeste mensen arriveren 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 vasthouden — 0,5 mm is een gemeenschappelijke grens voor offset- en digitale drukken op geteeld papier — en de breedte volgt:
| Payload | EC M | EC H |
|---|---|---|
| korte link | 16,5 mm | 18,5 mm |
| Wi-Fi join | 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 |
Dat is het bereik waarmee het internet zich samenpakt tot “ongeveer 2 cm”. Aan de uiteinden ervan is 2 cm ofwel 20% groter dan je nodig hebt of 40% kleiner dan je mee weg kunt komen.
Als je printer 0,33 mm kan aanhouden — fijn screenprinting, goede digitale, geen absorberend papier — deel deze door 1,5. Als je op golfkarton, stof of iets afdrukt dat inkt verspreidt, ga de andere kant op en neem 1 mm aan.
# De grootste hefboom is de URL, niet de printer
Kijk nogmaals naar de eerste tabel. De korte link en de lange product-URL zijn dezelfde informatie — ze brengen iemand naar dezelfde pagina — en één van hen is 25 modules terwijl de andere 45 is.
Dat is het hele spel. Elke millimeter modulegrootte die je koopt door met je printer te bekvechten, kun je gratis krijgen door te verkorten wat de code codeert. Een dynamische korte link is 21 tekens, ongeacht hoe lang de bestemming is, en het heeft een tweede voordeel dat meer uitmaakt op een printrun: je kunt veranderen waar het naartoe wijst nadat de inkt droog is, dus een code die langer meegaat dan de landingspagina wordt geen dood punt.
Voor alles wat klein wordt afgedrukt — een visitekaartje, een label, de hoek van een menu — codeer een korte link en omleiden. Het coderen van de volledige campagne-URL met zijn UTM-tags rechtstreeks in de code kost je 16 modules aan een zijde en koopt niets wat een omleiding niet beter kan doen.
# Wat foutcorrectie je kost in grootte
Foutcorrectie voegt redundantie toe, dus een beschadigde of gedeeltelijk bedekte code leest nog steeds. Het is niet gratis, en de tabellen hierboven prijzen het:
- korte link, M → H: 25 → 29 modules (+16% lineair)
- Wi-Fi join, M → H: 33 → 41 (+24%)
- vCard, M → H: 49 → 61 (+24%)
Een kwart meer breedte, voor een code die het overleeft om te worden geschuurd, op verpakking te worden afgedrukt, of gedeeltelijk door een logo te worden bedekt. Op een poster, waar ruimte gratis is, neem niveau H en stop ermee erover na te denken. Op een label waar 30 mm alles is wat je hebt, niveau M met een korte link slaat 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 ook slechts de helft van wat bepaalt of een afgedrukte code scant:
- We hebben de scanafsstand niet met echte camera’s getest. De industrienorm — de breedte van de code moet ruwweg een tiende van de afstand zijn waaruit je hem wilt scannen — wordt veel aangehaald en we hebben het niet geverifieerd. Behandel het als een uitgangspunt voor posters en signalering, niet als een meting.
- Inktverspreiding, substraat en contrast zijn niet in de getallen. Een 0,4 mm module op geteeld papier en een 0,4 mm module op golfkarton zijn niet dezelfde module.
- Camerakwaliteit varieert enorm. Een vijf jaar oude telefoon in een donker restaurant is de echte test, en het is degene die je daadwerkelijk moet uitvoeren: druk de code af op de grootte die je van plan bent, op het papier dat je van plan bent, en scan het met de slechtste telefoon in het kantoor.
Die laatste is geen voorbehoud, het is het advies. De rekenkunde vertelt je welke afmetingen het waard zijn om te testen. De test vertelt je of het werkt.
# Dit jezelf opnieuw uitvoeren
Elke tabel hierboven wordt door een script gegenereerd 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 coderingsmodussegmenten, drukt de byte-moduscontroletabel naast de echte af, en leidt de millimetergegevens af. Als een getal hier fout is, is dat bestand waar het fout is.
# De korte versie
- Codeer een korte link, niet de volledige URL — het is de enige hefboom die het raster verandert in plaats van het papier.
- Kijk je payload’s moduleaantal hierboven op, of bereken het.
- Vermenigvuldig (modules + 8) met de kleinste module die je drukproces netjes kan aanhouden. Dat is je minimale breedte. (Als je de code in één van onze sjablonen plaatst, een poster op A3 en een folder op A4 laten beide veel meer ruimte over dan elke payload hier nodig heeft.)
- Druk het af op die grootte, op het echte papier, en scan het met een slechte telefoon.
Als je wilt dat de code naast gegevens ook een afbeelding bevat, wordt de groottevraag nog scheper — een foto heeft een veel dichter raster 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.
- Scannen fotocodes QR echt? Onze decode-testresultatenEen QR-code die een foto is, klinkt alsof het slechter moet scannen. We hebben de onze gemeten met een echte decoder — onscherp, verkleind en gelezen zoals een lezer leest.
- Hoe groot kan het logo op een QR-code zijn? We hebben het gemeten"30% foutcorrectie" is geen logobudget. We hebben steeds grotere gaten in codes geslagen op elk EC-niveau totdat een echte decoder het opgaf, en we hebben opgenomen waar het brak.