How QR Codes Work
A QR code (Quick Response code) is a two-dimensional barcode that stores data in a matrix of black and white squares. Unlike traditional barcodes that encode data in one direction, QR codes encode data both horizontally and vertically, allowing them to store significantly more information. A QR code can hold up to 7,089 numeric characters or 4,296 alphanumeric characters, enough for a URL, text message, contact information, or Wi-Fi credentials.
The three finder patterns (the large squares in three corners) allow scanners to detect the code's position and orientation instantly. The format information around these patterns tells the scanner which error correction level and data masking pattern was used. Error correction uses Reed-Solomon encoding, which means QR codes remain readable even if 7-30% of the code is damaged, obscured, or covered by a logo.
Dynamic vs Static QR Codes
Static QR codes encode the destination URL directly in the code pattern. The URL is permanently embedded, so scanning the code always goes to the same destination. You cannot change where a static QR code points after generating it. The advantage is that static codes do not require a redirect service, so they never expire and have no dependency on a third-party system.
Dynamic QR codes encode a short redirect URL instead of the final destination. When scanned, the redirect server forwards the user to the configured destination. The critical advantage is that you can change the destination URL at any time without reprinting the code. You can also track scan analytics including location, time, device type, and frequency.
For marketing campaigns, dynamic QR codes are almost always the right choice. A printed poster with a QR code cannot be updated if you change the destination URL. A dynamic code pointing to a redirect lets you swap destinations for A/B testing, seasonal promotions, or corrected links without reprinting anything.
Use Cases for QR Codes in Marketing
Print advertisements are the most common QR code application. A magazine ad, billboard, or flyer includes a QR code that links to a landing page, product demo video, or special offer. The code bridges the physical-digital gap, allowing users to instantly access online content without typing a URL. Track which print placements generate the most scans by using different dynamic QR codes for each placement.
Restaurant menus became ubiquitous during the pandemic. A QR code on each table links to a digital menu that can be updated in real-time without reprinting. Add a dynamic QR code to each table that points to /table/1-menu, /table/2-menu, and so on. When you update a dish price or remove an out-of-stock item, the change applies instantly across all tables.
Product packaging uses QR codes to provide additional information, warranty registration, or loyalty program enrollment. A QR code on a supplement bottle can link to detailed nutrition information, third-party testing results, or a video explaining proper dosage. This extends the limited physical space on packaging without redesigning the label.
Event marketing leverages QR codes for ticket scanning, check-in, and session feedback. Generate a unique QR code for each attendee that encodes their registration ID. Scanners at the entrance read the code, validate the registration, and check the attendee in. After the event, the same code links to a feedback survey pre-filled with the attendee's session history.
Tracking QR Codes with UTM Parameters
Append UTM parameters to your QR code destination URLs to track scans in Google Analytics. This lets you attribute traffic, conversions, and engagement to specific QR codes, placements, and campaigns:
https://example.com/sale?utm_source=poster&utm_medium=print&utm_campaign=spring2026&utm_content=coffee-shop-window
For a coffee shop running a spring promotion, generate separate QR codes for each location with distinct UTM values. One poster in the downtown location uses ut_content=downtown, another in the suburb uses ut_content=suburb. Google Analytics then shows you exactly which location generates the most scans and conversions.
Combine dynamic QR codes with UTM parameters for maximum flexibility. If you need to change the destination URL, update the redirect on the dynamic code while keeping the UTM parameters intact. The new destination still receives the correct campaign attribution in your analytics.
Design Best Practices for QR Codes
Size matters. A QR code smaller than 2cm x 2cm (0.8 x 0.8 inches) may not scan reliably on older phone cameras. For print materials, the minimum recommended size is 2.5cm x 2.5cm. For outdoor signage viewed from a distance, increase the size proportionally. The general rule is 1cm of code size per meter of scanning distance.
Quiet zone is the blank margin around the QR code. Every QR code needs at least 4 modules (square units) of quiet zone on all sides. Without adequate quiet zone, scanners cannot distinguish the code boundary from surrounding design elements. The quiet zone is part of the QR code specification, not optional padding.
Error correction level affects both scannability and the amount of data you can embed. Level L (7% recovery) allows the most data storage. Level M (15%) is the default for most generators. Level Q (25%) allows moderate damage. Level H (30%) allows you to embed a logo in the center of the code while maintaining readability. For marketing materials where you want to add your brand logo, use Level H and keep the logo under 30% of the code area.
Colors and contrast must maintain a light background with a dark foreground. Inverting the colors (dark background, light squares) often breaks scanners. Avoid using colors with low contrast against white, like yellow or light gray. Test your QR code by printing it and scanning with at least three different phone models under the lighting conditions where it will be displayed.
Generating QR Codes for Your Campaign
Use our QR code generator to create both static and dynamic QR codes with customizable error correction levels, colors, and embedded logos. Generate multiple codes for A/B testing by creating variations with different UTM parameters pointing to different landing pages.
For bulk generation, create a CSV with columns for destination URL, UTM parameters, and label. Use a script to generate unique QR codes for each row. Store the image files with descriptive filenames that include the campaign name, placement, and date so you can match scan analytics back to the physical placement.
Always test your QR codes before printing. Print a test copy at the exact size it will appear in the final material and scan it with at least two different phones under the expected lighting conditions. A code that scans perfectly on your screen may fail to scan when printed at a small size on glossy paper under dim lighting.