Skip to content
Founding Member199 of 200 spots left
See the $129 plan
KeeperQRKeeperQR home
KeeperQR•"QR codes worth keeping"

Print it once. Change where it points for as long as you like.

A KeeperQR code holds a short link, not your address. Point that link somewhere new whenever you want, see every scan it gets, and keep it working after you stop paying.

Re-point a printed code, with no reprint
Every scan: place, device, referrer
A daily check on every destination
Your own domain on the printed link
No credit card required•14 days full access• $129 Founding Lifetime available
qr.osteriabella.com/menu
Health: 200 OK
Restaurant & HospitalityTabletop Acrylic Stand

Osteria Bella — Seasonal Dining Menu

Printed on 35 Dining Tables & Patio

qr.osteria/menu
Destination, changed without a reprintUpdated today
https://osteriabella.com/menus/autumn-dinner.pdf
2,840
Scans
100%
Uptime, 30 days
64ms
Edge Redirect
Destination and health rulesSee the routing simulator
Four things people print

Made for the things you print and cannot easily reprint.

Pick whichever is closest to your work, then change what sits behind the code.

Real EstateOne rider, re-pointed all year

One sign rider, re-pointed every time the listing moves on.

A listing goes from coming-soon to open house to sold, and the rider in the lawn stays exactly where it is. You change where the code lands, not the sign.

Point it at the tour today and the open-house registration on Saturday
Give it a start and an end date, so a campaign page goes live on its own
Send it to your other listings once the house is sold, instead of a dead page
In practice

A listing sells on the Friday. The rider stays in the lawn, and by Saturday the same code is showing the next house on the street instead of a dead page.

Printed on Yard Sign Post Rider & Window Decal
Checked daily
Change what sits behind it:
Where the next scan lands200 OK • 18ms
https://vanguardhomes.com/listings/428-highland/matterport-3d
What the person scanning gets:
Opens 4K virtual tour, high-res photo gallery, and interactive floor plans.
The printed code never changesStart free
Routing simulator. Nothing here creates a real code.

Change the destination and watch where the next scan goes.

Pick a campaign, change the destination, and watch where the next scan lands. It is a simulation of the routing rules, not the generator: nothing you type here is saved or turned into a scannable code.

Explore Use Cases:
Restaurants & HospitalityTabletop Acrylic Stand & Billfold Inserts

Osteria Bella — Seasonal Dining Menu

Live Stats: 2,840 total scans • 2,210 unique devices
Link Healthy
https:///
Example

KeeperQR picks the short code. The domain is yours: add a DNS record and your printed links read as your own address.

Try editing it. This is the one thing you really can change.
Daily Destination Health Check200 OK
Automated daily monitor: 200 OK, destination reachableLatency: 88ms
Live 1 Sep to 30 Nov
Device OS Redirect
What gets printedNever needs reprinting
Osteria Bella — Seasonal Dining Menu
Example printed link: qr.yourcompany.com/k7Qm2xPa
Scan with your phone camera

Scanning opens the KeeperQR demo explainer.

keeperqr.com/demo
Where this scan landsDirect Dynamic Destination
The scan lands on:
https://osteriabella.com/menus/autumn-dinner.pdf

The printed code never changes. Only the destination behind it does.

What is in each plan

Almost everything has a free version. Pro makes it better.

Free covers a few codes properly. Pro is for printing at scale, sharing the work with a team, and keeping every scan you have ever had.

Nothing to reprint

Dynamic QR Codes

Table tents, yard signs, magazine spreads, billboards, badges, packaging. Once a code is out there you cannot get it back, so the printed square holds a short link and the destination behind it stays a field you can edit.

A change is live for the next scan, not the next print run
Swap PDF menus, event agendas, or listings on the fly
Create a whole print run at once by importing a CSV
Export print-ready vector SVG, or PNG at standard or print resolution
Free: 3 codes. Pro: unlimited, with CSV import
Your address, not ours

Custom Branded Domains

Print the link on a domain you own, such as qr.realtypros.com or menu.osteriabella.com. The address on the sign is yours, which also means you could point it somewhere else entirely one day.

Connect any custom domain or subdomain with simple CNAME
Certificates are issued and renewed for you, no configuration
Up to five domains per workspace, re-checked daily for DNS drift
A code on your own domain does not depend on us to keep resolving
Pro
What actually got scanned

Detailed Scan Analytics

Which sign is working is otherwise guesswork. Every scan records the hour, the country and city, the device, the OS, the browser and the page that referred it, and you can export the lot.

Group codes into campaigns and compare them against each other
Total and unique scan counts per code, over any window you pick
Country and city breakdowns, plus an hour-by-day scan grid
Add UTM tags to the destination so scans land in your own analytics
Free: the last 30 days. Pro: every scan, all the detail
You find out first

Daily Destination Health Checks

Menus get moved and landing pages get unpublished. Every active destination is checked at 06:00 UTC, and when one goes from working to broken you get one email naming the code, so you can re-point it.

A daily request to every active destination, with the response recorded
Healthy, slow or broken. Slow means it answered, but took over 2.5s
One email on the break itself, not a reminder every morning after
30 days of check history and an uptime figure on every code
Free and Pro
Four rules, in order

Rules on a single code

One printed square can answer differently depending on the phone that scanned it, the country it was scanned in, and whether the code is inside its active dates. A password can sit in front of any of it.

Schedule a start and an expiry, so a code goes live on the day
Send iPhones to the App Store and Android phones to Google Play
Country routing: send a country to its own local page
A password in front of a private list, press kit or preview
Free: devices and dates. Pro: countries and passwords
What we will not do

"QR codes worth keeping"

A printed code outlives whatever software made it. So we never switch off a code to make you pay, we never put an ad or an upgrade prompt between a scan and your destination, and your export is open on every plan.

Everything, out, whenever you like
Every code with its destination and rules, and every scan ever recorded, as CSV or JSON. It stays available on every plan.
Start free
Four rules you can put on a code

The same printed square, answering four different ways.

A static code sends everyone to the same page forever. A KeeperQR code checks a short list of rules first, in order, and falls through to your default destination when none of them match.

For the ones you do not want public

Put a password in front of the destination.

A reserve wine list, an off-market listing, a speaker briefing. The printed square is the same one everybody can see, and the page behind it asks for a password first.

Any password of eight characters or more
Once someone gets in, their browser stays unlocked for 24 hours
Change or remove it and every unlock already handed out stops working

Reserve cellar list

This code is password protected. Enter the password to continue.

Type barolo-1964 to see what happens next
Daily destination checks

You hear about a broken link from us, not from a customer.

Files get moved and pages get renamed. Every active destination is checked once a day, so if one stops answering you know about it while the sign is still standing there. We also watch busy codes for an unusual drop in scans and email you, so you can check whether the poster or sticker was damaged or went missing.

Once a day, every destination gets a request.

Once a menu is on 500 table tents, checking each link by hand stops being realistic. At 06:00 UTC every active destination gets a request, and what came back is recorded against the code.

06:00 UTC, every day
A HEAD request to each destination, with a 5 second timeout. Healthy, slow or broken, and slow means it answered but took more than 2.5 seconds.
An email the moment it breaks
One email on the change from working to broken, naming the code, and not another one every morning after that.
You fix it, not your customer
Point the code somewhere new and the next scan follows it. Nothing gets reprinted, and nobody has to be told the old link is dead.
30 days of checks and an uptime figure, on every code
Try each outcomeDaily, 06:00 UTC
daily destination check
HEAD, 5s timeout
[2026-11-01 06:00:14 UTC] Checking campaign: Osteria Bella — Dinner & Wine Menu
Target: https://osteriabella.com/menus/dinner-spring.pdf
Healthy: 200 OK
Latency: 84ms | Headers: Content-Type: application/pdf | Recorded in 30-day history
Recorded as healthy. Nothing to tell you about, so no email goes out.
Checked again in 24 hours
Scan analytics

Know what’s working, not just that it got scanned.

Every plan tells you when, where and on what your codes get scanned. Pro goes deeper, and since every scan is kept on every plan, upgrading shows your full history straight away.

On every plan

Included free

See a campaign land

Scans plotted day by day for the last 30 days, so you can tell the week the sign went up from the week it came down.

Know where your audience is

Every scan placed by country, without setting a cookie, so you see your reach without tracking anyone.

United StatesUnited States
59.1%
United KingdomUnited Kingdom
13.3%
CanadaCanada
8.5%
GermanyGermany
7.1%
AustraliaAustralia
5.8%

Know what they scan with

Phone, tablet or desktop, so you know which screen your landing page has to work on first.

  • Mobile86%
  • Desktop9%
  • Tablet5%

Pro adds

The same scans, in more depth, for as far back as you want.

See Pro plans

Find the neighborhood that's responding

The same scans broken down by city, so a campaign across three towns tells you where to put the next one.

DenverUS
15.8%
BoulderUS
10.5%
ChicagoUS
7.7%
ManchesterGB
5.5%
TorontoCA
5%

Post when people are looking

An hour-by-day heatmap shows when your codes actually get noticed, so the next sign or post goes out at the right time.

Test where it'll be opened

The operating systems and browsers behind your scans, so you check your page on the phones your audience actually carries.

iOS58.9%Android32%Windows5.6%macOS4.5%
  • Mobile (iOS • Safari)Denver, US
  • Mobile (Android • Chrome)Boulder, US
  • Tablet (iPadOS • Safari)Toronto, CA

Look back as far as you like

90 days, all time or a custom range, plus a CSV of every scan in view for your own reports.

CSV
The first 200 people

Pay $129 once, and that is the last time.

KeeperQR is new, and the first 200 people to back it get Pro for a single payment. No monthly fee, no renewal, and the same features every Pro subscriber gets.

Capped at 200 people
Founding Member
$129one-time payment / lifetime access
Against Pro at $9 a month, it breaks even after about 14 months.
Founding Spots Claimed1 / 200 spots claimed
🔥 High demand199 of 200 still available.
Lifetime access to all core and future Pro features
Unlimited dynamic QR codes for all your campaigns, menus, listings, and products
Custom branded domains, certificates handled for you
Daily destination health checks with an email on the break
All scan rules: PIN locks, schedules, device & geo redirects
Everything in Pro, paid once. There is no tier above it to be upsold into.
What happens next

One payment of $129, and the account is yours to keep.

When the last spot goes, the offer closes and Pro after that is $9 a month or $90 a year.

Take the $129 Founding plan
Refundable in full within 30 days
One payment, through Stripe. Refundable in full within 30 days.
Free, or Pro from $9 a month

Start free. Upgrade when you want more.

Free has 3 dynamic codes and no end date. Pro is $9 a month, $90 a year, or $129 once as one of the first 200 people here. Full refund within 14 days, no reason needed.

No card, no end date

Free

A few codes that work properly, for as long as people scan them.

$0/ month
Upgrade to Pro from Settings whenever you like.
What’s Included:
3 dynamic codes — Website links or hosted Contact Pages — and you change where they point whenever you like
Never switched off to make you pay
Analytics for the last 30 days: scans over time, countries and devices
Device routing, start and expiry dates, UTM tagging and tags
Daily destination checks, with an email when one breaks
Every style, logo and frame, exported as SVG or print-resolution PNG
Export every code and every scan as CSV or JSON
Start free
No card to start.
Monthly or yearlyRefundable for 30 days

Pro

Unlimited codes, your team and your domain, and every scan you have ever had.

$90/ year, which works out at $7.50/mo
Two months cheaper than paying monthly ($108 to $90).
Everything in Free, and:
Unlimited dynamic codes, and every code type
Your full scan history, with custom ranges, cities, time of day, browser and OS
Analytics CSV export and campaign comparison
Country and time-of-day routing, with a default for everyone else
Password-protected codes
Campaigns, and your whole team with no per-seat fees
Your own branded domain, certificates handled for you
Bulk CSV import, the REST API and webhooks
Get Pro
Full refund within 14 days, no reason needed.
First 200 Only
Founding Member Pass199 spots left

Lifetime Membership

Paid once. There is no renewal.

$129one-time payment / lifetime access
Breaks even against Pro at $9 a month after about 14 months.
Everything in Pro, and:
No renewal, ever. The account stays active for as long as you want it.
One of the first 200 customers, and the count on this page is the real one
Everything in Pro, with no recurring charge, ever
Refundable in full within 30 days of purchase
What you get:
• Dynamic QR codes
• Custom domains
• Daily health checks
• Scan rules & PINs
• Schedule routing
• Detailed analytics
Take the $129 Founding plan
Refundable within 30 days • 199 of 200 spots left

Not sure Pro is for you? Try it with a full refund behind it.

Ask within 14 days of a monthly charge, or 30 days of an annual or Founding Member purchase, and you get your money back without giving a reason. Your codes keep working on Free afterwards.

Read the refund policy
What we can actually promise

KeeperQR is new. We would rather say so than borrow someone else’s proof.

There is no logo wall on this page, no star rating and no scan counter, because there are no customers yet to make any of them true. Here is what there is instead: six commitments, each one checkable before you pay anything.

Free for 3 codes, no card
Pro from $9/mo
Unlimited scans on every plan
In the redirect itself
We never switch off a code to make you pay.

The route that answers a scan reads one thing, which is the destination you set. It never checks your plan, so a code you printed carries on working whether you are on Free, on Pro, or have just cancelled.

Written into the terms, not just this page
After you cancel
Cancel Pro, and you land on Free, not on a locked account.

Codes carry on working and recording scans, your domain carries on serving, and routing rules keep working as you set them. Your 3 oldest Website or Contact Page codes stay editable, your recent analytics stay visible, and you can pause, resume or delete any code.

Nothing is deleted when your plan changes
Portability
On your own domain, we are replaceable.

Print codes on a domain you control and the link belongs to you. If you ever leave, or we ever go away, you can point that hostname at something else and every printed code keeps resolving.

Up to five custom domains per workspace, on Pro
Your data
Take everything with you, any time.

Every code with its short link, destination, routing rules and schedule as CSV or JSON, plus all-time scan history as CSV. It is on every plan, including Free, so leaving is never something we can hold up. The CSV re-imports, so a full campaign can be rebuilt elsewhere.

Open on every plan, so leaving is never held up
What we do not keep
The scanner’s IP address is never stored.

A scan records time, country, city, device, OS, browser and the referring site. The raw IP is one-way hashed for counting unique scans and never written down, and no cookie is set on the person scanning.

IP data is stripped from scan history after 13 months
While you are not looking
Every destination is checked once a day.

At 06:00 UTC, every active destination gets a request. If one goes from working to broken you get a single email, with the code named so you can re-point it, and not another one every morning after.

30 days of check history and an uptime figure per code
Nothing to lose by trying it

Be one of the first people printing codes that outlive the subscription.

Start free with 3 codes and no card. When you want more, Pro is $9 a month, or take the $129 Founding Member plan, which is Pro paid once, capped at 200 people. Full refund within 14 days, no reason needed.

Why this exists

I have worked with businesses of every size, as a contractor and on staff, and the same thing keeps happening. Someone needs a QR code, reaches for a free one-off generator, and gets on with their day. That is a perfectly reasonable thing to do, right until the page behind the code moves, and by then it is printed. I have watched people reprint a whole run over it, and rig up spreadsheets and redirects to get any real numbers out of the codes they did have. KeeperQR is the thing I wanted to hand them instead.

Sebastian InmanSebastian InmanFounder, KeeperQR
Questions

The things people ask before they print anything.

If yours is not here, start free and test it against your own case. It costs nothing and asks for no card.

A static QR code has the destination baked into the printed square, so when the page behind it moves, the print is waste. A dynamic code holds a short link instead: the square never changes, and the destination behind it is a field you edit. That is the whole idea: you print once, and change your mind as often as you like afterwards. It also means we never switch off a code to make you pay. Cancel Pro, and every code you already printed keeps redirecting.