Skip to content

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.

Your code is drawn as you type.

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

How to make a QR code that scans first time

  1. 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.

  2. Keep strong contrast

    Any colours work if one is clearly darker. We warn you below 3:1.

  3. 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.

  4. 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.

Source: Denso Wave on error correction levels.

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.

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

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.

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.
Colours, corners and a frame sample data

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.

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

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.

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

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
Two smart routing rules on a café table tent: every day from 7 to 11 the breakfast menu, and from 11 to 4 the lunch menu - lit up, because a test scan at Tuesday lunchtime lands there - each set in Los Angeles time.
Routing rules for a table sign sample data

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.

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

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.

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

Invite the people you work with

A role for each person. Pro has room for 10, 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

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.

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.
The globe over one day sample data

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.

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

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.

ComparedStatic · fixedDynamic · editable
PriceFree forever3 free, then a plan
Account neededNoYes, to save and edit it
Change where it goesNever. You reprint itAny time
What the code holdsYour link, Wi-Fi or contact detailsA short link you point anywhere
Scan analyticsNoneScans by day and country; device from Starter, town from Pro
ExpiryNeverWhile you have a plan, Free included
Best forWi-Fi, contact cards, anything that must work offlineMenus, 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.

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
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, 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
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, 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

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.

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
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

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 print opens it, with the old file kept in the history.

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

Files for the screen, and one for the printer.

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

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.

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

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”.

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

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. It’s the place the phone’s network reports, never a street.

Pro and Business

Scans of a café’s table-tent code by city, the top six: Portland with 60%, then Vancouver, Beaverton, Seattle, San Francisco and London, each with its count, a bar and its share.
A code’s analytics · city sample data

CSV export

Daily scans per code, in a spreadsheet.

Scans and unique visitors by day, for one code or all of them, with each code’s name and short link.

Pro and Business

The foot of a code’s analytics: the Breakdown card on referrers - every scan straight from the camera - with its own Download CSV button, and under it the Export panel, which downloads scans and visitors per day as CSV.
A code’s analytics · export sample data

Webhooks

Your server hears about every scan and every change.

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
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 has its own codes, team and analytics, so one client never sees another’s. Up to 10 on 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.

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

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.

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

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

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.

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

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.