Skip to main content
QrZeo
New — bulk CSV generation

QR codes that keep working after you print them

Create static or dynamic QR codes for 24 content types. Change the destination anytime, track every scan, and generate thousands via API or CSV.

Free forever planNo credit cardUnlimited static codes
Make a QR code
Scannable right now. Content is encoded directly into the pattern.
Customize design →
Scanned by teams atNorthwindJuniper WellnessCinder & CoLoomworksEverbrightIndigo Hotels
48M+
scans tracked
1.2M
codes generated
24
content types
99.99%
redirect uptime
The problem

Printing a QR code usually means committing to it

The pattern in a static QR code is the destination — those black squares literally spell out the URL. Change where it should go and the printed code is scrap.

The URL changes, the print run does not

A campaign page moves, a menu goes seasonal, a PDF gets a new version. A static code has that address baked into its pattern, so the only fix is a new print run.

You never find out what happened

A printed static code reports nothing back. There is no way to tell whether a poster pulled ten scans or ten thousand, or which city they came from.

Every code is a one-off

Making two hundred table codes by hand — one per table, each with its own destination — is an afternoon of copy-paste and a spreadsheet you do not trust.

One pattern, any destination

This code encodes qrz.eo/spring-menu — a short link we own, not a page. Point that link at a spring menu today and an autumn one in six months and the printed squares never move. Go ahead and scan it.

How it works

Static or dynamic — the choice that decides everything else

Both produce a perfectly ordinary QR code that any phone camera reads. The difference is what those squares spell out.

Static
The destination lives in the pattern
https://example.com/menu
  • Works forever with no service behind it
  • Nothing to pay for, no account required
  • No scan data — the code reports nothing back
  • Changing the destination means reprinting

Best for Wi-Fi credentials, vCards and anything that will never change.

Dynamic
The pattern points at a link you control
https://qrz.eo/menu
  • Re-point the destination anytime, instantly
  • Every scan recorded with device and country
  • Pause a code without deleting it
  • Denser pattern too — short links encode smaller

Best for anything printed at volume, or anything a campaign will outlive.

Static codes are unlimited on every plan, including the free one — we only charge for the codes that need a service behind them.

Content types

24 things a code can do

Each type gives you the right form instead of a raw text box — Wi-Fi asks for security mode, vCard asks for a job title, and the payload is assembled correctly underneath.

Website
Open any web page
Text
Show plain text
Wi-Fi
Join a network
vCard
Share a contact
vCard Plus
Contact page + card
PDF
Link to a PDF
Video
Play a video
Images
Photo gallery
Social
All your profiles
Business
Business page
Menu
Restaurant menu
Email
Compose an email
SMS
Start a text
Phone
Tap to call
App
App store link
Event
Event details
Location
Drop a pin
Coupon
Discount code
MP3
Play audio
Playlist
Music playlist
Rating
Collect ratings
Feedback
Feedback form
Payment
Payment link
Links list
Link-in-bio page
Analytics

A printed code that reports back

Every scan of a dynamic code passes through the short link first, which is what makes measurement possible at all — a static code has nowhere to record anything.

Which poster actually worked

Give each placement its own code and the answer stops being a guess. Same campaign, one code per location, one number each.

Device and country on every scan

iOS versus Android tells you which app-store link to feature. Country tells you which market to translate for next.

A trend, not just a total

Daily counts over 7, 30 or 90 days, so a code that stopped being scanned three weeks ago is obvious rather than buried in a lifetime total.

Scans are counted from the redirect, so the figures reflect people who reached the destination — not impressions, and not anyone who pointed a camera and changed their mind.

qzQrZeo+ Create QR
Create QR
My QR codes
Analytics
Storage
Folders & tags
API keys
Settings
Analytics
Scan volume, devices and locations
Total scans
18,420
last 30 days
Daily average
614
+12% vs previous
Active codes
12
of 14 total
Dynamic
10
re-pointable
Scans · last 30 days
Devices
iOS46%
Android39%
Desktop11%
Other4%
Top performing codes
Homepage — packagingWebsite12,440
Product launch teaserVideo9,310
Spring menu — patioMenu4,821
Event check-in — Expo 26Event2,308
Scale

One code is easy. Ten thousand is the actual problem.

Making a single QR code is a solved problem — plenty of free tools do it. Generating them per table, per asset or per order, and keeping every destination correct afterwards, is where a spreadsheet stops being enough.

CSV upload

One row per code: name, destination, folder. Ten thousand table tents, each with its own destination, from a spreadsheet you already have.

REST API

Create a code as part of your own flow — one per order, per asset, per seat — and get back SVG and PNG URLs you can drop straight into a template.

Re-point in bulk

Season changed? Update the destinations for a whole folder in one call. The printed patterns never move.

POST /v1/qr
curl https://api.qrzeo.com/v1/qr \
  -H "Authorization: Bearer qz_live_..." \
  -d '{
    "type": "website",
    "mode": "dynamic",
    "content": "https://example.com/launch",
    "slug": "launch-vid"
  }'
201 Created
{
  "id": "qr_8fK2mQvX",
  "short_url": "https://qrz.eo/launch-vid",
  "svg_url": ".../qr_8fK2mQvX.svg",
  "png_url": ".../qr_8fK2mQvX.png"
}
Organise

Two hundred codes, still findable

Volume is where QR tools usually fall apart — a flat list of “qr-final-v3” is not a system.

Folders
All codes
Marketing
Menus+1
Events
Internal
DynamicActive
Spring menu — patio
qrz.eo/patio-menu · 4,821 scans
Tagsprint2026retail
Spring menu
Filing a code never changes what it encodes — folders and tags are metadata, not part of the pattern.

Folders and tags, not one long list

A code belongs to one folder and any number of tags. Filter to “campaign + 2026” and you have the set you need without moving anything.

Deleting a folder never deletes codes

Tidying up should not take a printed code offline. Remove a folder and its codes become unfiled — still live, still scanning.

Files live in storage, not in the code

A PDF menu is uploaded once and pointed at by as many codes as you like. Upload the new version and every one of them updates.

Teams

Safe to hand to the rest of the team

A dynamic QR code is a live redirect. Handing that to five people needs the same care as handing over DNS.

Roles that mean something

Editors create and re-point codes. Viewers see scan numbers and nothing else. Only owners touch billing. Permissions are enforced on the server, not hidden in the UI.

Separate workspaces

Client work, internal codes and a personal side project stay in different workspaces with their own members, folders, storage and API keys.

Keys you can revoke

Issue a live key per integration and a test key for anywhere a value might leak. Revoking one takes effect immediately and leaves the others working.

Pause, do not delete

A code that should stop resolving can be paused. Nothing is destroyed, the scan history survives, and it comes back with one click.

Who uses QrZeo

Built for codes that outlive the campaign

The common thread is not industry — it is that the code gets printed on something you cannot cheaply reprint.

Restaurants & cafés

One code per table pointing at a menu that changes with the season — and a laminated card that survives the change.

Retail & packaging

Codes printed on packaging months before it ships, re-pointed from a launch page to a support page once the product is out.

Events & venues

Check-in, schedule and feedback codes per session, generated in bulk and measured individually.

Marketing teams

The same campaign across posters, print ads and packaging, with one code per placement so attribution is not guesswork.

Property & field services

A durable code on equipment or a listing that always resolves to the current document, however many times that document is revised.

Developers

Codes created programmatically as part of an existing flow, with SVG and PNG URLs returned ready to place in a template.

Why QrZeo

What makes QrZeo different

Any tool can draw a QR code — the drawing is a published standard. What differs is what happens in the months after it is printed.

CapabilityQrZeoTypical QR generators
Static codesUnlimited on every plan, including freeOften counted against the same quota
Re-pointing a printed codeAny dynamic code, any time, instantlyUsually the paywalled feature
Scan analyticsDaily trend, device and country, per codeLifetime total only, or an upgrade
Bulk generationCSV up to 10,000 rows plus a REST APIManual, one code at a time
File hostingUpload once, point many codes at it, swap freelyLink out and manage hosting yourself
Team permissionsServer-enforced roles, per workspaceOne shared login

Comparison reflects commonly observed limitations of free QR generators; specific products vary, and several paid competitors match parts of this list. See the full feature list.

FAQ

Frequently asked questions

What is the difference between a static and a dynamic QR code?
A static code encodes the destination directly — the pattern literally spells out the URL, so changing where it goes means printing a new code. A dynamic code encodes a short link that QrZeo controls, so the printed pattern stays fixed while you re-point the destination as often as you like. Dynamic codes are also the only ones that can report scans, because the redirect is what does the counting.
Is QrZeo free to use?
Yes. The free plan includes unlimited static QR codes, PNG and SVG export and basic scan counts, with no credit card. Paid plans add unlimited dynamic codes, full analytics, file storage, bulk generation and team members.
Will my printed codes stop working if I stop paying?
Static codes keep working forever — they do not depend on us at all. Dynamic codes resolve through our short-link domain, so they need an active plan to keep redirecting. If you are printing something you cannot reprint and do not want an ongoing dependency, use a static code.
How many types of QR code can I create?
24 content types, including website links, Wi-Fi credentials, vCards, PDFs, video, menus, events, payments, app-store links, reviews and plain text. Each type gives you the right form and builds a correctly formatted payload underneath.
Can I add my logo and change the colours?
Yes. Choose square, rounded or dot modules, set any foreground and background colour, and optionally place a logo badge in the centre. The generator raises the error-correction level automatically when a badge would otherwise cover too much data, and it will not let you invert the contrast — light-on-dark codes fail on many phone cameras.
Can I see how many times a code has been scanned?
Yes, for dynamic codes. You get a daily trend over 7, 30 or 90 days plus device and country breakdowns, per code or across the whole workspace. Static codes cannot be measured by anyone — there is no request to count.
Can I generate thousands of codes at once?
Yes. Upload a CSV of up to 10,000 rows — one row per code, each with its own name, destination and folder — or create them through the REST API as part of your own workflow. Both return SVG and PNG URLs ready to drop into a print template.
Can I change where a code points after it is printed?
That is the point of a dynamic code. Edit the destination in the app and every printed copy redirects to the new address on the very next scan. The pattern itself never changes, so nothing needs reprinting.
What happens if I delete a code?
Deleting a dynamic code takes its short link offline, so anything already printed stops resolving. If you only want to take it down temporarily, pause it instead — the code stops redirecting, the scan history is kept, and one click brings it back.
Can my team use QrZeo together?
Yes. Create multiple workspaces, invite members by email, and control what each role can do with server-enforced permissions — editors create and re-point codes, viewers see analytics only, and billing stays with owners.

Make your first QR code in under a minute

Free plan, no credit card. Unlimited static codes forever, and three dynamic ones so you can watch re-pointing work before you pay for it.

24 content types · Static & dynamic · PNG & SVG · Free forever plan