Jak stworzyć kod QR, który naprawdę da się zeskanować
Kod QR, który zawiesza się przy skanowaniu albo w ogóle nie zostaje rozpoznany, ma niemal zawsze jedną z trzech przyczyn: za dużo danych upchniętych w jednym kodzie, co daje gęsty i trudny do odczytania wzór, za mało kontrastu albo brak białego marginesu wokół kodu, lub źle dobrany poziom korekcji błędów do miejsca, w którym kod będzie używany. Wszystkim trzem można zapobiec, jeśli wiesz, jak są ze sobą powiązane.
Jak kod QR przechowuje dane
Kod QR to nie obrazek w zwykłym sensie, tylko siatka czarnych i białych modułów (tych małych kwadracików), która koduje dane binarne. Im więcej znaków chcesz zapisać, tym więcej modułów potrzebuje kod, a więc tym wyższa jest jego wersja. Standard QR definiuje 40 wersji, od wersji 1 z siatką 21×21 modułów po wersję 40 z siatką 177×177 modułów. Więcej tekstu wejściowego to nie tylko “więcej informacji”, to fizycznie gęstszy wzór z mniejszymi modułami przy tej samej wielkości wydruku.
Właśnie tu widać różnicę między długim linkiem śledzącym a krótkim linkiem przekierowującym. Typowy adres z parametrami kampanii marketingowej wygląda tak:
https://przykladowysklep.pl/produkty/kolekcja-lato-2026?utm_source=ulotka&utm_medium=print&utm_campaign=lato26&utm_content=wariant-a&ref=qr
To ponad 130 znaków. Krótki link na własnej domenie, który po stronie serwera przekierowuje do tej samej strony docelowej, wygląda tak:
https://przykladowysklep.pl/lato26
Niecałe 35 znaków. Przy tym samym poziomie korekcji błędów i tej samej wielkości wydruku krótki adres daje wyraźnie większe i czytelniejsze moduły niż długi, bo w tę samą powierzchnię trzeba upakować mniej surowych danych. Telefon skanujący kod z odległości metra albo w słabym świetle rozpozna duże moduły pewniej niż drobne. Jeśli potrzebujesz parametrów śledzących, zbieraj je po stronie serwera przez krótki link, zamiast wpisywać je bezpośrednio w adres kodowany w QR.
Tę samą zasadę stosuje się do zwykłego tekstu, numerów telefonu (tel:) i adresów e-mail (mailto:): im krótsze dane wejściowe, tym prostszy i bardziej odporny wynikowy kod.
Poziom korekcji błędów i prawdziwy kompromis
Każdy kod QR zawiera dane nadmiarowe zapisane metodą Reed-Solomona, dzięki czemu pozostaje czytelny nawet wtedy, gdy jego część jest zasłonięta, zabrudzona lub uszkodzona. To, ile redundancji trafia do kodu, ustalasz przez poziom korekcji błędów. Standard definiuje cztery poziomy:
| Poziom | Tolerancja na uszkodzenie | Najlepsze zastosowanie |
|---|---|---|
| L (Niski) | do ~7% | Czysty użytek cyfrowy na ekranach, bez ryzyka zabrudzenia czy uszkodzenia, gdzie każdy znak wpływa na wielkość kodu |
| M (Średni) | do ~15% | Ogólny standard, którego większość generatorów używa jako wartości domyślnej |
| Q (Kwartylowy) | do ~25% | Kody drukowane, dotykane, wystawione na zewnątrz albo narażone na zabrudzenie i zarysowania |
| H (Wysoki) | do ~30% | Kody z logo lub ikoną na środku, bo logo blokuje część danych, a kod musi to tolerować |
Kompromis, który większość osób pomija, jest taki: wyższa korekcja błędów oznacza więcej danych nadmiarowych, a więcej danych przy tej samej treści wejściowej daje kod wizualnie gęstszy, z mniejszymi modułami przy tej samej wielkości fizycznej. Korekcja błędów nie ułatwia więc sama w sobie skanowania, tylko zwiększa odporność na uszkodzenia kosztem gęstszego wzoru.
Stąd bierze się popularny błąd: ktoś, kto przy długim adresie URL wybiera poziom H “na wszelki wypadek”, bo “wysoki” brzmi jak “lepszy”, nie dostaje kodu łatwiejszego do odczytania, tylko gęstszy i przez to trudniejszy do zeskanowania. Właściwy wybór zależy od miejsca użycia, nie od zasady “im więcej, tym lepiej”. Ulotka na czystym stoliku w restauracji nie potrzebuje poziomu H. Naklejka na placu budowy albo na pojeździe stojącym na zewnątrz zyskuje za to wyraźnie na poziomie Q lub H, bo jest narażona na warunki pogodowe i ścieranie. Kod z logo firmy na środku niemal zawsze wymaga poziomu H, bo samo logo jest częścią “uszkodzenia”, które kod musi zrekompensować.
Praktyczna zasada: trzymaj dane wejściowe krótko, wybierz najniższy poziom korekcji błędów wystarczający do miejsca użycia, a otrzymasz najłatwiejszy do zeskanowania kod dla swojego celu.
Stwórz własny kod QR
Wpisz adres URL, tekst, numer telefonu lub adres e-mail, a kod QR powstanie od razu w przeglądarce, bez wysyłania danych na żaden serwer:
Częste błędy
Wklejanie długiego linku śledzącego zamiast krótkiego linku przekierowującego. Każdy parametr kampanii i każdy identyfikator sesji wydłuża dane wejściowe i zagęszcza wzór. Przekieruj przez krótki link na własnej domenie i zbieraj dane śledzące po stronie serwera, zamiast wpisywać je bezpośrednio w tekst kodowany w QR.
Kolory o niskim kontraście lub brak białego marginesu ciszy przy umieszczaniu kodu w projekcie graficznym. Kod QR potrzebuje wyraźnego kontrastu między kolorem modułów a tłem (najlepiej czarny na białym albo przynajmniej wyraźnie ciemny na jasnym) oraz wolnego, białego marginesu, tak zwanego marginesu ciszy, o szerokości co najmniej czterech modułów z każdej strony. Kiedy kod styka się bezpośrednio z logo albo blokiem tekstu bez odstępu, aplikacje skanujące tracą punkt odniesienia, po którym w ogóle rozpoznają, że to kod QR.
Pomijanie prawdziwego testu skanowania telefonem przed masowym drukiem. Kod, który na ekranie wygląda idealnie, może zawieść po wydrukowaniu w mniejszym rozmiarze, na matowym zamiast błyszczącego papieru, albo przy innej ilości farby. Wydrukuj jeden egzemplarz testowy w docelowym rozmiarze na docelowym materiale i zeskanuj go kilkoma różnymi urządzeniami, zanim tysiące ulotek pójdzie do druku.
Korzystanie ze skracacza URL, którego nie kontrolujesz, zamiast linku na własnej domenie. Zewnętrzny serwis skracający może zamknąć usługę, sprzedać domenę albo przekierować link gdzie indziej, długo po tym, jak kod QR trafił już na wydrukowane materiały. Prosty przekierowujący adres na własnej domenie zostaje pod twoją kontrolą i można go w każdej chwili skierować na nowy cel, bez konieczności zmiany wydrukowanego kodu.
Zakładanie, że każda aplikacja skanująca obsługuje kody WiFi i vCard tak samo jak zwykły URL. Natywna aplikacja aparatu w iOS i Androidzie rozpoznaje kody z adresem URL niezawodnie i otwiera je bezpośrednio w przeglądarce. Dane dostępowe do sieci WiFi i wizytówki vCard nie są traktowane przez wszystkie aplikacje tak samo: niektóre pokazują tylko surowy tekst zamiast automatycznie połączyć z siecią albo zapisać kontakt. Przetestuj te formaty na urządzeniach, których faktycznie używa twoja grupa docelowa, zanim na nich polegasz.
Najczęściej zadawane pytania
Czy kody QR wygasają? Nie, sam statyczny kod QR nie wygasa. Koduje dane bezpośrednio i pozostaje ważny na zawsze. To, co może wygasnąć, to cel, do którego prowadzi: jeśli kod wskazuje na adres URL, a ta strona zostanie później usunięta lub przeniesiona, skan prowadzi donikąd. Dlatego opłaca się kodować stabilny link na własnej domenie, który w razie potrzeby można przekierować, zamiast adresu, którego nie da się już zmienić.
Jaki minimalny rozmiar druku zapewnia niezawodne skanowanie z danej odległości? Popularna zasada mówi, że długość boku kodu powinna wynosić co najmniej jedną dziesiątą planowanej odległości skanowania. Dla skanu z około 30 centymetrów, jak przy stojaku na stole czy ulotce trzymanej w ręku, wystarcza bok o długości około 3 centymetrów przy niskiej lub średniej korekcji błędów. Dla plakatu, który ma być skanowany z kilku metrów, kod musi być odpowiednio większy.
Czy mogę bezpiecznie umieścić logo na środku kodu QR? Tak, pod warunkiem że użyjesz poziomu korekcji błędów H, a logo nie zasłania więcej niż około 20 do 30% powierzchni kodu. Poziom H toleruje do około 30% uszkodzenia lub zasłonięcia, dokładnie z myślą o takim przypadku. Po dodaniu logo koniecznie przetestuj kod kilkoma różnymi aplikacjami skanującymi, bo niektóre reagują na logo bardziej wrażliwie niż inne.
Czym różni się statyczny kod QR od dynamicznego, śledzalnego kodu QR? Statyczny kod QR koduje dane docelowe bezpośrednio i na stałe we wzorze: jest darmowy i nie zależy od żadnej zewnętrznej usługi, ale celu nie da się już później zmienić. Dynamiczny kod QR koduje zamiast tego krótki link przekierowujący, którego cel można później zmienić na platformie dostawcy, a skany można liczyć, co jednak oznacza, że kod zależy od dalszego działania tej usługi przekierowującej. Dla trwałych materiałów drukowanych często najbardziej odporne rozwiązanie łączy zalety obu: link przekierowujący na własnej domenie, który można zmieniać jak kod dynamiczny, ale bez zależności od zewnętrznego dostawcy.