arrow_backBlog
·5 min read·Super QR Code Generator Team

QR Code Repeat Scan Rate: What It Means and Why It Matters

Learn what repeat scan rate reveals about your QR campaigns, how to calculate it, and what actions to take when the number is too high or too low.

qr code analyticsrepeat scanscampaign measurement
QR Code Repeat Scan Rate: What It Means and Why It Matters
AI-generated

Most QR analytics dashboards show you total scans and unique scans side by side. Marketers glance at total scans, feel good, and move on. That's a mistake. The gap between those two numbers — your repeat scan rate — is one of the most diagnostic signals in QR measurement, and almost nobody acts on it deliberately.

This post explains what repeat scan rate actually tells you, how to calculate and benchmark it, and what to do when it's running unusually high or suspiciously low.

What Repeat Scan Rate Is (and How to Calculate It)

Repeat scan rate = the percentage of total scans that came from devices that had already scanned the same code at least once.

The formula:

Repeat scan rate (%) = ((Total scans − Unique scans) / Total scans) × 100

Example: A poster QR gets 400 total scans and 310 unique scans. (400 − 310) / 400 × 100 = 22.5% repeat rate

This means roughly one in four scan events came from a device that had scanned this code before. Whether that's good or bad depends entirely on context.

Note: Most platforms identify "unique" scans by device fingerprint or cookie, not by user account. A person using two different phones counts as two unique scanners.

What a High Repeat Rate Could Mean

A repeat rate above ~25% usually signals one of these situations:

1. The destination is genuinely useful — people are returning

A restaurant table QR linking to a live menu, a gym class schedule, or a daily-deal page will naturally accumulate repeat scans from the same customers. That's healthy engagement, not noise.

2. The QR is in a high-dwell location

Waiting rooms, checkout queues, and trade-show booths generate repeat scans from people who have nothing else to do. The same person might scan twice out of boredom. This inflates repeat rate without reflecting intent.

3. The linked page isn't completing the job

If the destination loads slowly, requires a login, or is unclear, people sometimes re-scan hoping for a different result. Check your scan drop-off data alongside repeat rate — if both are elevated, the page experience is likely the culprit.

4. Automated scanning or testing

A repeat rate above 60% in the first 48 hours of a campaign almost always includes developer testing or internal QA scans. Filter by IP or device if your platform allows it.

What a Low Repeat Rate Could Mean

A repeat rate under ~5% on a code that's been live for more than a week tells a different story:

  • One-and-done destination — think a PDF download, a coupon claim, or a one-time sign-up form. Users scan, complete the action, and have no reason to return. This is expected.
  • Low-traffic placement — the code isn't getting enough reach to accumulate any repeat visitors. Check whether the placement (size, contrast, lighting) is actually scannable. Our guide on QR code color contrast rules covers the most common physical barriers.
  • Campaign too new — give any code at least 10–14 days before drawing conclusions from repeat rate.

Repeat Rate by QR Use Case: Rough Benchmarks

Use Case Expected Repeat Rate
Restaurant menu (ongoing) 30–60%
Event check-in (single day) 5–15%
Product packaging (evergreen) 10–25%
Outdoor poster (short campaign) 8–18%
Trade-show booth 20–40%
Coupon or one-time offer < 8%

These are directional, not sourced from a single study — treat them as a starting framework and calibrate against your own historical data over time. For broader scan volume benchmarks, the post on what "good" scan numbers actually look like is worth reading alongside this one.

How to Use Repeat Rate as a Decision Tool

Segment by code, not just campaign total

If you're running multiple QR codes under one campaign (window cling, receipt, bag stuffer), pull repeat rate per code. A window cling with 40% repeat rate and a receipt code with 3% repeat rate are telling completely different stories and should be optimised separately.

Combine with scan-time data

If repeat scans cluster around specific times — say, every Tuesday evening — that's a strong signal that a subset of loyal customers is using the destination regularly. Use that insight to update the content on those days. The post on finding your peak scan hours shows how to pull this analysis.

Use it to judge destination refresh cadence

A repeat rate above 30% on a dynamic QR linked to static content is a missed opportunity. Those returning scanners are expecting something new. Switch to a rotating offer, a weekly update, or a loyalty mechanic. Dynamic QR codes make this possible without reprinting anything.

Flag anomalies quickly

Set a calendar reminder to check repeat rate at days 3, 7, and 14 of any new campaign. A sudden spike (e.g., jumping from 10% to 55% overnight) usually means either a bot scan, a viral social share where the same person re-shared the image, or an internal team testing the code repeatedly after a change.

Setting Up Your Tracking Correctly

Repeat scan rate is only meaningful if your platform separates total from unique scans in the first place. The Super QR Code Generator tracks both by default on all dynamic codes. Static codes, by their nature, can't be tracked at all — another reason most active campaigns should use dynamic codes.

If you're exporting data to a spreadsheet for analysis, pull both columns (total scans, unique scans) daily rather than weekly. Weekly aggregates hide the intra-week patterns that make repeat rate actionable.

Key Takeaways

  • Repeat scan rate = (Total scans − Unique scans) / Total scans × 100
  • High repeat rate is positive for ongoing-use destinations (menus, schedules), but may signal poor UX or bot traffic in short campaigns
  • Low repeat rate is normal for one-time actions (coupons, downloads) but may indicate placement or contrast problems for evergreen codes
  • Always segment by individual code, not just campaign total
  • Combine repeat rate with drop-off data and scan-time analysis to get a complete picture
  • Dynamic QR codes let you update the destination for returning scanners without reprinting

⚽ Free this summer: Run your own football prediction game for 2026. Pick scores, build a private league, and invite friends with a single QR code — completely free. Start your league →

Frequently asked questions

How do platforms count unique scans versus total scans for QR codes?expand_more
Most QR analytics platforms identify unique scans using a device fingerprint, browser cookie, or IP address combination. Each new device or browser session counts as one unique scan, while a second scan from the same device adds to total scans but not unique scans. This means a single person using two phones would be counted as two unique scanners.
What repeat scan rate is considered too high for a short print campaign?expand_more
For a campaign lasting less than four weeks — such as a poster or flyer — a repeat scan rate above 30–35% warrants investigation. It could reflect genuine loyalty, but more often it points to internal testing scans, a high-dwell placement like a waiting room, or a landing page that isn't completing the conversion job on the first visit.
Can repeat scan rate help me decide when to retire a QR code?expand_more
Yes. If repeat scan rate is declining steadily over several weeks while total scans also fall, that's a clear sign the campaign has exhausted its audience. Conversely, if repeat rate stays high but unique scans have plateaued, you're retaining existing scanners but not reaching new ones — that's a distribution problem, not a content problem, and it usually means you need wider physical placement.
Does updating the destination URL on a dynamic QR reset the repeat scan data?expand_more
No. Changing the destination URL on a dynamic QR code does not reset your scan analytics. All historical data — including total scans, unique scans, and repeat rate — is preserved in the dashboard. Only the URL the scanner is sent to changes, which is exactly why dynamic codes are preferred for campaigns where you need both continuity of tracking and flexibility of content.
How do I filter out internal team scans from my repeat rate data?expand_more
The most reliable method is to scan your own code using a separate test device and note the timestamp, then filter or subtract those events in your analytics export. Some platforms let you exclude specific IP addresses or flag scans from your own network. Building a habit of testing codes before launch — rather than repeatedly after — also keeps internal scan counts from distorting your repeat rate baseline.