Skip to content

Free QR code generator

Type a link and your code appears. Download it as PNG or SVG: free, with no account, no watermark and no expiry.

Dynamic & Editable

Change where it points after printing, and see who scans it.

Your code is drawn as you type.

Type a destination to download.

This is an example code. Style it now — yours takes its place as you type.

Design

Style

Colour#000000
Shapesquare

Body shape

Corner shape

Inside shape

Framenone
Logonone
Print settingsECC M
  • Free, no account
  • No watermark
  • Unlimited scans
  • Static codes never expire

Why people pay

The code stays the same. Where it goes can change.

A normal QR code has the web address built into it, so once it is printed it always opens that address. A dynamic code opens a short link that we run for you. You can change where that link goes whenever you want, and the code on your flyer, sign or menu keeps working.

A printed QR code that never changes, connected to a link you can change at any time — for example from a spring menu to a summer menu to a holiday menu.

Printed · never changes

Where it goes · change it any time

After printing

Already printed? You can still change the link

Only if you need to. When the menu moves to a new page or you switch booking systems, send the same code to the new address. Nothing is reprinted, and the old link is kept in case you want it back.

Scans

Know how many people actually scanned

Count the scans for each code, day by day. You find out which flyer worked and which one nobody picked up.

Every season

One printed code, season after season

Print the code on the sign once. In spring it opens the spring menu, in summer the summer one. You change it from your phone or computer.

Pricing

Priced per plan, never per scan

Start free with 3 dynamic codes and unlimited static ones. Paid plans start at $12 a month.

Free

Free

Unlimited static codes. Three editable ones that never expire.

  • Unlimited static QR codes, forever
  • 3 editable items in total — dynamic QR codes, QR Menus and QR Forms share them
  • Dynamic codes never expire, and each comes with a short link
  • Short links on their own, no QR code needed

3dynamic codes

Starter

$12/mo

For one business with codes out in the world.

  • 5 QR Menus
  • QR Forms
  • Advanced tracking and analytics
  • Live map of scans as they happen

100dynamic codes

Pro

Most chosen

$39/mo

For agencies and teams running codes at scale.

  • 50 QR Menus
  • Unlimited analytics history
  • 10 custom domains
  • API access

600dynamic codes

Business

$99/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

See all plans

Paid plans from $12/mo. Unlimited scans. Cancel online in two clicks.

Inside the dashboard

What happens after you sign up

What you can do once you have an account, screen by screen.

Make it

Choose the colours, the corners and a frame

Type where the code should go, then style it. The preview updates as you change things, and a frame can carry a line like SCAN FOR MENU. Every shape, frame and logo is on the Free plan too.

The design step for a café’s table-tent code: espresso-brown modules on a cream ground with leaf-shaped corners and a SCAN FOR MENU label underneath, next to the controls for code colour, background, body, corner and inside shapes, and frame.
Designing a code sample data

Find it again

All your codes in one list

Each row shows where the code goes, its short link and how many times it has been scanned, so you can see which ones people use.

A coffee company’s in-store QR codes - table tents at its two cafés, a loyalty counter card and a receipt review code - each with its short link on the company’s own domain, where it points, and how many times it has been scanned.
Code list with scan counts sample data

After printing

Change where it goes. The old link is kept.

Send a printed code to a new page whenever you need to. Each earlier link stays in the history with its date and your note, and one click puts it back.

How dynamic QR codes work
Destination history for a café’s table-tent code: the summer menu, the spring menu and the old winter menu PDF, each with the date it was replaced, a note, and a button to restore it.
Link history for a menu code sample data

Smart routing

Send different people to different pages

One code can open the breakfast menu before eleven and the lunch menu after, or the Spanish menu on phones set to Spanish. You try the rules with a test scan before you print. Device, country, language and date rules are on every plan; schedules come with Starter, and towns, scan counts and A/B splits with Pro.

Smart QR codes
Smart routing on a café table tent: a rule sending breakfast scans from 7 to 11 to the breakfast menu, one sending 11 to 4 to the lunch menu - lit up, because a test scan at Tuesday lunchtime lands there - one sending iPhones to the order-ahead app after hours, and “Otherwise”, the full menu.
Routing rules for a table sign sample data

Scans

Scans by day, for one code or all of them

Total scans, unique visitors and a chart by day. Free keeps 90 days of history and Starter 365 days.

Thirty days of analytics for a coffee company: totals for scans, unique visitors and live codes, over a bar chart of scans by day that climbs every weekend.
Scans over 30 days sample data

Breakdown

Where people scan, and on what

Every country with its flag and its share of scans. Switch the breakdown to device, system, browser, referrer, hour or weekday with Starter and up, and to towns with Pro and Business.

The Breakdown card set to country: a flag beside each country - the United States first, then Canada, the United Kingdom, Japan, Australia, Germany and more - with its count and its share of all scans.
Scans broken down by country sample data

QR Forms

Ask a question instead of opening a link

A QR Form asks whoever scans it for a rating, a choice or a comment, and adds up the answers question by question. Give the questions right answers and a pass mark, and it becomes a quiz that tells each person whether they passed. Cloudflare screens every answer for bots, so what you read came from real people.

Results of the café’s feedback form, question by question: the spread of ratings with the average, the split between the two cafés, and bars for what people came in for.
Answers to a feedback form sample data

Team

Invite the people you work with

Give each person a role. Pro has room for 10 people and Business for 25.

The team screen for a coffee company: the owner, then an admin and two members whose roles can be changed and who can be removed, with five of twenty-five seats in use, counting one invitation not yet accepted.
Team members and roles sample data

Live

Watch scans arrive on a globe

Each scan shows up where it happened, a few seconds after it happens. Put a poster up in the morning and see it working by lunch. The Live Map comes with Starter and up.

The Live Map: a pale globe turned to North America, its land drawn in dark hexagon dots, with red marks on the towns where a coffee company’s codes were scanned in the last 24 hours, the day’s scan and country counts in the corner, and the latest scans listed underneath, newest first.
Live Map, last 24 hours sample data

Which one?

Static or dynamic

Static codes are free and never change. Dynamic codes can be changed and counted. Many people use both: a static code for the Wi-Fi, a dynamic one on anything costly to reprint.

ComparedStatic · fixedDynamic · editable
PriceFree forever3 free, then a plan
Account neededNoYes, to save and edit it
Change what it saysNever. You would reprint itWhere it goes, any time
What the code holdsYour link, Wi-Fi or contact detailsA short link you can point anywhere
Scan analyticsNoneScans, day, city, device
ExpiryNeverNever while you have a plan, Free included. 30 days after you cancel a paid one
Best forWi-Fi, contact cards, anything that must work offlineMenus, packaging, signage, campaigns

Our policy

Static codes never expire. Dynamic codes work while you have a plan.

Static codes

Never expire

Your link is built into the code itself. Nothing sits in between, so nobody can switch it off, us included. Free, with no account. Want a code that outlives us? Make it static.

Dynamic codes

Work while you have a plan

They run through a short link we keep, which is how you can change them after printing. The Free plan counts. Cancel a paid plan and they keep working for 30 days, we email you first, and nothing is deleted.

Abuse

Switched off straight away

Phishing, malware, fraud and anything else against the acceptable use policy is taken down with no grace period.

For developers

An API for the codes you print

A REST API for your own code: make dynamic codes and short links, change where they go, render SVG, PNG or PDF, add your domains and change hundreds of codes in one request. No-code tools like Zapier, Make and n8n can call it too, with a plain HTTP step. The API comes with Pro and up, and every request carries your key.

Render a code · Pro and up

curl -o code.svg \
  -H "Authorization: Bearer $QRSALT_KEY" \
  "https://app.qrsalt.com/api/qr?data=https://example.com"

An SVG back, ready for a label, a template or an image tag.

Re-point a printed code · Pro 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, and the old one is kept in its history. Keys can only ever touch their own workspace.

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, file or move codes in one call. The answer lists what changed and what was skipped.

Every endpoint, with a playground
The API screen listing a coffee company’s keys - one for a menu sync, one for a label printer, one revoked - each with its prefix, who created it, when it was made and when it was last used.
API keys · one per integration sample data

Everything else

The rest of the toolbox

Most people won't need these. Open one to see the screen and which plan has it.

Custom domains

Short links on your own domain, chosen code by code.

Codes open go.yourbrand.com/menu rather than a link with our name in it, so the address under the code is yours. You add two DNS records and we check them. Then pick the domain for each code as you make it, or move a whole list of codes onto it at once.

Starter and up

QR codes on your own domain
A verified custom domain, go.fieldhousecoffee.example, with the TXT and CNAME records to copy into DNS and a button to check them again.
Custom domains · verified sample data

Bulk QR code generator

A spreadsheet in, one dynamic code per row out.

Paste or upload a list of names and links, match the columns, and get a dynamic code for every row - one per table, stall, badge or product - each with its own scans and destination.

Pro and Business

The bulk generator
Bulk import after pasting a spreadsheet of twelve café tables - window, patio and bar - with the name and link columns matched to each new code’s name and destination.
Bulk import · twelve café tables sample data

Change many codes at once

Tick the codes, then pause, tag, file or move them together.

Tick codes in the list, or pick every code with a tag, and pause or resume them, add or remove tags, move them to a folder or onto your own domain, or add campaign tags, in one go. The API does the same in one request.

Pause and resume on every plan · folders and tags on Starter and up

An estate agent’s QR codes - yard signs for two listings, an open-house flyer and neighbourhood flyer drops - each with its short link on the agency’s own domain, its scan count and its folder.
Your QR codes · an estate agent’s list sample data

GS1 Digital Link for products

The retail code that carries your GTIN and still opens a web page.

Your domain and the GTIN from under the barcode, with batch, serial and dates if you want them, in the link format GS1 set for retail. A phone opens your page; the product data rides along in the address. The GTIN’s check digit is checked before anything is made.

Every plan, Free included

QR codes for packaging
Making a GS1 Digital Link code for a bag of coffee beans: the brand’s own domain, the GTIN from under the barcode and a batch number, beside a preview of the code the packaging will carry.
Create a code · GS1 Digital Link sample data

Wi-Fi, contact cards, email, phone and SMS

Networks, contacts, calendar dates and places, not only links.

A website, plain text, a Wi-Fi network, an email, a phone number, a text message, a contact card, a GS1 Digital Link, a PDF, a location, a calendar event and more. Most download free, with no account; the few marked “Editable only” need one.

Every plan, Free included

Contact card codes
The first step of making a code: a grid of the kinds of code on offer - website, plain text, Wi-Fi network, email, phone number, SMS message, contact card, GS1 Digital Link, PDF file, app store link, review request, location, calendar event and payment link, with PDF and app store marked editable only - Website chosen, and a preview of the code beside it.
Create a code · what to make sample data

PDF codes you can update

Upload a PDF, print the code, swap the file later.

We host the file and the code opens it. Upload a new version and the same printed code opens that one, with the old file kept in its history in case you need it back.

Every plan, Free included

PDF to QR code
Destination history for a café’s catering-menu PDF code: the summer and spring menus and last year’s, each replaced on a date with a note, and each one a button away from being restored.
A PDF code · file history sample data

Print-ready downloads

PNG and SVG on every plan, and a PDF for the printer.

PNG for screens and quick jobs, SVG for anything that gets scaled, and a print-ready PDF on Starter and up.

PNG and SVG on every plan · PDF on Starter and up

A table-tent code’s own page: the printed code in espresso brown with a SCAN FOR MENU label, its short link on the café’s own domain and PNG, SVG and PDF downloads, beside the address it opens and a box for a new one, with the note that changes apply without reprinting.
A code’s page · downloads sample data

Folders and tags

Keep one location’s or one campaign’s codes together.

Put codes in a folder per shop, listing or campaign and filter the list by it. Deleting a folder never deletes a code - they move to No folder, and you can undo it.

Starter and up

A coffee roaster’s codes filtered to the Retail bags folder: the house blend, Ethiopia Guji and decaf bag codes, each with its tags - 12oz, house blend, single origin, brew guide, decaf - its short link and its scans.
Your QR codes · one folder, tagged sample data

Campaign presets

Saved UTM parameters, so printed scans are not “direct”.

A printed code arrives 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 as themselves.

Starter and up

A coffee company’s Spring flyers campaign preset: source flyer, medium print, campaign spring-2026 and content farmers-market, with a preview of the full link a scan of a code using the preset opens.
Settings · campaign presets sample data

City-level scan locations

Which towns the scans came from, not only which countries.

Scans by city and region for each code, and towns on the live map. Coarse on purpose: the place the phone’s network reports, never a street or a precise position.

Pro and Business

Scans of a café’s table-tent code by city: Portland far ahead, then Beaverton, Vancouver, Seattle and a long tail of visitors from further away.
A code’s analytics · city sample data

CSV export

Daily scans per code, in a spreadsheet.

Download scans and unique visitors by day for one code or all of them - with each code’s name and short link - as CSV for your own reports, or for whoever asked how the campaign did.

Pro and Business

The foot of a code’s analytics: the referrer table, and under it the export panel with a button to download every row behind the charts as CSV.
A code’s analytics · export sample data

Webhooks

Your server hears about every scan and every change.

Pick the events - a scan, a code made or changed, a form answered, a QR Menu edited - and give us an address. Each one arrives as a signed POST, retried if your server is down, and every delivery is listed with the response it got.

Business

The API and webhooks
A webhook endpoint that hears about every scan and code update, with who set it up, a signing secret hidden until an owner or admin reveals it, and its last deliveries, each marked delivered with the response it got.
Webhooks · recent deliveries sample data

Separate workspaces

One subscription, a workspace per brand or client.

Each workspace has its own codes, team and analytics, so a client never sees another client’s. Up to 10 under one subscription.

Business

The Workspaces panel in settings: how many of the plan’s workspaces are in use, what happens to all of them if the subscription ends, and a field to name and create another one.
Settings · workspaces sample data

Priority email support

Paid plans’ emails are answered first.

A person reads every message. On a paid plan yours is answered before free accounts’ - an order we keep, not a promised hour. Your plan and workspace go along with it, so nobody has to ask which account is yours.

Starter and up

The support page on a Business plan: a note that a person reads every message and this plan’s is answered before free accounts’, a form to write in, and the plan and workspace that are sent along with it.
Contact support · Business plan sample data

Your data, to take or delete

A full export any time, and deletion you can take back.

Download everything - codes, history, scans, form answers and the files you uploaded - as one .zip with spreadsheets inside. Deleting the account gives you 30 days to change your mind, and your printed codes keep working until then.

Every plan, Free included

Account settings: a button to download everything the account holds, and a separate panel to delete the account, which can be undone for 30 days.
Settings · your data sample data

Questions

Before you print anything

Is this QR code generator really free?
Yes. Static QR codes are free for good: make as many as you like and download them as PNG or SVG, with no account, no watermark and no trial that runs out. You only pay for dynamic codes, the kind you can change and count, and the Free plan includes 3 of those too.
Do I need an account to download a QR code?
No. Static codes download as PNG or SVG without an account, an email address or a card. The code is made in your browser.
Do the free codes expire?
No. A static code has everything built into it, so it works as long as the page or details in it still exist. Scans never pass through us.
What is the difference between a static and a dynamic code?
A static code holds your link itself, so a new link means a new code. A dynamic code holds a short link that we run. You can change where that short link goes whenever you want, and the printed code follows.
What happens to my codes if I cancel?
Nothing changes until the end of the time you have paid for. After that your codes keep opening their last saved link for 30 days, and we email you before that time is up. Editing and analytics pause. Nothing is deleted, so if you pay again every code comes back without reprinting. The one exception is a code used for abuse, which we switch off.
Is there a scan limit?
No. Every plan, Free included, has unlimited scans. We never charge per scan or slow down a code that gets popular.
What do you record about the people who scan?
The time, a rough location (country and town, never a street), the kind of device, and the website they came from when the phone sends one. We never store IP addresses. To count unique visitors we use a scrambled code that changes every day, so nobody can be followed from one day to the next.
Free QR code generator - static and dynamic codes - QRSalt