Skip to main content
QrZeo
Features

Everything QrZeo does, explained honestly

No vague promises — every capability below describes what the product actually does today, including where the limits are. Eight areas, from re-pointing a printed code to server-enforced team permissions.

Dynamic codes

Change the destination without changing the print

A dynamic QR code encodes a short link on a domain QrZeo controls, not the address you actually want people to reach. Scanning it hits that link, which redirects to wherever you have currently pointed it. The consequence is the whole product: the black squares on your poster never have to change, because they never encoded the destination in the first place.

That turns a printed code from a commitment into a switch. A packaging run pressed six months before launch can point at a teaser page today, a product page at launch and a support article a year later. A restaurant reprints menus seasonally without reprinting a single table code. And when something goes wrong — a broken link, a page that moved — the fix takes seconds instead of a print run.

Instant re-pointing
Edit the destination and the very next scan follows it. No propagation delay, no caching to wait out.
Pause without deleting
Take a code offline temporarily. Scan history survives and one click brings it back.
Custom slugs
qrz.eo/spring-menu rather than a random string — readable on a printed page and easy to say out loud.
Smaller patterns
A short link encodes in far fewer modules than a campaign URL, so dynamic codes print smaller and scan faster.
Edit destination
qrz.eo/launch-vid · dynamic
Was
example.com/launch-teaser
Now
example.com/product/overview
Live on the next scan · pattern unchanged
Content types

24 types, each with the form it actually needs

Underneath, every QR code is just encoded text — but the text has to follow the right format for a phone to do anything useful with it. A Wi-Fi code needs a specific WIFI: syntax with escaped delimiters. A contact card needs valid vCard structure. Getting a semicolon wrong produces a code that scans perfectly and then does nothing.

QrZeo gives each type its own form and assembles the payload correctly underneath. Wi-Fi asks for network name, security mode and whether the network is hidden. vCard asks for job title and organisation. Phone, SMS and email get the right URI scheme prefixed automatically. You fill in fields; the encoding is not your problem.

Links & pages
Website, business page, menu, link-in-bio, app store, event, location, coupon.
Files & media
PDF, video, image gallery, MP3, playlist — hosted by QrZeo or linked out.
Contact & identity
vCard, vCard Plus, Wi-Fi, phone, SMS, email, social profiles.
Collecting a response
Ratings, feedback forms, payment links and plain text.
Content type
24 types, each with its own form
Website
Wi-Fi
vCard
PDF
Menu
Video
Scan analytics

Find out which poster actually worked

Because every scan of a dynamic code passes through the redirect first, QrZeo can count it. You get a daily trend over 7, 30 or 90 days rather than a lifetime total, so a code that stopped being scanned three weeks ago is visible instead of buried, plus device and country breakdowns on every code.

The practical move is one code per placement. Same campaign, same destination, a different code on the poster, the flyer and the packaging — and the question of which one earned the response stops being a debate. iOS versus Android tells you which app-store link to lead with; country tells you which market to translate for next.

Daily trend
7, 30 or 90 days, per code or across the workspace, with a comparison against the previous period.
Device breakdown
iOS, Android, desktop and other — the split that decides which link to feature.
Location breakdown
Country and city, aggregated. No identities, no cross-code profiles.
Unmetered
Scan volume is never billed. A code that goes viral will not stop resolving.
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
Design

Style it without breaking it

A QR code has real tolerance for decoration, and a real point past which it stops scanning. QrZeo works inside that tolerance rather than leaving you to find the edge in production: square, rounded or dot modules, any foreground and background colour, and an optional logo badge in the centre.

The guardrails matter more than the options. Switching on the centre badge raises the error-correction level automatically, because the badge covers data the code then has to reconstruct. Inverting the contrast to light-on-dark is not offered at all — many phone cameras refuse to read it, and that is not something you want to discover after ten thousand impressions have been printed.

Three module shapes
Square for maximum reliability, rounded for softer branding, dots for distinctiveness.
Any brand colour
Foreground and background, with contrast enforced in the direction scanners expect.
Centre logo badge
Error correction is raised for you so the code still reconstructs what the badge covers.
PNG and SVG export
SVG for print at any size; PNG for screens, email and decks.
Design
Shape, colour and centre badge
square
rounded
dots
Error correction raised automatically when a badge is added
Bulk & API

Ten thousand codes, each with its own destination

Making one QR code is a solved problem. Making one per table, per asset, per order — and keeping every destination correct afterwards — is where free tools and spreadsheets give up. QrZeo handles that case directly.

Upload a CSV with one row per code and get back a set that is already named, foldered and pointing at the right place. Or create codes through the REST API as part of a flow you already run, and get SVG and PNG URLs in the response ready to drop into a print template. Re-pointing works in bulk too: update a whole folder in one call when the season changes.

CSV up to 10,000 rows
Name, destination, folder and tags per row. Processed in the background with live progress.
REST API
Create, retrieve, re-point and read scan events. Ready-to-use SVG and PNG URLs in every response.
Scoped API keys
Live and test keys per integration, scoped to one workspace, revocable independently.
Bulk re-pointing
Change the destination for an entire folder at once — the printed patterns never move.
CSV import
tables.csv · 240 rows
Table 01example.com/menu?t=1created
Table 02example.com/menu?t=2created
Table 03example.com/menu?t=3created
240 of 240 codes generated · SVG + PNG ready
Storage

Host the file, swap it whenever you like

When a code should open a PDF menu, a warranty document or a product video, the file has to live somewhere. Hosting it yourself means the code depends on a URL you have to keep stable forever — which is the same trap as a static code, one layer up.

Upload the file to QrZeo instead and point as many codes at it as you want. Replacing the file updates every one of them at once, so a seasonal menu changes across two hundred table codes without touching a single printed card. Deleting a file tells you how many codes reference it before it does anything irreversible.

PDF, video, image and audio
The formats codes usually point at, hosted on a URL that stays stable.
One file, many codes
Replace the file and every code referencing it follows immediately.
Usage visibility
See how many codes point at a file before deleting it.
Quota you can see
Storage usage against your plan, on the page, not in a support email.
Storage
patio-menu-spring.pdf · 860 KB
PDF
patio-menu-spring.pdf
replaced 2 minutes ago
updated
+ 236 codes now serve the new file
Organise

Two hundred codes, still findable

Volume is where QR tools usually fall apart. A flat list of names like "qr-final-v3" is not a system, and by the time it matters you have codes in print that nobody can identify.

QrZeo gives each code one folder and any number of tags, with filtering across both plus type, mode and status. Crucially, organising is never destructive: deleting a folder unfiles its codes rather than deleting them, and renaming a tag rewrites it everywhere it appears. Tidying up should never take a printed code offline.

Folders and tags
One folder per code, unlimited tags, filter by any combination.
Non-destructive cleanup
Deleting a folder unfiles codes; they keep resolving and keep their history.
Search and filter
By name, short link, type, static/dynamic, active/paused and folder.
Rename safely
Renaming a folder or tag updates every code that carries it.
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.
Teams & security

Safe to hand to the rest of the team

A dynamic QR code is a live redirect on something already in print. Giving five people the ability to change where it points deserves the same care as handing over DNS, which is why permissions here are enforced on the server for every request rather than hidden in the interface.

Roles map to what people actually do: editors create and re-point codes, viewers read analytics and nothing else, and billing stays with owners. Separate workspaces keep client work, internal codes and side projects apart, each with their own members, folders, storage and API keys.

Granular roles
Create, edit, delete, analytics, storage, API keys, team and billing — assigned per role.
Server-enforced
A missing permission returns 403 from the API, not just a hidden button.
Multiple workspaces
Separate members, folders, storage and keys per workspace.
Two-factor authentication
TOTP with backup codes, available on every account including free.
Roles
Enforced on the server, per request
OwnerEverything, including billing
AdminEverything except billing
EditorCreate and re-point codes
ViewerRead analytics only
A missing permission returns 403 from the API
FAQ

Questions about features

Which content types cannot be dynamic?
Wi-Fi and vCard codes. A phone acts on those payloads directly — joining a network or saving a contact — rather than opening a URL, so there is nothing to redirect. QrZeo marks them static-only in the generator rather than offering a dynamic option that could not work.
What error-correction level should I use?
Medium (15%) is the sensible default and what QrZeo picks. Raise it to Quartile or High when the code carries a centre logo, will be printed small, or will live somewhere it might get scuffed — a fuel pump, a parcel, a table edge. Higher correction means a denser pattern, so the trade-off is physical size.
How small can I print a QR code?
As a rule of thumb, the code should be at least a tenth of the scanning distance — 2 cm for arm's length, considerably larger for a shop window. Shorter payloads produce fewer modules and survive smaller printing, which is a practical reason to prefer dynamic codes: a short link encodes far smaller than a long campaign URL with tracking parameters.
Can I download codes as vectors?
Yes. Every code exports as SVG as well as PNG. SVG is what you want for print — it scales to any size with no loss, and a designer can place it in InDesign or Illustrator without resampling.
How does file storage work?
Upload a PDF, video, image or audio file to your workspace and point any number of codes at it. Replacing the file updates every code that references it at once, which is how a seasonal menu changes without touching a single printed card.
Can I use my own domain for short links?
On the Scale plan, yes — dynamic codes can redirect through your own domain instead of qrz.eo. Set this up before your first print run: changing the domain afterwards breaks every code already printed, because the domain is part of what the pattern encodes.
What does the API let me do?
Create static and dynamic codes, retrieve them, re-point destinations, and read scan events with device and geo breakdowns. Responses include ready-to-use SVG and PNG URLs. Keys are scoped per workspace and inherit the permissions of the role that created them.
Do you rate-limit API requests?
Rate limits apply per key rather than per workspace, so a misbehaving integration cannot starve the others. Plan allowances cover monthly request volume; sustained overage is billed per thousand requests rather than cutting you off mid-campaign.
Can I organise codes into folders?
Yes — one folder per code, plus any number of tags, with filtering across both. Deleting a folder never deletes codes: they become unfiled and keep resolving, because tidying up should not take a printed code offline.
Is scan data personally identifiable?
No. Scans are recorded with a timestamp, coarse device class and country or city — not an identity. The redirect sees what any web server sees when a browser makes a request, and QrZeo does not build profiles across codes.

See every feature with your own data

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