MostlyQR

Kako majhna sme biti natisnjena koda QR? Velikosti, izračunane

Ni ene same najmanjše velikosti za kodo QR. Pet resničnih vsebin smo prek lastnega kodirnika pretvorili v število modulov, nato pa v milimetre.

Max Čelar··Tiskanje in skeniranje

Kaj je tukaj novega: Različica simbola in število modulov za pet resničnih vrst vsebine pri vseh štirih stopnjah popravka napak, izračunano z našim kodirnikom MostlyQR in pretvorjeno v tiskane milimetre — najmanjša velikost je tako izpeljana iz tvoje vsebine, ne navedena kot ena splošna številka.

Vsak vodnik za tiskanje QR kod ti da eno samo število. Dva centimetra. En palec. Tri centimetre za embalažo. Ta števila so ugibanja, oblečena v standarde, in so napačna v obe smeri: prevelika za kratko povezavo na poslovni karti, nevarno premajhna za vCard na etiketi steklenice.

Pravi odgovor je deljenje, in lahko ga opraviš, preden karkoli natisneš.

# Zakaj ni ene same najmanjše velikosti

QR koda ni slika, ki se manjša. Je mreža modulov — majhnih kvadratkov — in število modulov je določeno z vsebino, ki jo kodiraš, ne s tabo. Kratka povezava s 21 znaki potrebuje mrežo 25×25. vCard z imenom, telefonsko številko in e-pošto potrebuje 49×49. Natisneš oboje pri 25mm in dobiš dve zelo različni stvari: pri prvi je vsak modul širok 0.76mm, pri drugi 0.44mm.

Modul je tisto, kar mora tiskalnik držati in kamera razločiti. Torej vprašanje »kako majhna lahko je moja QR koda« je v resnici »kako majhen lahko je en modul in koliko jih imam« — druga polovica se da izračunati.

# Koliko modulov stane tvoja vsebina

Pet vrst vsebin smo spustili skozi kodirnik, ki ga MostlyQR dejansko uporablja (buildMatrix v našem packages/qr, ki ovija knjižnico MIT node-qrcode), pri vseh štirih stopnjah korekcije napak. Število za poševnico je velikost mreže — število modulov čez eno stran, brez tihe cone.

Vsebina Znaki EC L EC M EC Q EC H
kratka povezava 21 v2 / 25 v2 / 25 v2 / 25 v3 / 29
Wi-Fi prijava (WPA) 47 v3 / 29 v4 / 33 v4 / 33 v6 / 41
kampanjski URL z oznakami UTM 87 v5 / 37 v6 / 41 v7 / 45 v9 / 53
dolg URL izdelka 116 v6 / 41 v7 / 45 v9 / 53 v10 / 57
vCard (ime, organizacija, telefon, e-pošta, URL) 135 v6 / 41 v8 / 49 v9 / 53 v11 / 61

To so točni nizi, tako da lahko vsako vrstico ponoviš:

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

Razpon je poanta. Pri običajnih, vsakdanjih vsebinah mreža sega od 25 do 61 modulov na stran — faktor 2.4 v linearni gostoti, še preden je kdo izbral velikost papirja.

# Če to tabelo preverjaš, jo preveri z nizi

Samo število znakov ne reproducira teh številk, zato se splača vedeti, zakaj, preden zaključiš, da smo jih izračunali narobe.

QR kodirnik ne obravnava vsakega znaka kot bajta. Za vsak niz znakov izbere način kodiranja — numeričnega (3⅓ bita na števko), alfanumeričnega (5½ bita, vendar samo za števke, velike črke in nekaj simbolov) ali bajtnega (8 bitov) — in dober kodirnik razdeli eno vsebino na več segmentov, da dobi najcenejšo skupno dolžino. Naš to počne. Tukaj je, kaj je dejansko izbral:

Vsebina Segmenti
kratka povezava Byte:14 + Alphanumeric:7
Wi-Fi prijava Alphanumeric:10 + Byte:37
kampanjski URL Byte:83 + Numeric:4
dolg URL izdelka Byte:95 + Numeric:7 + Byte:14
vCard Alphanumeric:11 + Byte:1 + Alphanumeric:11 + Byte:44 + Numeric:10 + Byte:49 + Alphanumeric:9

Če iste števce znakov kodiraš kot en sam bajtni niz, dobiš drugo, večjo tabelo — v3/29 za kratko povezavo na stopnji Q namesto v2/25 in v7/45 za vCard na stopnji L namesto v6/41. Obe tabeli sta pravilni; opisujeta različne vsebine.

To ti da brezplačen vzvod, če tvoje kratke povezave uporabljajo velike črke v slugu. https://mqr.sh/AB12CD se razdeli na bajt + alfanumerični del, ker sta shema in gostitelj zapisana z malimi črkami. Zapiši celoten URL z velikimi črkami — HTTPS://MQR.SH/AB12CD — in postane en 21-znakovni alfanumerični segment: pri stopnji L je to v1, 21 modulov, cela različica manj kot mešana oblika z malimi črkami. (Pri stopnjah M in Q ta niz ostane pri v2/25 — že izkorišča alfanumerični rep; prihranek se pokaže pri L in raste z dolžino niza velikih črk.) Shema in gostitelj nista občutljiva na velikost črk, zato se URL razreši enako; pot pa ni, zato to deluje samo, če je tvoj slug res v velikih črkah. Naši so.

# Ista 25mm, pet različnih kod

Zdaj fiksiraj natisnjeno širino in preberi, kaj vsaka vsebina pusti. To je (širina ÷ (moduli + 8)), 8 pa je obvezna štirimodulna tiha cona na vsaki strani:

Vsebina Velikost modula pri EC M, 25mm Velikost modula pri EC H, 25mm
kratka povezava 0.76mm 0.68mm
Wi-Fi prijava 0.61mm 0.51mm
kampanjski URL z oznakami UTM 0.51mm 0.41mm
dolg URL izdelka 0.47mm 0.38mm
vCard 0.44mm 0.36mm

Isti kvadrat na strani. Na enem koncu tabele dvakrat večja velikost značilnosti kot na drugem. Tiskarna, ki se udobno drži 0.5mm, bo iz enake postavitve naredila brezhibno kodo za kratko povezavo in mejno kodo za vCard.

# Najmanjša širina z druge strani

Večina ljudi pride z nasprotnim vprašanjem: ne »kaj dobim pri 25mm«, temveč »kako majhno lahko grem«. Izberi velikost modula, ki ga tvoj tiskalni postopek res zdrži — 0.5mm je pogosta spodnja meja za ofset in dober digitalni tisk na premazanem papirju — in širina sledi:

Vsebina EC M EC H
kratka povezava 16.5mm 18.5mm
Wi-Fi prijava 20.5mm 24.5mm
kampanjski URL z oznakami UTM 24.5mm 30.5mm
dolg URL izdelka 26.5mm 32.5mm
vCard 28.5mm 34.5mm

To je razpon, ki ga internet stisne v »približno 2 cm«. Na njegovih koncih so 2 cm bodisi 20 % večji, kot potrebuješ, bodisi 40 % manjši, kot se lahko izogneš.

Če tvoj tiskalnik zdrži 0.33mm — fini sitotisk, dober digitalni tisk, brez vpojnega papirja — deli te vrednosti z 1.5. Če tiskaš na valovit karton, tekstil ali karkoli, kar razliva barvo, obrni smer in predpostavi 1mm.

# Največji vzvod je URL, ne tiskalnik

Še enkrat poglej prvo tabelo. Kratka povezava in dolg URL izdelka sta ista informacija — oba pripeljeta do iste strani — pa je ena 25 modulov, druga 45.

To je celotna igra. Vsak milimeter velikosti modula, ki ga kupiš s prepiranjem s tiskalnikom, lahko dobiš zastonj tako, da skrajšaš, kar koda kodira. Dinamična kratka povezava ima 21 znakov, ne glede na to, kako dolg je cilj, in ima drugo prednost, ki pri tiskalnem nakladu šteje bolj: lahko spremeniš, kam kaže, potem ko je črnilo suho, tako da koda, ki preživi svojo pristajalno stran, ne postane slepa ulica.

Za vse, kar bo natisnjeno majhno — poslovno karto, nalepko, vogal jedilnega lista — kodiraj kratko povezavo in preusmeritev. Če v kodo neposredno kodiraš celoten kampanjski URL z oznakami UTM, te to stane 16 modulov na stran in ne kupi ničesar, kar preusmeritev ne bi naredila bolje.

# Koliko velikosti stane korekcija napak

Korekcija napak doda redundanco, da se poškodovana ali delno prekrita koda še vedno prebere. Ni brezplačna, zgornje tabele pa to ovrednotijo:

  • kratka povezava, M → H: 25 → 29 modulov (+16 % linearno)
  • Wi-Fi prijava, M → H: 33 → 41 (+24 %)
  • vCard, M → H: 49 → 61 (+24 %)

Četrtina več širine za kodo, ki preživi praskanje, tiskanje na embalaži ali delno prekritje z logotipom. Na plakatu, kjer je prostor zastonj, vzemi stopnjo H in nehaj razmišljati o tem. Na nalepki, kjer je 30mm vse, kar imaš, stopnja M s kratko povezavo premaga stopnjo H z dolgim URL-jem — krajša vsebina nosi več zanesljivosti, kot bi jo dodatna korekcija napak.

Če sredino prekrivaš z logotipom, se kompromis močno premakne v smer H, in obstaja izmerjen proračun za to, kako velik lahko je logotip.

# Kaj to ne meri

Vse zgoraj govori o simbolu. Je aritmetika nad kodirnikom, je natančna in jo lahko ponoviš. Hkrati je to le polovica tega, kar odloča, ali se natisnjena koda prebere:

  • Razdalje skeniranja nismo testirali s pravimi kamerami. Industrijsko pravilo palca — širina kode naj bo približno desetina razdalje, z katere jo želiš skenirati — je široko navedeno, mi pa ga nismo preverili. Obravnavaj ga kot izhodišče za plakate in signalizacijo, ne kot meritev.
  • Razlivanje črnila, podlaga in kontrast niso v številkah. Modul 0.4mm na premazanem kartonu in modul 0.4mm na valovitem kartonu nista isti modul.
  • Kakovost kamer se zelo razlikuje. Petletni telefon v zatemnjeni restavraciji je pravi test, in to je tisti, ki ga moraš dejansko izvesti: natisni kodo v velikosti, ki jo nameravaš, na papirju, ki ga nameravaš, in jo skeniraj z najslabšim telefonom v pisarni.

Zadnja točka ni opozorilo, je nasvet. Aritmetika ti pove, katere velikosti so vredne testiranja. Test ti pove, ali deluje.

# Ponovi to sam

Vsaka tabela zgoraj je natisnjena s skripto in ni tipkana v članek. Skripta je v repozitoriju na draft/mostlyqr/seo/benchmarks/print-size.js. Zažene buildMatrix nad petimi nizi zgoraj, izpiše segmente načina kodiranja, poleg prave natisne kontrolno tabelo bajtnega načina in izpelje milimetrske vrednosti. Če je katera številka tukaj napačna, je napaka v tisti datoteki.

# Na kratko

  1. Kodiraj kratko povezavo, ne celotnega URL-ja — je edini vzvod, ki spremeni mrežo, ne papirja.
  2. Poišči število modulov svoje vsebine zgoraj ali ga izračunaj.
  3. Pomnoži (moduli + 8) z najmanjšim modulom, ki ga tvoj tiskalni postopek zanesljivo drži. To je tvoja najmanjša širina. (Če kodo vstavljaš v eno od naših predlog, plakat v A3 in letak v A4 pustita precej več prostora, kot ga katera koli vsebina tukaj potrebuje.)
  4. Natisni jo v tej velikosti, na pravem papirju, in jo skeniraj z slabim telefonom.

Če želiš, da koda nosi tudi sliko in ne le podatkov, se vprašanje velikosti še bolj zaostri — fotografija potrebuje precej gostejšo mrežo, da je sploh vidna, kar smo ločeno izmerili za fotografske QR kode.

Pogosta vprašanja

Kakšna je najmanjša velikost kode QR?

Ni ene same številke. Koda je mreža modulov, število potrebnih modulov pa je odvisno od tega, koliko podatkov vanjo damo. Kratka povezava pri stopnji popravka napak M je 25 modulov na stran; ista koda z vCard je 49. Pri isti širini tiska so moduli drugega skoraj upola manjši — zato se ena od njiju skenira pri 17 mm, druga pa ne. Najprej izračunaj število modulov, nato izberi širino.

Ali daljši URL naredi kodo QR večjo?

Naredi jo gostejšo, kar je v bistvu isto. V naših meritvah se 21-znakovna kratka povezava pri stopnji M kodira v 25 modulov, 116-znakovni URL izdelka pa v 45. Če oba natisneš 25 mm široka, so moduli 0,76 mm oziroma 0,47 mm. Skrajšanje URL-ja je najcenejši način, da kodo natisneš v majhni velikosti — ne stane nič in je edina ročica, ki spremeni mrežo, ne le papir.

Ali višji popravek napak naredi kodo QR večjo?

Da, in bolj, kot si večina misli. Prehod s stopnje M na H je pri vseh petih vsebinah dodal med 4 in 12 modulov na stran — pri vCard so 49 modulov postali 61, kar je 25-odstotno povečanje linearne velikosti, ki jo moraš natisniti. Stopnja H se običajno splača, če bo koda ročno uporabljena, natisnjena na embalaži ali delno prekrita z logotipom, vendar je to odločitev o velikosti, ne brezplačna nadgradnja.

Koliko belega prostora potrebuje koda QR okoli sebe?

Štiri module na vsaki strani. Ta tihi pas je del simbola, ne okrasek — bralniki ga uporabljajo za iskanje robov — zato ga je treba vključiti v izračun. Zato je vsaka tiskana širina v tem članku izračunana kot (moduli + 8) × velikost modula.

Viri
  1. QR Code standardization (ISO/IEC 18004) — Denso Wave
  2. node-qrcode (the MIT encoder our matrix builder wraps)
Več v tej temi