QR code generator
A code that works for as long as the poster hangs.
Make a code for a link, Wi-Fi, a contact card or a payment, in your colours, and check that it scans before you print.
Content
The full address, starting with https://.
More options
When scannedOpens a web page.
A web address that opens in the browser.
Space usedNo code yet
Style
A new combination that still scans. Undo goes back.
Modules
Corner squares
Colour
Logo
Frame
Printed size
Scan check
Save
Library
Proof
SampleWidth 25 mm
This is a sample. Your code appears here as you type.
Simulated captures
- SharpNot checked
- FarNot checked
- Soft focusNot checked
- AngleNot checked
- DimNot checked
- GlareNot checked
- Ink spreadNot checked
Each picture stands for a condition. The word under it is the check's result.
Drop a picture of a code here, paste one, or choose one
A screenshot pasted while Scan is open is read too.
What it says
Nothing read yet. What a code holds appears here, exactly as it is written.
The spreadsheet
Drop a CSV file here, or choose one
A file saved as UTF-8 is always read as UTF-8. If letters from a file look wrong, choose the encoding your spreadsheet saved it in.
Where each field comes from
A template mixes text and columns: write a column name in curly brackets to put its value in.
A template, as above. Characters a file name cannot hold are replaced, and repeats are numbered.
Preview
Add a spreadsheet to see its rows here.
Output
Every code uses the design from Create.
The studio needs JavaScript, because everything it does happens in this page. The offline file further down is the same studio in a single document you can keep.
Static codes
Nothing sits between the code and where it goes.
Many QR code sites sell what they call dynamic codes. The code you print points at their server, the server forwards each scan to your link, and the forwarding stops when the trial or the subscription does. The trial is often seven to fourteen days, and by the time it ends the code is usually on a menu, a box or a shop window.
A code made here holds your link, your network or your contact details itself. A phone reads them straight out of the pattern, so there is no server in the way and nothing anyone can switch off. It keeps working for as long as the page it points at does.
Changing the destination later
The usual reason to buy a dynamic code is to change where it goes after printing. You can do that on your own terms: point the code at an address on a site you control, such as example.com/menu, and redirect that address wherever you like. The studio writes the redirect for Cloudflare, Netlify, Vercel, Apache and nginx, or a small HTML page for a host with no redirect settings, and says which status to use for a destination you may change.
Counting scans
To know how many people scanned a code, add campaign tags to its link and your own analytics counts the visits. The studio fills in the source, medium and campaign for you. The count sits in your analytics, beside everything else you measure, and nobody else sees it.
Scan check
Checked before it is printed, not after.
A code can follow the standard perfectly and still fail on the wall: too small for the distance, too little contrast, a logo over modules the reader needed. The studio reads every design back before you save it, the way a phone would.
Simulated captures
The check prints the code into simulated photographs, taken from far away, out of focus, at an angle and in poor light, and reads each one the way a strict phone reader would. A code that only scans in perfect conditions does not pass.
Your size and your distance
Tell it how far away people will stand and how wide the code will be printed, and it holds the design to both. The answer comes back in plain terms: the distance in centimetres it still reads from, at the width in millimetres you chose.
Contrast you can measure
Every colour pair has its contrast ratio beside it, and the studio says when the modules are lighter than the background, which many phones cannot read. A transparent background is measured against white, with a reminder to check it against whatever it is printed on.
Room for a logo
A logo covers part of the code, and error correction is what lets a phone read around it. The studio suggests level H, which leaves the most room, keeps clear space around the logo, and runs the check with the logo in place.
Three answers
Scans well, scans with cautions, or will not scan reliably, each with the reason and a fix where there is one. Change the design afterwards and the result is marked as out of date until the check runs again.
What a code can hold
Twenty-two kinds of content, each written the way phones expect it.
A Wi-Fi code, a contact card and a bank transfer are each a small format of their own, and a phone that meets one written slightly wrong just shows the text. Every field is checked as you type: an IBAN against its check digits, a GTIN against its check digit, a phone number for its country code. The kinds with a page of their own are linked.
Everyday
Web link
A web address that opens in the browser.
Text
Any text, shown as it is.
An email with the address, subject and message filled in.
Phone call
A phone number to call.
The name and password of a Wi-Fi network, so a phone can join without typing them.
A contact with name, numbers, email and address, saved to the address book in one step.
Contact card (compact)
A shorter contact card that makes a smaller code, with fewer details than a full one.
An event with its time and place, added to the calendar in one step.
A point on the map, opened in the map app.
Messages and calls
A text message with the number and message filled in.
A WhatsApp chat with a number, with a message typed in if you like.
Telegram chat
A Telegram chat with a username or a phone number.
Signal chat
A Signal chat with a phone number.
FaceTime call
A FaceTime call to a phone number or an email address.
Payments
A euro bank transfer with the account, amount and reference filled in, for banking apps in Europe.
Swiss QR-bill
The payment part of a Swiss QR-bill, in francs or euros.
A Pix payment to a Pix key, for banking apps in Brazil.
A UPI payment to a payment address, for payment apps in India.
Bitcoin payment
A request to pay a Bitcoin address, with the amount filled in if you like.
Lightning invoice
A Lightning invoice from a wallet, as a code that can be scanned to pay it.
Products and invoices
A product code that tills read as the barcode and phones open as a web page.
Saudi e-invoice
The code on a Saudi tax invoice. It can be read here but not made.
Design
Your colours and your logo, within what a camera can read.
Start from one of forty-six presets, each drawn with your own content rather than a sample, or set every part yourself. Shuffle picks a new combination that still scans, and Undo goes back.
Modules and corners
Fourteen module shapes, from squares and dots to bars, hexagons and stars, and corner squares built from nine outer rings and eight centres, each offered only where phones still find it among the modules you chose, so the three corners can match a brand or stand apart from it.
Colour and gradients
Solid colour, linear and radial gradients or a pattern, spread across the whole code or within each module, with their own colours for the corner squares and the background, which can be transparent.
Logos and icons
Add your own logo as a PNG, JPEG or WebP, or one of sixteen built-in icons for links, Wi-Fi, menus, music and the rest. Choose how much clear space it gets, whether the modules under it are cleared, and whether it sits on a plate.
Frames and captions
Eleven frames, from a banner and a speech bubble to a ticket, a hang tag and a stamp, each with a caption such as “Scan me” to tell people what the code is for.
A proof at true size
The code is shown as a printer's proof. Hold a bank card against the screen to calibrate it once, and the proof is drawn at the width it will print, so you can judge the size before paper is involved.
Brand kits and saved designs
Keep your colours, your logo and your favourite designs in a library: a file you save and open, or a library in this browser, which stays off until you turn it on and is deleted when you turn it off. A design holds the look of a code and never what it says, so a library file is safe to send to a colleague.
Scanning and safety
See where a code goes before you go there.
Point a camera at a code, open a picture of one or paste a screenshot. The studio shows exactly what the code holds and what a phone would do with it, before anything is opened, and says plainly when something about it deserves a second look.
Exactly what it says
The content is shown as it is written in the code, with the kind of content it is and what a phone would do with it: open a page, join a network, save a contact or start a payment.
Look-alike addresses
It flags an address written in letters from another alphabet that look like ordinary ones, an address that mixes alphabets, a numeric address in place of a name, and a link written to look like a different site.
Redirect services
It names the link shorteners and QR redirect services a link goes through, because whoever runs one decides where the scan ends up and can change it at any time.
Payments and messages
It says when a code starts a payment, prepares a message, joins a network with no password or dials a service code with * or #, which can change phone settings such as call forwarding.
Tracking and insecure links
It counts the tracking parameters a link carries, warns when a link does not use a secure connection, and points out a link so long that the part you can see may not be the part that matters.
Read on your machine
The camera frame or the picture is read in this page and sent nowhere, so checking a code tells nobody what it says.
Replacing a code that goes through someone else's server
If a code you have already printed goes through a redirect service, scan it here, open the address it leads to, and make a new static code for that final address. The new code no longer depends on the service. Any code you scan can also be remade in Create as it is, with the same content and your own design.
Bulk and print
A thousand codes from one spreadsheet.
Each row of a CSV file becomes a code in the design you made in Create. The file is read in this page, up to ten thousand rows at a time, and nothing in it goes anywhere.
Columns into content
Write the content as a template that mixes text with column names in curly brackets, so a column of product numbers becomes one web address per row. File names follow a template too, with characters a file name cannot hold replaced and repeats numbered.
Exports in other encodings
A file in UTF-8, as Google Sheets and Numbers save it, is read as it is, and so is Excel's UTF-16 Unicode Text. Any other file is read in the encoding Excel on Windows saves CSV in for the page's language: Shift_JIS on the Japanese page, GBK on the Chinese page, Windows-1256 on the Arabic page and Windows-1252 on the rest. The studio says when it has done this. If letters still come out wrong, choose the file's encoding from the list, which also offers Big5, Korean and Cyrillic.
A ZIP with a manifest
Download every code as its own file, in the format you choose, in one ZIP with a manifest listing what became of each row. A row that could not be made is named there rather than quietly missing.
Label sheets
Or lay the batch out as a PDF of label sheets in common A4 and US Letter layouts, from small address labels to business cards and round stickers, ready for a desktop printer.
For a print shop
PDF and EPS can be written in CMYK, and a PDF can carry bleed and crop marks. SVG keeps every module a sharp shape at any size, for signage or anything that will be scaled.
Printed at its real size
A single code can go straight to your printer at the width it was checked for, and a PNG records its print resolution, so a layout program places it at that size too.
Privacy
What you put in a code stays with you.
A QR code is often a container for things people would rather not publish: a Wi-Fi password, a mobile number, a home address on a contact card, an IBAN. Making the code, drawing it, checking it and reading one back all happen in this tab.
Nothing is sent
What you type, the logo you add, the spreadsheet you open and the picture you scan are all handled on your machine. There is no account and no copy on a server, because no step of making a code needs one.
Content is never kept
The studio never stores what a code says. Designs and brand kits are kept only when you ask: in a library file you save, or in a library in this browser that stays off until you turn it on and is deleted when you turn it off. Either one holds the look of a code and none of its content.
No analytics on these pages
The studio's pages load no analytics script, and their content security policy allows connections to this site alone. Your browser's developer tools show both.
Source you can read
Everything that makes, checks and reads the codes is published under the MIT licence, on GitHub and as an npm package, and it has no runtime dependencies, so there is nothing underneath it you cannot read.
Offline
The whole studio in one file you keep.
Each release includes the studio as a single HTML file. Open it from your own disk and turn the network off: every part of it keeps working, because none of it needed the network in the first place.
The file
The single file build
Create, Scan, Bulk and the library in one document, with its script and stylesheet inside it. It keeps no cookies and nothing in browser storage, and its first lines carry a content security policy that refuses every connection.
- Licence
- MIT
Checking the download
Every release carries a SHA256SUMS file beside the HTML file, and a build provenance attestation that GitHub signs against the workflow run and the commit that produced it.
The build is deterministic, so the file can also be rebuilt from source and compared byte for byte. The repository's RELEASING.md has the commands.
macOS and Linux, with SHA256SUMS in the same folder
shasum -a 256 -c SHA256SUMS
Windows, then compare the result with SHA256SUMS
certutil -hashfile qr-code-studio.html SHA256
The attestation, with GitHub's command-line tool
gh attestation verify qr-code-studio.html --repo hexpro-dev/qr-code-studio
Trying it yourself
Open the file, turn off Wi-Fi, and make, check, save and scan a code. The project's own tests do the same in Chromium, Firefox and WebKit, and fail if a single request leaves the page or anything is left behind.
Detail
The specifics.
The figures hold for this page and for the offline file, which are built from the same source, except where a row says otherwise.
- Runs in
- Any modern browser, on a phone or a computer
- Content
- Twenty-two kinds, from web links, text, Wi-Fi and contact cards to SEPA, Pix and UPI payments and GS1 Digital Link
- Symbols
- QR Code Model 2, versions 1 to 40, plus Micro QR and rectangular Micro QR for very small print
- Error correction
- L, M, Q and H, about 7, 15, 25 and 30 per cent
- Saves as
- SVG, PNG, PDF, EPS, JPEG and WebP, or straight to the printer at its real size
- Print colour
- sRGB, or CMYK in PDF and EPS; PDF with bleed and crop marks
- Bulk
- Up to ten thousand CSV rows a batch, as a ZIP of files or a PDF of label sheets
- Reads from
- A camera, a picture or a pasted screenshot
- Scan check
- Simulated captures at your printed size and distance: far away, out of focus, at an angle and in poor light
- Expiry
- None. Codes are static and hold their content themselves
- Network
- Nothing you enter is sent. No analytics, and connections to this site only
- Storage
- What a code says is never stored. Designs go into a file you keep, or into a library in this browser that you turn on
- Offline
- A single HTML file that keeps nothing in the browser, released with a SHA-256 checksum and a build provenance attestation
- Dependencies
- None at runtime
- Licence
- MIT
QR Code is a registered trademark of DENSO WAVE INCORPORATED.
Questions worth asking.
- Is it really free?
- Yes. There is no account, no plan and no trial, and no limit on how many codes you make or how often they are scanned. A code made here is yours to print and use, in commercial work or anywhere else, with no watermark and no credit asked for.
- Will my QR code stop working?
- Not because of anything here. The code holds its content directly, so it works for as long as that content does: a web link works while the page is up, and a Wi-Fi code works until the password changes. Nothing on our side is involved once the code is made.
- Why don't you offer dynamic codes or scan analytics?
- Both need a server in the path of every scan. That server is what lets a site count scans and change destinations, and it is also what lets a code stop working when the plan stops being paid for, or when the company behind it closes. We would rather a printed code never depend on us. The two things people want from dynamic codes are still possible: point the code at an address on your own site and redirect it, and add campaign tags so your own analytics counts the visits.
- Can I change where a code goes after it is printed?
- Only if the code points at something you control. Use an address on your own domain, such as example.com/menu, and change the redirect behind it whenever you need to; the studio writes that redirect for the common hosts. Use a temporary status, 302 or 307, for a destination you may change, because browsers remember a permanent one.
- How do I count how many people scanned it?
- Add campaign tags (source, medium and campaign) to the link, and the visits show up in whatever analytics your site already uses. The studio adds the tags for you, and the figures stay yours.
- Will adding a logo stop it scanning?
- Not if there is room for it. Error correction lets a phone read a code with part of it covered, and level H leaves the most room, about 30 per cent of the code. The scan check reads the code with the logo in place, so you find out before printing rather than after.
- Which colours scan reliably?
- Dark modules on a light background, with strong contrast between them. Many phones cannot read a code whose modules are lighter than its background, and a pale colour on white often fails in poor light. The studio shows the contrast ratio for every pair you choose and says when it is too low.
- How big should I print it?
- That depends on how far away people will be. Enter the furthest scanning distance and the printed width, and the scan check says whether the code holds up. A short link makes a simpler code, which reads from further away at the same size.
- Does the scan check guarantee every phone will read it?
- No check can. It reads the code through simulated captures that are harder than most real ones, which catches the common failures. Before a large print run, scan a test print with the phones your audience is likely to use.
- Is a Wi-Fi password safe in a QR code?
- The password is written into the code as text, so anyone who scans it can read it, and a clear photo of the code is as good as the password. Every Wi-Fi code works this way. Put it where you would be content to write the password on the wall, and change the password if the code ends up somewhere it should not be.
- How can I tell whether a code is safe to open?
- Scan it here first. The studio shows the full address or content and what a phone would do with it, with warnings for look-alike addresses, redirect services, payments and links that run a script, all before anything is opened.
- How many codes can I make at once?
- Up to ten thousand rows of a CSV file in one batch, as a ZIP of files with a manifest or as a PDF of label sheets. A longer list can be split into several files and made one batch at a time.
- Can I send the codes to a print shop?
- Yes. Save as PDF or EPS in CMYK, with bleed and crop marks on a PDF if the shop asks for them, or as SVG, which stays sharp at any size.
- Is anything I type uploaded?
- No. The code is made, drawn and checked in your browser, and a picture you scan is read there too. The network panel in your browser's developer tools shows nothing carrying it away, and the offline file does the same job with the network switched off.
- Does it work without an internet connection?
- The offline file does. Download it from the release listing, open it from your own disk, and every part of it works with the network off.
- What are Micro QR and rectangular Micro QR?
- Smaller symbols for printing that has no room for a QR code, such as a component label or the edge of a small package. Most phone cameras cannot read either, so the studio says so whenever you choose one. Use them only where the reader is a scanner you know supports them.
- Which file format should I choose?
- SVG for anything that will be scaled or edited, such as signage or a website. PDF or EPS for a print shop. PNG for documents, slides and email, at the width you need. JPEG and WebP when a system will take nothing else.
More pages
The same studio, opened for one job.
Each of these is this studio, already set up for what its name says, behind a page written about that one job. Nothing sits behind them that is not on this page.