Skip to content
Start free
Free · Never expires

Free QR Code Generator

Create permanent QR codes for WhatsApp, contacts, links, images and text. Brand them, download print-ready PNG & SVG — and with dynamic links, edit where they point anytime without reprinting.

Recommended. The printed code points to a short Zappio link you can re-point anytime — it never expires.

Why these QR codes never expire

Most “free” QR generators hand you a code that stops working. They create a dynamic code pointing at their own short link, then put that link behind a trial. When the trial ends, the code you already printed on five thousand flyers goes dead, and the only fix is to reprint everything.

Zappio’s codes do not work that way. A static code has the destination encoded in the pattern itself — there is no server in the middle, so it keeps working for as long as the destination does. A dynamic code points at a short getzappio.com/q/… link that you control and can re-point at any time, free, without an account.

Both are free to create and free to download. Neither has a scan limit, a watermark, or an expiry date.

Which QR code should you make?

The generator above makes five kinds. They are not interchangeable — two of them cannot be edited after printing, for a good reason.

WhatsApp QR code

Enter your number with the country code and, optionally, a message. The code resolves to a wa.me link, so scanning it opens a WhatsApp chat with you — with that message already typed and ready to send.

The pre-filled message is the part most businesses skip. A code that opens an empty chat gets you “hi”. A code that opens with “I’d like to book a table for Friday” gets you the booking. If you run Zappio, make the message a keyword like START_BOOKING and the scan starts an automated flow instead of waiting for someone to reply.

Where it earns its place: table tents, receipts, packaging inserts, shopfront windows, delivery notes, business cards, and the back of a menu.

Contact card (vCard) QR code

Name, phone, email, company, website. Scanning it offers to save you straight into the phone’s address book — no typing, no misspelled surnames.

This one is static only, and that is deliberate: the details are encoded in the pattern, so the code works with no internet connection at all. The trade-off is that you cannot change it once it is printed. If your number might change, put a WhatsApp or website code on the card instead.

Website or link QR code

Any URL — a menu, a booking page, a product, a Google review link. Type it without https:// and we add it for you.

Make this one dynamic if there is any chance the destination moves. A restaurant printing a menu code onto every table wants a dynamic code: next season’s menu becomes a two-second edit rather than a reprint.

Image or PDF QR code

Upload an image or a PDF and we host the file, then encode the link to it. Scanning opens the file directly.

This is the one people do not think of and then use constantly: a price list, a spec sheet, a warranty card, an instruction leaflet, a wine list. It saves building a whole web page just to put one document behind a code.

Plain text QR code

Any text at all — a serial number, a batch code, a note, a Wi-Fi password written out in full. The text lives in the pattern, so scanning simply shows it without opening anything.

Static only, for the same reason as the contact card, and it works with no signal.

Static or dynamic? A straight answer

Static codeDynamic code
ExpiresNo — everNo — ever
Editable after printingNoYes, any time
Counts scansNoYes
Works with no internetYesNo — needs to resolve the link
Depends on Zappio staying onlineNoYes
Available forAll five typesWhatsApp, link, file
Pattern complexityGrows with the dataAlways small and simple

The honest version: a static code is more durable, a dynamic code is more flexible.

A static code will outlive all of us. It does not depend on Zappio — or any other company — still being here in ten years, because the data is in the pattern. It also gets visually denser the more you encode, which is why a long vCard produces a busier code than a short link.

A dynamic code depends on that short link resolving. In exchange you can change where it points after it is printed, and you get a count of how many times it was scanned. When you create one we give you an edit link — save it, because that link is how you prove the code is yours and how you change it later. No account required.

Choose static for anything you cannot reprint and will never need to change: contact details, serial numbers, a WhatsApp number you have had for years. Choose dynamic for anything tied to a campaign, a season, or a page that might move.

How to make a QR code that actually scans

QR codes that fail in the real world almost always fail for one of four reasons, and all four happen at the design stage rather than the generating stage.

1. Size it to the scan distance

The working rule is that a printed code should be at least one tenth as wide as the distance people will scan it from. About 2 cm on a business card or product label. 3–4 cm on a table tent or flyer. 20 cm or more on a poster read from across a room. A code that looks fine on your monitor can be completely unscannable once it is printed at thumbnail size.

2. Keep the contrast strong, and the right way round

Dark pattern on a light background. Light-on-dark scans badly on a lot of phones, and a mid-tone pattern on a mid-tone background often will not scan at all. If the code has to sit on a photograph or a coloured panel, put it on a solid light tile first.

3. Leave the quiet zone alone

A QR code needs clear space around it — roughly four modules, or about a tenth of the code’s width. Designers crop it constantly to tidy up a layout, and the code quietly stops working. Do not let text, a border or a background edge touch it.

4. Download the SVG for anything bigger than a flyer

PNG is fine on screen and in small print. SVG is vector, so it stays perfectly crisp at any size — use it for posters, banners, vehicle livery and anything a printer is going to scale up.

Then test the real thing. Scan the actual printed proof, with more than one phone, in the lighting the code will really live in. A code that scans on your desk under a lamp can fail on a dim restaurant table, and you only find that out after the print run.

How Zappio compares

ZappioTypical free generator
Codes expireNoOften, once a trial ends
Account requiredNoUsually, for dynamic codes
Watermark on the codeNoSometimes
Scan limitNoneCommon on free tiers
Print-ready SVGYes, freeUsually paid
Edit a printed code’s destinationYes, freePaid plan
Logo and brand coloursYesOften paid

The difference that matters is the first row. A dynamic code from a generator that puts redirects behind a subscription is a liability: the day the subscription lapses, every code you have ever printed points at a dead link or an upsell page. That is the failure this page exists to avoid.

QR codes that never expire — questions, answered

Do these QR codes expire?
No. Static QR codes have the data baked in, so they work forever. Dynamic (permanent) QR codes point to a short Zappio link that you control — the printed code never changes and never expires, even when you update where it points.
Is it really free?
Yes — generate and download as many QR codes as you like, free. There is no watermark, no scan limit and no account needed to make or download a code.
Can I edit a QR code after printing it?
Yes — with a dynamic link. Change the destination anytime (a new offer, a new menu, a different WhatsApp number) and every already-printed code instantly points to the new place. No reprinting.
What is a WhatsApp QR code?
Scanning it opens a WhatsApp chat with your number, optionally pre-filled with a message. Use a keyword like START_BOOKING to trigger a Zappio automation — so a scan instantly starts a booking, order, or enquiry flow.
What is the difference between a static and a dynamic QR code?
A static code encodes the destination in the pattern itself, so it needs no internet and depends on nothing staying online — but it cannot be changed once printed. A dynamic code points at a short link you control, so you can re-point it after printing and see how many times it was scanned.
Why can't I make a contact card or plain text code dynamic?
Because those two encode their content directly into the pattern rather than pointing at a link. That is what lets them work with no signal at all, and it is also why there is nothing to re-point later. WhatsApp, website and file codes can be either static or dynamic.
How big should a QR code be when printed?
At least one tenth as wide as the distance it will be scanned from. That is roughly 2 cm on a business card or product label, 3 to 4 cm on a table tent or flyer, and 20 cm or more on a poster read across a room. Download the SVG for anything larger than a flyer so it stays sharp.
Can I add my logo and brand colours?
Yes. Pick a style, add a centre logo and set your colours. Keep a dark pattern on a light background — light-on-dark and low-contrast combinations scan badly — and always test-scan the printed proof with more than one phone.
Do you track how many times my QR code is scanned?
Dynamic codes count their scans. Static codes cannot be counted, because nothing is contacted when someone scans them — the phone simply reads the pattern.
Can I download a QR code as SVG?
Yes, free. PNG suits screens and small print; SVG is vector, so use it for posters, banners, signage and anything a printer will scale up.
Automate what happens after the scan →