Skip to content
LinkProfit

QR Code Marketing: A Practical Guide

LinkProfit Team11 min read
  • qr-codes
  • marketing
  • analytics
On this page

A QR code is a link you can print. That is the whole idea, and it explains both why the format keeps coming back and why so many implementations fail. The code itself is trivial technology, standardized since the 1990s and readable by every phone camera without an app. Everything around it is not: choosing a surface where scanning makes sense, keeping the destination changeable after the artwork ships, printing at a size someone can read, and knowing afterward whether it worked. This guide covers each, plus the packaging change about to make codes on physical products permanent fixtures rather than campaign tactics.

Where QR Codes Earn Their Place

The useful question is not whether QR codes work, but whether there is a gap between something physical and something digital for the code to close. Where that gap exists, a code is the shortest bridge available. Where it does not, the code is decoration.

Contexts where the gap is real

Product packaging is the strongest case. A box, bottle, or label is in someone's hand with no way to reach the manufacturer, and the code carries them to instructions, ingredient detail, registration, warranty, reordering, or a recipe. The surface is also permanent in a way no digital placement is: that package sits in a cupboard for months.

Printed collateral is the second. Direct mail, catalogs, inserts, and business cards all end a conversation the recipient cannot continue without retyping something. Signage works when the audience is stationary — transit platforms, waiting rooms, elevator lobbies, shop windows. Restaurant tables and menus work for the same reason: the person is seated, the phone is nearby, and the alternative is worse.

Events are the most measurable case. Badges, booth panels, session slides, and printed agendas reach an audience whose hands are full and who will not remember a URL an hour later. Because attendance is bounded, scan rates from an event are one of the few honest numbers in this discipline.

Field equipment rarely gets a mention and deserves one. A code on a machine, meter, or installed appliance connects a technician or owner to the exact manual, part number, or service form for that unit. No campaign, no expiry, enormous practical value.

Contexts where the code is decoration

A QR code on a screen the reader is already holding solves nothing. Codes in email are the clearest example: most email is opened on the phone that would have to scan it, and asking someone to point a phone at itself is not a user journey. Put a button there instead.

Anything the audience passes at speed fails. Highway billboards, bus wraps, and vehicle liveries do not give a camera the seconds it needs to focus and lock. Dark venues fail for the same reason, since cameras need contrast that low light removes.

Television and streaming placements are borderline: workable when the code holds on screen and viewers are seated, wasted on a three-second flash. And any code whose destination is an app store page, a desktop-only form, or an unoptimized site fails after the scan rather than during it — you paid for the print, earned the interest, and lost the person on arrival.

Static Versus Dynamic Codes

This is the single decision that most determines whether a QR program succeeds, and it is usually made by whoever generated the image, without anyone realizing a decision was made.

A static code holds the destination address inside its own pattern. The modules are the URL. Nothing sits between the scanner and the destination, which means nothing can be changed and nothing can be counted.

A dynamic code holds a short link. The pattern encodes something like go.yourbrand.com/rx7, and the destination behind that slug is a database record you edit whenever you like. The printed artwork never changes; where it leads can change every week.

| Property | Static code | Dynamic code | | --- | --- | --- | | Destination after printing | Fixed forever | Editable at any time | | Scan measurement | None possible | Full click analytics | | Pattern density | Grows with URL length | Constant and low | | Broken destination | Requires reprint | Fixed in seconds | | A/B or geo routing | Not possible | Routed at redirect | | Dependency | None | The redirect service must stay up |

The reprint argument decides it in almost every real case. Print runs are expensive and slow, and destinations rot faster than packaging: campaigns end, landing pages are restructured, product lines are renamed, agencies hand over sites. A static code on 200,000 units becomes a dead end the moment anyone touches the destination's URL structure. The dynamic equivalent is repointed in one edit.

The density difference matters more than it sounds. A tagged campaign URL of 130 characters produces a visibly denser symbol than a 24-character short link, and density is the enemy of scanning: at a fixed printed size, more modules means each module is smaller, which means the camera needs to be closer or the print needs to be sharper. Shortening the encoded string is the cheapest reliability improvement available.

The honest caveat is dependency. A dynamic code needs the redirect service to resolve for as long as the printed material exists — an argument for your own domain rather than a shared one. A domain you control can be repointed at another provider; a code printed with a vendor's domain is only as durable as that relationship.

Designing a Code That Scans

Contrast and color

Scanners look for dark modules on a light background. Keep the foreground substantially darker than the background and you have solved most of the problem. Inverting the code — light modules on dark — fails on a meaningful share of scanners even though some handle it, and there is no reason to accept that loss.

Brand color is usually fine for the modules provided it is genuinely dark. Pastels, mid-tone yellows, and anything with low luminance difference from the background are not. If you are unsure, convert the design to grayscale and look at it: if the pattern goes muddy, cameras will struggle too.

The quiet zone

Every QR code needs a clear margin of at least four modules on all sides. This is not a design preference, it is how the decoder finds the symbol boundary. Designers under space pressure crop it, and codes that scanned perfectly in the proof stop scanning in production. Protect the margin before you protect anything else in the layout.

Error correction and logos

QR codes carry redundant data so they remain readable when damaged. Four levels exist, recovering roughly 7, 15, 25, and 30 percent of the symbol at levels L, M, Q, and H respectively. Higher correction means more modules for the same content, so it is a trade rather than a free upgrade.

Level H is what makes a centered logo possible. Keep the logo under about 20 percent of the symbol area, centered, and never overlapping the three large position squares in the corners or the alternating timing lines that connect them. Those are structural. Rounded module shapes and custom corner styling are cosmetically safe within reason, but every stylistic step away from a plain grid costs a little reliability, and the loss shows up on older phones rather than on yours.

Format and print

Generate vector output — SVG, EPS, or PDF — for anything going to print. A QR code is geometry, not a photograph, and a raster image upscaled to poster size produces soft module edges that scanners read as noise. Ask for a proof on the real substrate: matte carton, glossy laminate, and fabric behave very differently, and gloss creates glare that blinds a camera at exactly the angle people hold a phone.

Our QR code generator produces vector output with error correction and quiet zone handled correctly, and the QR studio inside the product adds branded styling, logo placement, and export presets for print production.

Size and Scanning Distance

The working rule is a ratio of about ten to one between the distance a person will stand and the width of the printed code.

| Scanning distance | Minimum printed width | Typical placement | | --- | --- | --- | | 30 cm | 3 cm | Packaging, business cards, table tents | | 1 m | 10 cm | Shelf displays, posters at eye level, badges | | 3 m | 30 cm | Wall signage, booth graphics, window displays | | 6 m | 60 cm | Large indoor signage, stage backdrops | | 10 m | 100 cm | Building wraps, transit platform panels |

Treat these as floors rather than targets. Three factors push the required size up: a long encoded string, high error correction, and any surface that is curved, glossy, or likely to be viewed at an angle. A code wrapped around a bottle loses grid geometry as it curves, so keep it on the flattest panel available and print it larger than the table suggests.

The last step is not optional: print a physical proof and scan it from the actual distance, in the actual lighting, with at least three different phones including an older one. Every failure mode in this section is invisible on a monitor.

The Words Around the Code

A bare code is a request without a reason. Give the person the reason in the few words next to it, and be specific: the offer, the content, the action. Anything that could be printed under any code in the world is doing no work.

Print a readable short URL alongside the code as a fallback. Some people will not scan, some cameras will fail, and a branded short link is short enough to type. This is a practical argument for a branded domain over a generic shortener: go.yourbrand.com/setup can be read aloud and typed, and it tells the reader where they are going before they commit.

Measuring Scans as Clicks

A dynamic QR scan is an ordinary HTTP request to your redirector, which means it produces exactly the same data as any other link click: timestamp, approximate location, device type, browser, and operating system. Everything in our guide to tracking link clicks applies unchanged.

The design decision that makes the data useful is granularity. One code across every surface tells you a total and nothing else. A distinct code per placement, each carrying its own campaign parameters, tells you that the back panel outperforms the shelf talker four to one, which is a decision you can act on at the next print run. Use utm_medium=qr consistently and put the physical surface in utm_source, with the exact placement in utm_content — the conventions in our UTM guide apply to print the same way they apply to email.

Geography is unusually informative for print. Because a printed code has a physical location, the location data on scans validates distribution: codes scanning from cities where you did not distribute mean the material traveled, and codes not scanning from regions where you did mean the material did not arrive. That is a supply chain signal you get for free.

Be honest about the limits. A scan is a request, not a person: someone may scan twice, a camera app may prefetch a preview, and crawlers do reach short links. Scan counts are reliable for comparing placements and unreliable as an absolute headcount. The analytics view separates total scans from approximate unique visitors, and the gap between them is worth watching.

The Shift to 2D Barcodes on Packaging

Something larger is arriving for anyone who sells physical products. The retail industry is moving from the linear UPC and EAN barcodes that have been scanned at checkout for fifty years toward 2D symbols, with the transition targeted for 2027 and retailers progressively upgrading scanners to accept both.

The standard behind it is GS1 Digital Link, which expresses product identifiers such as the GTIN as a web address. One symbol on the pack then serves two audiences at once: a point-of-sale scanner extracts the product identifier from it, and a consumer's phone opens a web page. Batch numbers, expiry dates, and serial numbers can ride in the same symbol, which is why regulated categories are moving first.

The commercial consequence is that the code on a package stops being campaign artwork and becomes permanent product infrastructure — a channel to every buyer of every unit, for that unit's entire shelf life. Enterprise link vendors have read the same signal: BL.INK has built its 2026 positioning around GS1 Digital Link and 2D barcodes on packaging, aimed at consumer goods and healthcare.

You do not have to wait for the standard to act on it. The preparation is architectural rather than technical: make every code on a physical product dynamic, put it on a domain you control, and treat the destination as something that will be re-pointed many times. Teams that do this arrive at the transition with a working redirect layer; teams that printed static codes arrive with a reprint bill. Our e-commerce solutions page covers how packaging codes sit alongside SMS and campaign links in one measurement stack.

A Deployment Checklist

  1. Confirm the gap is real. The audience is physically present, the phone is available, and there is no faster path to the same destination.
  2. Make it dynamic, on your own domain. Anything printed outlives its first destination.
  3. Give each placement its own code. One code per surface, with campaign parameters that name that surface.
  4. Check the destination on a phone first. Mobile-optimized, fast, and matching what the printed copy promised.
  5. Size from the real scanning distance. Ten to one as the floor, larger for curved, glossy, or dense codes.
  6. Protect the quiet zone. Four modules of clear margin, defended against layout pressure.
  7. Export vector, proof on the real substrate. Never upscale a raster file for print.
  8. Test on several phones, including an old one. Your device is the least representative one available.
  9. Print a readable short URL alongside. The fallback costs one line and recovers real traffic.
  10. Review the data after two weeks. Compare placements, then change the destination rather than the print.

Where to Start

The failure modes here are boring and repeatable: a static code that cannot be changed, a symbol printed too small, a cropped margin, a destination that was only ever checked on a laptop, and no way to tell which surface did the work. All five are avoidable before anything goes to print.

Generate a code with the free QR code generator to see what a correct vector export looks like, and use the QR studio when you need branded codes on your own domain with per-placement analytics behind them. Then print one proof, scan it from across the room, and let the phone tell you whether the design survived the physical world.

Questions people ask

What is the difference between a static and a dynamic QR code?

A static code encodes the destination address directly in its pattern, so changing where it goes means generating a new code and reprinting everything it appears on. A dynamic code encodes a short link instead; the destination lives in a database record you can edit at any time. Because the printed pattern never changes, one code can be repointed for years, and because every scan passes through a redirect you control, scans are measurable.

How big does a printed QR code need to be?

The common working rule is a ten-to-one ratio between scanning distance and code width: roughly 10 cm across for a code read from one meter, 30 cm for three meters. That is a starting point, not a guarantee. Longer destination URLs and higher error correction both add modules, which shrinks each module at a fixed overall size, so a dense code needs to be printed larger than a sparse one. Always test a physical proof at the real distance.

Can I put a logo in the middle of a QR code?

Yes, within limits. Error correction lets a code be read with part of its area obscured, and at the highest level roughly 30 percent of the symbol can be damaged or covered. In practice keep a centered logo under about 20 percent of the area, never cover the three large corner squares or the timing patterns between them, and verify with several phones before committing to print.

Do QR codes still work if the print is glossy or curved?

They can, but both conditions cost you reliability. Glossy laminate creates glare that blinds the camera at certain angles, and a code wrapped around a bottle or can distorts the module grid. Matte finishes scan far more reliably, and on curved surfaces you should keep the code on the flattest available panel and print it larger than the distance rule suggests.

How do I measure how many people scanned a QR code?

Only dynamic codes can be measured, because measurement happens at the redirect rather than in the printed symbol. Each scan is an HTTP request, so you get timestamp, approximate location, device type, and operating system exactly as you would for any link click. Give each placement its own code and its own campaign parameters, and you can compare the back panel against the shelf talker instead of guessing.

What is GS1 Digital Link and does it affect my packaging?

GS1 Digital Link is a standard that expresses product identifiers such as the GTIN as a web address, so a single 2D symbol on a pack can serve both the checkout scanner and a consumer landing page. The industry transition toward 2D barcodes on packaging is targeted for 2027, and enterprise link vendors have oriented their roadmaps around it. If you sell physical consumer goods, treat the code on your pack as long-lived infrastructure now rather than as campaign artwork.