QR Code A/B Testing: Optimize Scan Rates
A practical guide to A/B testing QR codes. Test design, placement, CTAs, and size to maximize scan rates and conversions.
Why Guessing Is Expensive
You designed a QR code, wrote a call to action, picked a spot on your flyer, and printed 10,000 copies. If your scan rate is 2%, you get 200 scans. But what if a different call to action could have pushed that to 4%? That is 200 additional engaged users from the same print run, at zero additional cost.
Most organizations treat QR code deployment as a one-shot decision. They pick a design, a placement, and a CTA based on gut feeling, then live with the results. A/B testing flips that approach. Instead of guessing, you test two variations against each other, measure which one performs better, and apply the winner going forward.
A/B testing is standard practice in email marketing and web design. There is no reason it should not be standard practice for QR codes, especially when the testing process is simple and the potential gains are significant.
This guide covers what to test, how to set up valid tests, how to read the results, and how to build a testing program that improves your QR code performance over time.
What You Can A/B Test
Nearly every aspect of a QR code deployment can be tested. Here are the variables that typically have the biggest impact on scan rates.
Call to Action Text
The text next to your QR code is the single highest-leverage variable. Small changes in wording can produce large changes in scan behavior.
Test examples:
- "Scan for 20% off" versus "Scan to save $10"
- "Scan to see the menu" versus "Scan to order now"
- "Scan for details" versus "Scan to watch a 60-second demo"
For guidance on writing effective CTAs before you test, see our call to action guide.
Code Size
Bigger is not always better, but too small is always a problem. Testing different sizes in the same context reveals the minimum effective size for your specific audience and environment.
Test examples:
- 1.5-inch code versus 2.5-inch code on a flyer
- 4-inch code versus 8-inch code on a wall poster
- Standard size versus oversized on product packaging
See our placement guide for baseline sizing recommendations.
Placement on the Material
Where the code sits on a flyer, poster, or package matters. Eye-tracking patterns suggest that certain positions get more attention, but the only way to know for your specific material is to test.
Test examples:
- Top-right corner versus bottom-center on a flyer
- Front of brochure versus back of brochure
- Next to the product image versus next to the price
Code Design
Custom-designed QR codes with colors, logos, and rounded modules look more professional but are not necessarily scanned more. Some audiences respond to branded designs; others trust the classic black-and-white square.
Test examples:
- Black-and-white standard versus branded with logo and color
- Rounded modules versus square modules
- High-contrast versus subtle color scheme
Note: any design changes must preserve scannability. Use adequate error correction and always test before printing.
Surrounding Design Context
The visual context around the code affects scan likelihood. A QR code in a clean, open space with a clear CTA competes with a code crowded by text and images.
Test examples:
- Code with generous white space versus code integrated into a busy design
- Code with an arrow pointing to it versus code without
- Code with a phone icon ("scan with your camera") versus code without
Landing Page
Sometimes the code is fine but the destination is wrong. Testing different landing pages with the same QR code placement reveals whether the issue is scanning behavior or post-scan engagement.
Test examples:
- Landing on a product page versus landing on a special offer page
- Video landing page versus text landing page
- Short form versus long form on a sign-up page
How to Set Up a Valid A/B Test
A/B testing sounds simple: try two things, see which works better. But sloppy test design produces misleading results. Follow these principles to get data you can trust.
1. Change Only One Variable
If you test a different CTA, a different code size, and a different placement all at once, and version B outperforms version A, you do not know which change caused the improvement. Isolate one variable per test.
Good test: Same flyer, same placement, same code design. Only the CTA text differs. Bad test: Different CTA, bigger code, moved to a different location on the page. You cannot attribute the result to any single change.
2. Use Comparable Audiences
Both versions must reach equivalent audiences. If version A goes to your most engaged customers and version B goes to cold prospects, the results reflect audience quality, not code effectiveness.
For physical placements: Alternate versions at the same location (version A on Monday and Wednesday, version B on Tuesday and Thursday) or deploy both simultaneously at comparable locations (version A at Store #1, version B at Store #2, where both stores have similar traffic).
For print materials: Split your print run and distribute randomly. If mailing, randomize which households get version A versus version B within the same zip codes.
3. Ensure Adequate Sample Size
A test with 20 scans on each version is not statistically meaningful. Random variation can easily account for a difference at that scale. For most QR code tests, you need at least 100 scans per variation to reach a reasonable confidence level, and more is better.
Rule of thumb for required impressions: If your baseline scan rate is 2%, you need approximately 5,000 impressions (people who see the code) per variation to detect a meaningful difference. If your scan rate is higher, you need fewer impressions.
If your deployment does not generate enough volume for statistical significance, extend the test duration rather than drawing premature conclusions.
4. Define Success Before You Start
Decide upfront what you are measuring and what counts as a win. Common metrics:
- Scan rate: Total scans divided by estimated impressions. This measures whether people are engaging with the code.
- Unique scan rate: Unique scanners divided by impressions. Filters out people scanning multiple times.
- Conversion rate: Desired actions (purchases, sign-ups, donations) divided by scans. This measures whether the post-scan experience is working.
- Revenue per scan: Total revenue attributed to scans divided by scan count. This is the ultimate bottom-line metric.
Scan rate tells you how compelling the code deployment is. Conversion rate tells you how effective the full experience is. The best tests measure both.
5. Run for an Adequate Duration
Do not call a test after one day. Behavior varies by day of week, time of day, and external factors (weather, events, seasons). Run each test for at least one full week, ideally two, to smooth out daily variation.
For seasonal campaigns, ensure both variations are exposed to the same seasonal conditions. Do not test version A during a holiday week and version B during a normal week.
Setting Up Tracking
Accurate tracking is the foundation of A/B testing. You need to measure scans and downstream actions for each version separately.
QR Code Platform Tracking
Create separate QR codes for each variation using SmartyTags or your preferred platform. Each code gets its own tracking URL and scan analytics. This gives you scan counts, timestamps, and device data per variation.
UTM Parameter Tracking
Tag each variation's destination URL with unique UTM parameters to track post-scan behavior in Google Analytics.
Version A:
https://yoursite.com/landing?utm_source=flyer&utm_medium=qr&utm_campaign=spring_sale&utm_content=version_a
Version B:
https://yoursite.com/landing?utm_source=flyer&utm_medium=qr&utm_campaign=spring_sale&utm_content=version_b
In Google Analytics, filter by campaign and compare content variations to see which version drives more sessions, better engagement, and higher conversions.
Combining Both Data Sources
Your QR platform tells you total scans. Google Analytics tells you what happened after the scan. Together, you can calculate:
- Scan-to-session rate: GA sessions divided by platform scan count. This tells you how many scans result in actual page loads. If this is low, the landing page may be slow or broken on mobile.
- Scan-to-conversion rate: GA conversions divided by platform scan count. This is the true end-to-end performance metric.
Analyzing Results
Simple Comparison
For most QR code tests, a straightforward comparison is sufficient. After the test period:
- Pull scan counts from your QR code platform for both versions.
- Pull session and conversion data from Google Analytics for both versions (filter by
utm_content). - Calculate rates for each version.
- Compare.
Example results:
| Metric | Version A (CTA: "Scan for 20% off") | Version B (CTA: "Scan to see our bestsellers") |
|---|---|---|
| Estimated impressions | 5,000 | 5,000 |
| Total scans | 175 | 120 |
| Scan rate | 3.5% | 2.4% |
| GA Sessions | 160 | 112 |
| Conversions | 12 | 15 |
| Conversion rate (per scan) | 6.9% | 12.5% |
| Revenue | $480 | $750 |
In this example, version A gets more scans (the discount CTA is more compelling), but version B generates more revenue per scan. Depending on your goal, either version could be the "winner." If you are optimizing for engagement, A wins. If you are optimizing for revenue, B wins.
Statistical Significance
For high-stakes decisions (reprinting large volumes, rolling out to all locations), confirm that the difference is statistically significant rather than random variation. Use a simple online A/B test calculator. Input the number of impressions and successes for each variation, and the tool will tell you the confidence level.
A 95% confidence level means there is only a 5% chance the observed difference is due to random chance. This is the standard threshold for marketing tests.
If your results are not statistically significant, the test needs more data. Extend the duration or increase the distribution volume.
Building a Testing Program
One-off tests are useful, but a systematic testing program compounds improvements over time. Here is how to build one.
Create a Testing Backlog
List every variable you want to test, ranked by expected impact. Start with the highest-impact variables (CTA text, code size) before moving to lower-impact ones (module shape, color scheme).
Test Sequentially
Run one test at a time per QR code deployment. Overlapping tests introduce confounding variables.
Document Everything
For each test, record:
- What you tested (the variable and the two variations)
- The test duration
- Sample sizes for each variation
- Results (scan rates, conversion rates, revenue)
- The winner and the confidence level
- What you will do with the result
Apply Winners and Move On
When a test has a clear winner, adopt the winning variation as your new default. Then test the next variable on your backlog against that new default.
Share Learnings
If you run QR codes across departments, teams, or locations, share test results. A finding from the marketing team's flyer test can inform the sales team's trade show booth design.
Common A/B Testing Mistakes
Ending Tests Too Early
You see version A pulling ahead after two days and call the test. But two days is not enough data to be confident. Early leads often reverse with more data. Let the test run for the planned duration.
Testing Too Many Things at Once
Multivariate testing (testing multiple variables simultaneously) requires much larger sample sizes and more sophisticated statistical analysis. For QR codes, stick to A/B (two variations, one variable) until you have enough volume and expertise for more complex designs.
Ignoring Context Changes
If you run a test during a period when external factors change (a new competitor launches, a holiday occurs, your website goes down), the results may reflect those external factors rather than your QR code variations. Note any context changes in your test documentation and interpret results accordingly.
Optimizing for Vanity Metrics
More scans is not always better. A QR code that generates 500 scans and zero conversions is worse than one that generates 100 scans and 20 conversions. Always tie your tests back to business outcomes: revenue, sign-ups, donations, or whatever your QR code is ultimately driving.
Not Testing at All
The biggest mistake is skipping testing entirely. Even one well-run test per quarter gives you data-driven insights that improve every subsequent QR code deployment. Perfect is the enemy of good. A simple test with imperfect controls is better than no test at all.
Quick-Start: Your First QR Code A/B Test
- Pick your highest-volume QR code deployment (the one with the most impressions).
- Identify the variable most likely to impact scan rates. Start with the CTA text.
- Create two variations. Keep everything else identical.
- Create two separate dynamic QR codes with unique tracking URLs and UTM content parameters.
- Deploy both variations to comparable audiences or locations.
- Let the test run for two weeks.
- Compare scan rates and conversion rates.
- Adopt the winner.
- Pick your next variable and repeat.
Explore SmartyTags features for code-level scan analytics that make A/B testing straightforward, and review pricing to find a plan that supports your testing volume. The organizations that consistently improve their QR code performance are the ones that test. Start this week.
SmartyTags Team
Content Team
The SmartyTags team shares insights on QR code technology, marketing strategies, and best practices to help businesses bridge the physical and digital worlds.
Related Articles

Location Analytics: Map Where Your QR Codes Get Scanned
How geographic scan data helps optimize physical placements and plan campaigns.

Connecting QR Code Data to Your CRM
Feed QR code scan data into Salesforce, HubSpot, and other CRMs.

How to Use UTM Parameters with QR Codes
Learn to add UTM parameters to QR code URLs for accurate campaign tracking in Google Analytics and other platforms.
Stay up to date
Get the latest QR code tips, guides, and product updates delivered to your inbox.
No spam. Unsubscribe at any time.