Skip to content

Edit a QR code after it is printed

A code you can change is a code you never have to reprint: the pattern on the poster stays put while the page it opens moves. That works from the day the code is made, and only for the dynamic kind, so the first job is knowing which one is in your hand.

Start free

Free includes 3 editable codes. No card.

  • Change the destination
  • Keep the printed pattern
  • Put an earlier one back
  • From the next scan

Which code are you holding?

Point a phone at it and look at the address the camera offers before you tap anything.

Your own address: static

The destination is built into the squares. No service can reach into it, ours included, and the honest answer is that changing it means a new code. Further down is the one trick that sometimes rescues a static code already printed.

A short link: dynamic

The scan goes through a link held by whoever made the code, and that link can be aimed somewhere else at any time. If it was made here, it is two fields and a save.

What you can change on a code of ours

Everything on this list is edited on the code’s own screen, and none of it asks anybody to scan anything again.

Where it goes
Type a new web address on the code’s Overview and save. The next scan opens it, everywhere the code has been printed, and you can add a note saying why.
Every plan
What a hosted code says
A contact card, Wi-Fi, text, email, phone, SMS or event code opens a small page we host. Its address never moves, so you edit the details themselves: a new number, a new network password, a new date.
Every plan
The file behind a PDF code
Upload a new edition and the printed code opens that one instead. The old file stays in the code’s history in case you want it back.
Every plan
Send it to a page or a form
Point a link code at one of your QR Menus or QR Forms instead of a web address, so one printed code can become a page of links, and back again.
Every plan
Who sees what
Routing rules send different scans to different places: by device, country, language and date on any plan, on a weekly schedule, by region and city, by scan count, or split for a test.
Device, country, language and date on every plan · schedules on Starter and up · city, scan count and splits on Pro and Business
On or off
The switch at the top of the code pauses it: scans stop going through until you turn it back on, without anybody having to collect the posters.
Every plan
Its name, folder and tags
Housekeeping, so the right code is findable in a year. None of it changes what a scan does.
Names on every plan · folders and tags on Starter and up
Campaign tags
Add source, medium and campaign to the link so scans from a poster arrive in your web analytics as that poster rather than as direct traffic.
Starter and up
Its colours and shape
The design panel changes the file you download from now on. Copies already printed keep the look they were printed with, and go on working: the pattern beneath the styling is the same.
Every plan

Three steps, about a minute

For the commonest job of all: the link has moved and the posters are already up.

  1. Open the code

    Sign in and open Codes in the sidebar, the screen headed Your QR codes, then pick out the one you are holding. Search by the name you gave it, or by its short link.

  2. Type the new destination

    On Overview, the current destination is shown above the field. Replace it, add a note if somebody else will wonder what changed, and save.

  3. Scan the printed one

    Check the real code on the real poster, not the preview. The change is live from the next scan, and the previous destination is now a row in History.

The screens where it happens

A café’s codes, photographed in the product.

The destination, with what it is now above the field

The address the code opens today sits above the box you are about to type in, so you are never guessing what you are replacing. A note goes in beside it and is kept with the change.

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 · its destination sample data

Every destination it has had, with a way back

Each row is a page the code once opened, the day it changed and the note left at the time. Restore puts one back without retyping an address anybody has to get right.

Destination history for a receipt-footer review code: the Yelp review page it opened before, replaced on a date with the note “Moved reviews to Google”, and a button to restore it.
A receipt code · where it goes, where it went sample data

Different scans, different pages, one printed code

Rules are read in order and the first that matches wins: send iPhones to one store, Germany to a German page, this weekend to the festival menu. The rest fall through to the ordinary destination.

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.
A code’s routing rules sample data

What no service can change

Four things are settled by the print run, and a page that tells you otherwise is selling something.

  • A static code’s content. The link, network or contact details are the pattern. Nothing in an account can reach inside a code that was never routed through one, which is why its screen says it cannot be changed.
  • The address inside the pattern. A dynamic code holds one short link for life. That is what makes it editable, and it is also why moving a code to a different domain changes the printed squares: choose the domain before the print run, not after.
  • The kind of code. A link code stays a link code and a contact card stays a contact card. It can lead anywhere, but it cannot become a different kind of thing.
  • Editing while a plan has lapsed. When a paid plan ends, the codes go on redirecting for 30 days but editing is frozen straight away. Subscribing again unfreezes it.

The rescue for a static code that is already out in the world: if it points at an address on a website you run, you cannot change the code, but you can change what lives at that address. Redirect the old page to the new one and every printed copy follows. If it points at somebody else’s site, a sticker with a new code is the only honest answer — see what makes a code permanent before you print the replacement.

Last reviewed , against the product as it works today.

Editing comes with the code, not as an extra

Changing a destination, its rules and its history costs nothing beyond the plan the code sits on: Free holds 3 editable codes, and paid plans start at $12 a month for more of them, your own domain and a year of history.

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

Unlimited scans on every plan. Cancel online in two clicks. Compare every plan and feature

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

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

Short links, with your own ending

The link on its own, for a bio, an email or an ad.

Paste a link and get a short one you can change, route and count, with no QR code unless you want one. Every dynamic code already has its short link beside it, and a short link gets its QR code in one click - the same link, so clicks and scans count together. On Business you choose how the link ends, like /spring-menu, instead of random letters.

Every plan · custom endings on Business

The URL shortener
A short link’s settings: its short code with a Copy button, marked “Always works”, a custom ending on the roastery’s own domain, and the choice of which domain the link uses.
A short link · a coffee roaster’s bio link 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

Your logo in the middle

Upload any image; we size it so the code still scans.

PNG, JPEG, WebP or GIF, up to 15 MB - we shrink it ourselves, so nobody has to compress a file first. Error correction goes up to make room, and the logo is never allowed to cover more of the pattern than the code can lose.

Every plan, Free included

The design panel of a coffee roaster’s bag code: espresso modules on cream with the roaster’s bean roundel in the middle, the logo field, and error correction locked to Highest because the code has a logo.
A bag code · design with a logo 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, 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.

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

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

Editing a printed code, answered

Can I change a QR code after it is printed?
Only if it is a dynamic code. Those open a short link that we keep, and you can point that link at a new page whenever you like, so the printed code stays as it is. A static code holds the destination in its pattern, and nothing can edit it afterwards.
How do I know which kind I have?
Scan it and read the address the camera shows before tapping. Your own web address means it is static. A short link belonging to whoever made the code means it is dynamic, and it can be edited from that account.
How do I change where my QR code goes?
Open the code in your account, type the new web address on its Overview and save it. The next scan of every copy in circulation opens the new page; nothing has to be reprinted.
Does editing a code change how it looks?
No. Changing the destination, the rules or the name leaves the pattern alone, which is the point of a dynamic code. Only the design panel changes the artwork, and only for files you download afterwards.
Can I put the previous destination back?
Yes. Every destination a code has had is listed on its History tab with the day it changed and any note, and one button puts an earlier one back.
I printed a static code with the wrong link. What now?
If the code points at an address on a site of yours, redirect that address to the right page on your own server and the printed code is rescued. If it points anywhere else, the code has to be replaced, so make the new one dynamic and you will not be here twice.
Can I edit hundreds of codes at once?
Yes. Select them in your list and one action applies to up to 500 of them: pause or resume, tag, file, move to your own domain, add campaign tags, or export them. The API does the same in one request.
Can I change a code somebody else made?
Only in the account that owns it. If the code was made with another service, the change has to happen there; if it was made here by a colleague, invite them to share the workspace, or ask them to move the code into it.
Edit a QR code after printing - QRSalt