Free QR code generator
Download a PNG or SVG with no account, no watermark and no expiry. 3 codes you can edit after printing are free too, no card.
Dynamic & Editable
Change where it points after printing, and see who scans it.
This is an example. Type a destination to download yours.
Design
Style
Colour#000000
Shapesquare
Body shape
Corner shape
Inside shape
Framenone
Logonone
Print settingsECC M
QR codes for the links you already use
Paste one and the generator checks it before you print: a Google Form edit link is refused, share tracking is stripped, and a long link is offered a short one.
Every kind of code, not only links
Most download free with no account. PDF and app store codes need a free account, because they run through a link we keep.
- WebsiteOpens any web page.
- TextShows a note on the phone.
- Wi-FiJoins your network, no typing.
- EmailStarts an email to you.
- PhoneCalls your number.
- SMSDrafts a text message.
- Contact cardSaves your details to contacts.
- Product (GS1)The retail link format for packaging.
- PDFOpens a file you can replace later.
- App storeSends each phone to its own store.
- LocationOpens the place in a maps app.
- Calendar eventSaves the date to their calendar.
- PaymentOpens checkout on your own account.
How to make a QR code that scans first time
Choose what it opens
A link, Wi-Fi, a contact card, an email or a text. If the address might move, save it as an editable code.
Keep strong contrast
Any colours work if one is clearly darker. We warn you below 3:1.
Leave error correction on Medium
A code still scans with about this much lost: Low 7% · Medium 15% · High 25% · Highest 30%. A logo switches it to Highest for you.
Download, then test it
PNG, 1,024 px wide · SVG, vector, any size. Before you print, scan it with two phones from where people will stand. How big to print it.
A dynamic QR code stays the same. Where it goes can change.
It holds a short link we run, not your web address. Change where that link goes and every printed copy follows.
Printed · never changes
Where it goes · change it any time
Already printed? Change the link
Menu moved, or a typo on a box of leaflets? Send the same code to the right page. Nothing is reprinted.
Know which print worked
Scans per code, day by day, so you see which flyer people picked up and which they walked past.
Priced per plan, never per scan
Start free with 3 dynamic codes and unlimited static ones. Paid plans from $5 a month.
Free
$0/mo
Unlimited static codes. Three editable ones that never expire.
- Short links on their own, no QR code needed
- Up to 1 of the 3 can be a QR Menu
- Add your logo to QR codes
- Every shape, corner and frame
3dynamic codes
Starter
Recommended$5/mo
For one business with codes out in the world.
- 5 QR Menus
- QR Forms
- GS1 Digital Links we host, so a printed pack can be re-pointed
- Advanced tracking and analytics
100dynamic codes
Pro
$15/mo
For agencies and teams running codes at scale.
- 50 QR Menus
- Unlimited analytics history
- 10 custom domains
- 5,000 API requests a month
600dynamic codes
Business
$39/mo
For organisations running codes across many brands.
- 400 QR Menus
- 50 custom domains
- Up to 25 team members and team management
- Up to 10 workspaces
2,000dynamic codes
Unlimited scans on every plan. Cancel online in two clicks. Compare every plan and feature
What you can do with an account
Colours, corners, a frame and your logo
Every shape, frame and logo is free. A frame can carry a line like SCAN FOR MENU.

All your codes in one list
Each row shows the destination, the short link and the scan total, so you see which codes people use.

Change where it goes. The old link is kept.
Point a printed code at a new page any time. Each old link stays in the history with its date and note, and one click puts it back.

Send different people to different pages
Breakfast menu before eleven, lunch after. Device, country, language and date rules on every plan; weekly schedules on Starter; towns, scan counts and A/B splits on Pro.
Smart QR codes
Scans by day, for one code or all of them
Total scans, unique visitors and a daily chart. Free keeps 90 days of history, Starter 365 days.

Where people scan, and on what
Countries on every plan. Device, system, browser, referrer, hour and weekday on Starter and up; towns on Pro and Business.

Invite the people you work with
A role for each person. Pro has room for 10, Business for 25.

Watch scans arrive on a globe
A dot appears seconds after a scan, on the country, or on the town with Pro and Business. The Live Map comes with Starter and up.

QR Forms: ask instead of link
A form of our own, built next to its code. No Google account to build or answer it, and answers arrive added up by question.
- Questions
- 10 kinds, such as short answer, rating, choose one and date; up to 30 a form.
- Quizzes
- Right answers and a pass mark, and each person sees whether they passed.
- Bots
- Cloudflare screens every answer before it reaches you.
- Answers out
- CSV with Pro and Business; a signed webhook per answer with Business.
- On Free
- A form and its code take one of the 3 editable items.
Need file uploads, branching or a live Sheet? Google Forms has them: make a code for your Google Form.

Do QR codes expire?
- Static codes
Never expire
Your link is in the squares, so nobody can switch it off, us included. Free, with no account.
- Dynamic codes
Work while you have a plan
They run through a short link we keep, so they work on any plan, Free included.When a paid plan ends: at least 90 days, then a code stops only after 90 days unscanned. We email first and delete nothing.
- Abuse
Switched off straight away
Phishing, malware, fraud and anything else against the acceptable use policy is taken down with no grace period.
Static vs dynamic QR codes
Use static for the Wi-Fi and dynamic for anything costly to reprint.
| Compared | Static · fixed | Dynamic · editable |
|---|---|---|
| Price | Free forever | 3 free, then a plan |
| Account needed | No | Yes, to save and edit it |
| Change where it goes | Never. You reprint it | Any time |
| What the code holds | Your link, Wi-Fi or contact details | A short link you point anywhere |
| Scan analytics | None | Scans by day and country; device from Starter, town from Pro |
| Expiry | Never | While you have a plan, Free included |
| Best for | Wi-Fi, contact cards, anything that must work offline | Menus, packaging, signs, campaigns |
Which one are you holding?
Read it with our QR code scanner. Your own web address means it’s static. A short link on another domain means it’s dynamic, and that account decides where it goes.
A static code already on the wall
Nobody can re-point it, us included. If it opens a page on your own site, redirect that page and every copy follows. If not, a sticker with a new code is the only fix.
Last reviewed , against the product as it works today.
The rest of the toolbox
Open a row to see the screen and which plan has it.
Custom domains
Short links on your own domain, chosen code by code.Starter and up
Codes open go.yourbrand.com/menu instead of a link with our name in it. Add two DNS records, we check them, then pick the domain per code or move a whole list onto it.
Starter and up
QR codes on your own domain
Bulk QR code generator
A spreadsheet in, one dynamic code per row out.Starter and up
Paste or upload a list, match the columns, and get one dynamic code per row: a table, a stall, a badge, a product. Each has its own destination and scan count.
Starter and up
The bulk generator
Change many codes at once
Tick the codes, then pause, tag, file or move them together.Pause and resume on every plan · folders and tags on Starter and up
Tick codes, or pick every code with a tag, then pause, tag, file or move them onto your domain in one go. When a pop-up shop closes, pause all its codes together.
Pause and resume on every plan · folders and tags on Starter and up

Short links, with your own ending
The link on its own, for a bio, an email or an ad.Every plan · custom endings on Business
A short link you can change, route and count, with a QR code only if you want one. Clicks and scans on the same link count together. On Business you choose the ending, like /spring-menu.
Every plan · custom endings on Business
The URL shortener
GS1 Digital Link for products
The retail code that carries your GTIN and still opens a web page.Every plan, Free included
A web address made from your domain and the GTIN, plus batch, serial and dates if you want them, in GS1’s Digital Link format. A phone opens your page, and we check the GTIN’s check digit first.
Every plan, Free included
GS1 Digital Link codes
PDF codes you can update
Upload a PDF, print the code, swap the file later.Every plan, Free included
We host the file and the code opens it. Upload a new version and the same print opens it, with the old file kept in the history.
Every plan, Free included
PDF to QR code
Your logo in the middle
Upload any image; we size it so the code still scans.Every plan, Free included
PNG, JPEG, WebP or GIF, up to 15 MB. We raise the error correction for it and never let it cover more than the code can lose.
Every plan, Free included

Print-ready downloads
Files for the screen, and one for the printer.PNG and SVG on every plan · PDF on Starter and up
PNG and SVG on every plan, and a print-ready PDF on Starter and up.
PNG and SVG on every plan · PDF on Starter and up

Folders and tags
Keep one location’s or one campaign’s codes together.Starter and up
A folder per shop, listing or campaign, and the list filtered by it. Deleting a folder moves its codes to No folder, with undo.
Starter and up

Campaign presets
Saved UTM parameters, so printed scans are not “direct”.Starter and up
Untagged, printed scans land in your web analytics as direct traffic. A preset fills in source, medium and campaign in one click, so the flyer and the table tent show up apart.
Starter and up

City-level scan locations
Which towns the scans came from, not only which countries.Pro and Business
Scans by city and region for each code, and towns on the Live Map. It’s the place the phone’s network reports, never a street.
Pro and Business

CSV export
Daily scans per code, in a spreadsheet.Pro and Business
Scans and unique visitors by day, for one code or all of them, with each code’s name and short link.
Pro and Business

Webhooks
Your server hears about every scan and every change.Business
Pick events (a scan, a code made, changed or paused, a form answered) and give us a URL. Each arrives as a signed POST, failures are retried, and every delivery is listed.
Business
The API and webhooks
Separate workspaces
One subscription, a workspace per brand or client.Business
Each has its own codes, team and analytics, so one client never sees another’s. Up to 10 on one subscription.
Business

Priority email support
Paid plans’ emails are answered first.Starter and up
Messages from paid plans are answered before those from free accounts. That’s our order of work, not a reply-time promise.
Starter and up

Your data, to take or delete
A full export any time, and deletion you can take back.Every plan, Free included
Codes, history, scans, form answers and uploads as one .zip. Deleting the account gives you 30 days to change your mind, and printed codes work until then.
Every plan, Free included

An API for the codes you print
Make dynamic codes and short links from your own software, re-point them, and change up to 500 in one request. Rendering works on every plan; creating and editing come with Starter and up. No-code setup is in the n8n and Make docs.
Render a code · every plan, Free included
curl -o code.svg \
-H "Authorization: Bearer $QRSALT_KEY" \
"https://app.qrsalt.com/api/qr?data=https://example.com"An SVG comes back, ready for a label, a template or a web page.
Re-point a printed code · Starter and up
curl -X PATCH https://app.qrsalt.com/api/v1/codes/{id} \
-H "Authorization: Bearer $QRSALT_KEY" \
-H "content-type: application/json" \
-d '{"destination":"https://example.com/winter"}'The printed code opens the new page from the next scan. The old address stays in the code’s history.
Change many codes at once · JavaScript
// Move a campaign's codes onto your own domain
await fetch('https://app.qrsalt.com/api/v1/codes/bulk', {
method: 'POST',
headers: {
authorization: `Bearer ${process.env.QRSALT_KEY}`,
'content-type': 'application/json',
},
body: JSON.stringify({ ids, action: 'domain', domain: 'go.example.com' }),
})Pause, tag, move or file codes in one request. The response lists what changed and what was skipped.

Before you print anything
- Is this QR code generator really free?
- Yes. Static codes are free for good, with no watermark and nothing that runs out. The Free plan also includes 3 editable codes; paid plans hold more.
- How long do QR codes last?
- As long as the page it opens and the print both last. If the page moves, a dynamic code can follow it and a static one can’t. Replace an outdoor print once it stops scanning first time.
- Can a QR code be inverted or in colour?
- Yes. Dark and Blueprint put light squares on a dark background, and Espresso, Terracotta, Botanical, Kraft and Badge are in colour. We warn you below 3:1 contrast. Test an inverted code on two phones before you print.
- What is the FBI warning about QR codes?
- In January 2022 the FBI warned that criminals swap real codes for their own, for example with a sticker, to take payments. Check the address your phone shows before you pay. How to protect a payment code.
