MostlyQR

Jak mały może być wydrukowany kod QR? Rozmiary, wyliczone

Nie ma jednego minimalnego rozmiaru kodu QR. Pięć prawdziwych ładunków przepuściliśmy przez nasz koder, by policzyć moduły, a potem zamieniliśmy je na milimetry.

Max Čelar··Drukowanie i skanowanie

Co nowego tutaj: Liczba wersji i modułów dla pięciu prawdziwych typów ładunków na wszystkich czterech poziomach korekcji błędów, obliczona naszym koderem MostlyQR, a następnie przeliczona na milimetry wydruku — minimalny rozmiar wynika więc z twojego ładunku, a nie jest podawany jako jedna ogólna liczba.

Każdy poradnik o drukowaniu kodów QR podaje jedną liczbę. Dwa centymetry. Jeden cal. Trzy centymetry dla opakowań. Te liczby to zgadywanki przebrane za standardy i są błędne w obu kierunkach: za duże dla krótkiego linku na wizytówce, niebezpiecznie za małe dla vCard na etykiecie butelki.

Prawdziwa odpowiedź to dzielenie, które możesz wykonać, zanim cokolwiek wydrukujesz.

# Dlaczego nie ma jednego minimalnego rozmiaru

Kod QR nie jest obrazkiem, który się zmniejsza. Jest siatką modułów — małych kwadracików — a liczba modułów jest ustalana przez twoje dane, a nie przez ciebie. Dwadzieścia jeden znaków krótkiego linku wymaga siatki 25×25. vCard z imieniem, numerem telefonu i adresem e-mail wymaga 49×49. Wydrukuj oba w 25 mm i wydrukujesz dwie bardzo różne rzeczy: w pierwszym module mają 0.76 mm szerokości, w drugim 0.44 mm.

Moduł to to, co drukarka musi utrzymać, a aparat musi rozpoznać. Więc pytanie „jak mały może być mój kod QR” to tak naprawdę pytanie „jak mały może być jeden moduł i ile ich mam” — a druga połowa jest obliczalna.

# Ile twoje dane kosztują w modułach

Przepuściliśmy pięć typów danych przez koder, którego faktycznie używa MostlyQR (buildMatrix w naszym packages/qr, który opakowuje bibliotekę MIT node-qrcode), przy wszystkich czterech poziomach korekcji błędów. Liczba po ukośniku to rozmiar siatki — liczba modułów na jednym boku, bez strefy ciszy.

Dane Znaki EC L EC M EC Q EC H
krótki link 21 v2 / 25 v2 / 25 v2 / 25 v3 / 29
Dołączenie do Wi-Fi (WPA) 47 v3 / 29 v4 / 33 v4 / 33 v6 / 41
kampanijny URL z tagami UTM 87 v5 / 37 v6 / 41 v7 / 45 v9 / 53
długi URL produktu 116 v6 / 41 v7 / 45 v9 / 53 v10 / 57
vCard (imię, organizacja, telefon, e-mail, URL) 135 v6 / 41 v8 / 49 v9 / 53 v11 / 61

To są dokładne ciągi znaków, więc możesz odtworzyć każdy wiersz:

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

Rozrzut jest istotą sprawy. W zwykłych, codziennych danych siatka waha się od 25 do 61 modułów na bok — czynnik 2.4 w gęstości liniowej, zanim ktokolwiek wybierze format papieru.

# Jeśli sprawdzasz tę tabelę, sprawdź ją ciągami znaków

Sama liczba znaków nie odtworzy tych liczb i warto wiedzieć dlaczego, zanim uznasz, że się pomyliliśmy.

Koder QR nie traktuje każdego znaku jako bajtu. Wybiera tryb kodowania dla każdego ciągu znaków — numeryczny (3⅓ bita na cyfrę), alfanumeryczny (5½ bita, ale tylko dla cyfr, wielkich liter i kilku symboli) albo bajtowy (8 bitów) — i dobry koder dzieli dane na kilka segmentów, aby uzyskać najtańszą sumę. Nasz tak robi. Oto co faktycznie wybrał:

Dane Segmenty
krótki link Byte:14 + Alphanumeric:7
Dołączenie do Wi-Fi Alphanumeric:10 + Byte:37
kampanijny URL Byte:83 + Numeric:4
długi URL produktu Byte:95 + Numeric:7 + Byte:14
vCard Alphanumeric:11 + Byte:1 + Alphanumeric:11 + Byte:44 + Numeric:10 + Byte:49 + Alphanumeric:9

Zakoduj te same liczby znaków jako jeden ciąg bajtów i dostaniesz inną, większą tabelę — v3/29 dla krótkiego linku na poziomie Q zamiast v2/25, i v7/45 dla vCard na poziomie L zamiast v6/41. Obie tabele są poprawne; opisują różne dane.

Daje to darmową dźwignię, jeśli twoje krótkie linki mają wielkie litery w slugu. https://mqr.sh/AB12CD dzieli się na bajt + alfanumeryczny, ponieważ schemat i host są pisane małymi literami. Napisz cały URL wielkimi literami — HTTPS://MQR.SH/AB12CD — a stanie się jednym 21-znakowym segmentem alfanumerycznym: na poziomie L to v1, 21 modułów, cała wersja mniej niż forma mieszana. (Na poziomach M i Q ten konkretny ciąg zostaje przy v2/25 — już korzysta z alfanumerycznego ogona; zysk pojawia się na L i rośnie wraz z długością ciągu wielkich liter.) Schemat i host nie rozróżniają wielkości liter, więc URL działa identycznie; ścieżka już tak, więc to zadziała tylko wtedy, gdy twój slug naprawdę jest pisany wielkimi literami. Nasze są.

# Ten sam kwadrat 25 mm, pięć różnych kodów

Teraz ustal stałą szerokość wydruku i odczytaj, co zostaje każdym danym. To jest (szerokość ÷ (moduły + 8)), gdzie 8 to obowiązkowe cztery moduły strefy ciszy z każdej strony:

Dane Rozmiar modułu EC M przy 25 mm Rozmiar modułu EC H przy 25 mm
krótki link 0.76 mm 0.68 mm
Dołączenie do Wi-Fi 0.61 mm 0.51 mm
kampanijny URL z UTM 0.51 mm 0.41 mm
długi URL produktu 0.47 mm 0.38 mm
vCard 0.44 mm 0.36 mm

Ten sam kwadrat na stronie. Dwukrotna różnica wielkości elementu między jednym końcem tabeli a drugim. Drukarnia, która swobodnie utrzyma 0.5 mm, wyprodukuje idealny kod krótkiego linku i marginalny vCard z identycznego układu.

# Minimalna szerokość, od drugiej strony

Większość osób przychodzi z odwrotnym pytaniem: nie „co dostanę przy 25 mm”, lecz „jak mały mogę zejść”. Wybierz rozmiar modułu, który twój proces drukarski faktycznie utrzyma — 0.5 mm to typowe minimum dla offsetu i przyzwoitego druku cyfrowego na powlekanym papierze — a szerokość wynika z tego:

Dane EC M EC H
krótki link 16.5 mm 18.5 mm
Dołączenie do Wi-Fi 20.5 mm 24.5 mm
kampanijny URL z UTM 24.5 mm 30.5 mm
długi URL produktu 26.5 mm 32.5 mm
vCard 28.5 mm 34.5 mm

To ten zakres, który internet streszcza jako „mniej więcej 2cm”. Na jego krańcach 2cm to albo 20% więcej, niż potrzebujesz, albo 40% mniej, niż możesz sobie pozwolić.

Jeśli twoja drukarka utrzyma 0.33 mm — dobry sitodruk, dobry druk cyfrowy, bez chłonnego podłoża — podziel te wartości przez 1.5. Jeśli drukujesz na tekturze falistej, tkaninie albo czymkolwiek, co rozlewa tusz, idź w drugą stronę i zakładaj 1 mm.

# Największa dźwignia to URL, nie drukarka

Spójrz jeszcze raz na pierwszą tabelę. Krótki link i długi URL produktu niosą tę samą informację — oba prowadzą do tej samej strony — a jeden ma 25 modułów, podczas gdy drugi 45.

To cała gra. Każdy milimetr rozmiaru modułu, który kupujesz, kłócąc się z drukarzem, możesz dostać za darmo, skracając to, co kod koduje. Dynamiczny krótki link ma 21 znaków, niezależnie od długości miejsca docelowego, i ma drugą zaletę, która ma większe znaczenie przy nakładzie: możesz zmienić, dokąd wskazuje, gdy tusz już wyschnie, więc kod, który przeżywa swoją stronę docelową, nie staje się ślepą uliczką.

Dla wszystkiego, co będzie drukowane małe — wizytówki, etykiety, róg menu — koduj krótki link i przekierowanie. Kodowanie pełnego URL kampanii z tagami UTM bezpośrednio w kodzie kosztuje cię 16 modułów z każdej strony i nie kupuje niczego, czego przekierowanie nie robi lepiej.

# Ile korekcja błędów kosztuje rozmiar

Korekcja błędów dodaje redundancję, dzięki czemu uszkodzony lub częściowo zakryty kod nadal się odczyta. Nie jest darmowa, a powyższe tabele ją wyceniają:

  • krótki link, M → H: 25 → 29 modułów (+16% liniowo)
  • Dołączenie do Wi-Fi, M → H: 33 → 41 (+24%)
  • vCard, M → H: 49 → 61 (+24%)

Ćwierć więcej szerokości za kod, który przeżyje zarysowanie, wydruk na opakowaniu albo częściowe przysłonięcie logo. Na plakacie, gdzie miejsce jest darmowe, wybierz poziom H i przestań o tym myśleć. Na etykiecie, gdzie 30 mm to wszystko, co masz, poziom M z krótkim linkiem pokonuje poziom H z długim URL — krótsze dane niosą więcej odporności niż dodatkowa korekcja błędów.

Jeśli zasłaniasz środek logo, kompromis mocno przesuwa się w stronę H, a istnieje zmierzony budżet na to, jak duże może być logo.

# Czego to nie mierzy

Wszystko powyżej dotyczy symbolu. To arytmetyka nad koderem, jest dokładna i możesz ją powtórzyć. To także tylko połowa tego, co decyduje o tym, czy wydrukowany kod się skanuje:

  • Nie testowaliśmy odległości skanowania prawdziwymi aparatami. Branżowa zasada kciuka — szerokość kodu powinna być mniej więcej jedną dziesiątą odległości, z której chcesz go skanować — jest szeroko cytowana, a my jej nie zweryfikowaliśmy. Traktuj ją jako punkt wyjścia dla plakatów i oznakowania, a nie jako pomiar.
  • Rozlewanie tuszu, podłoże i kontrast nie są uwzględnione w liczbach. Moduł 0.4 mm na powlekanym kartonie i moduł 0.4 mm na tekturze falistej to nie ten sam moduł.
  • Jakość aparatu bardzo się różni. Pięcioletni telefon w przyciemnionej restauracji to prawdziwy test i to ten, który powinieneś faktycznie przeprowadzić: wydrukuj kod w rozmiarze, który zamierzasz, na podłożu, które zamierzasz, i zeskanuj go najgorszym telefonem w biurze.

Ten ostatni nie jest zastrzeżeniem, to jest rada. Arytmetyka mówi, które rozmiary warto przetestować. Test mówi, czy to działa.

# Powtórzenie tego samodzielnie

Każda tabela powyżej jest wygenerowana przez skrypt, a nie wpisana ręcznie do artykułu, a skrypt znajduje się w repozytorium w draft/mostlyqr/seo/benchmarks/print-size.js. Uruchamia buildMatrix na pięciu ciągach powyżej, zrzuca segmenty trybów kodowania, wypisuje tabelę kontrolną trybu bajtowego obok prawdziwej i wylicza wartości w milimetrach. Jeśli jakaś liczba tutaj jest błędna, właśnie tam jest błąd.

# Krótka wersja

  1. Koduj krótki link, nie pełny URL — to jedyna dźwignia, która zmienia siatkę zamiast papieru.
  2. Sprawdź liczbę modułów dla swoich danych powyżej albo ją oblicz.
  3. Pomnóż (moduły + 8) przez najmniejszy moduł, jaki twój proces drukarski utrzymuje czysto. To twoja minimalna szerokość. (Jeśli wkładasz kod do jednego z naszych szablonów, plakat w A3 i ulotka w A4 zostawiają znacznie więcej miejsca, niż jakiekolwiek dane tutaj potrzebują.)
  4. Wydrukuj w tym rozmiarze, na prawdziwym podłożu, i zeskanuj słabym telefonem.

Jeśli chcesz, żeby kod niósł też obraz, pytanie o rozmiar staje się jeszcze ostrzejsze — zdjęcie wymaga znacznie gęstszej siatki, żeby w ogóle było widoczne, co zmierzyliśmy osobno dla kodów QR ze zdjęciem.

Często zadawane pytania

Jaki jest minimalny rozmiar kodu QR?

Nie ma jednej liczby. Kod to siatka modułów, a ich liczba zależy wyłącznie od ilości danych w nim zapisanych. Krótki link przy korekcji błędów poziomu M ma 25 modułów w poprzek; ten sam kod przenoszący vCard ma 49. Wydrukowane w tej samej szerokości moduły drugiego są prawie o połowę mniejsze — jeden z nich skanuje się przy 17mm, a drugi nie. Najpierw policz moduły, a potem wybierz szerokość.

Czy dłuższy URL powiększa kod QR?

Zagęszcza go, co na jedno wychodzi. W naszych pomiarach 21-znakowy krótki link koduje się do 25 modułów na poziomie M, a 116-znakowy URL produktu do 45. Wydrukowane obie po 25mm, moduły mają odpowiednio 0.76mm i 0.47mm. Skrócenie URL-a to najtańszy sposób, by kod dał się wydrukować małym — nic nie kosztuje i jest to jedyna dźwignia, która zmienia siatkę, a nie papier.

Czy wyższa korekcja błędów powiększa kod?

Tak, i bardziej, niż większość ludzi się spodziewa. Przejście z poziomu M na H dodało od 4 do 12 modułów na bok we wszystkich pięciu ładunkach — w przypadku vCard 49 modułów zamieniło się w 61, czyli o 25% większy rozmiar liniowy do wydrukowania. Poziom H zwykle się opłaca, jeśli kod będzie dotykany, drukowany na opakowaniu albo częściowo zasłonięty logo, ale to decyzja o rozmiarze, a nie darmowe ulepszenie.

Ile białej przestrzeni potrzebuje kod QR dookoła?

Cztery moduły z każdej strony. Ta cicha strefa jest częścią symbolu, a nie ozdobą — czytniki używają jej do znajdowania krawędzi — więc musi wejść do obliczeń. Dlatego każda szerokość wydruku w tym artykule jest wyliczona jako (moduły + 8) × rozmiar modułu.

Źródła
  1. QR Code standardization (ISO/IEC 18004) — Denso Wave
  2. node-qrcode (the MIT encoder our matrix builder wraps)
Więcej w tym temacie