QR code generator
The address is stored inside the pattern, so the code does not expire and nobody can switch it off. Tag the link if you want to know which flyer worked, and print it at the width the tool works out.
Type it the way you would say it. https:// is added for you, and anything already on the end — a ?ref= or a #section — is kept.
The code is built by this page, on your own device. The address never leaves your browser, nothing is stored, and there is no redirect of ours in the middle of it. Privacy policy
Your code will show up here
Type the web address the code should open.
Try one of the examples
How to use it
Say what the code should do
Open a web page, show a few words, start a call or start an email. Type the address the way you would say it. The https:// is added for you, and a ?ref= or a #section already on the end is kept where it belongs.
Tag the link, if you want to know it worked
Say where the code is going — van-door, table-tent, front-window — and your website analytics will show those visits apart from everything else. It is optional. The code works the same either way.
Pick where it will be scanned from, then download
The tool works out how wide to print it, pale border included. Take the SVG to a printer or a sign shop: it has no size of its own and stays sharp however big they set it. The PNG is for anywhere that will not take one.
What a code can hold
Four kinds of thing, and the tool has a box for each. A code does not hold “a phone number”; it holds the exact text below, and a phone knows what to do with it because of the few characters in front.
A link
You type
oakandember.com/menuThe code holds
https://oakandember.com/menuOpens the page in whatever browser the phone uses. The https:// is added for you.
Text
You type
Wi-Fi password: sourdough2019The code holds
Wi-Fi password: sourdough2019Shows the words on the screen. Nothing opens, and nothing is looked up.
Phone
You type
+1 (415) 555-0142The code holds
tel:+14155550142Offers to call the number. The brackets and dashes come off; the + and the digits stay.
Email
You type
hello@oakandember.comThe code holds
mailto:hello@oakandember.comStarts a new message to that address, with nothing written in it.
Nothing here opens the address to check that it works. What you get is a correctly built code, not a tested one. Scan it with your own phone before it goes to a printer.
Inside a code, and how big to print it
- 1The pale borderPart of the code, not a margin around it. A scanner needs clear space to see where the pattern ends, so a code butted against a dark panel or the edge of a sticker fails at any size.
- 2The three big squaresHow a camera finds the code in a photograph and works out which way up it is. Three corners, never four — the missing one is what tells it the rotation.
- 3The dotted linesOne dark, one light, all the way between two big squares. This is the ruler: it tells a scanner how wide one square is on the picture in front of it.
- 4The small squarePuts the grid back straight when the code is photographed at an angle, or is stuck on something curved like a van door.
A real code, holding https://getsoyla.com. It is 25 squares across at version 2, each big square is 7 squares wide, and the pale border is 4 squares on every side. Everything not numbered is the address itself and the spare copy of it that error correction adds.
One square is the measurement that matters when you print it. The bigger a square is on paper, the further away a phone can read the code — which is why the tool gives you the square size beside the width.
What protection costs in size
| Protection | Survives about | Squares across | One square at 100 mm wide |
|---|---|---|---|
| Low (L) | about 7% | 33 | 3 mm |
| Standard (M) | about 15% | 37 | 2.7 mm |
| High (Q) | about 25% | 41 | 2.4 mm |
| Highest (H) | about 30% | 49 | 2 mm |
That is one ordinary tagged link at all four levels. The same address goes from 33 squares across to 49, so at the same printed width every square in the protected one is smaller and it reads from less far away. More protection means printing the code bigger. Standard is right for nearly everything; go higher for a code that will be handled, rained on, scrubbed or stuck to something that flexes.
For size the tool works from where you say the code is going. A code reads from about 10 times its own width, so one on a van door read from about 3 metres (10 feet) wants to be around 300 mm across. That is far bigger than most people expect, and it is why a lot of van codes never scan.
The ten-to-one figure is common practice, not a specification. Denso Wave, who invented the QR code, publish no ratio of size to reading distance; their guidance on module size is to print as large as the space allows, and ISO/IEC 18004 says module dimensions are user-specific by design. So every figure here says “about”. The one with a published source behind it is the floor: the tool will not suggest squares smaller than 0.4 mm (0.02 in), the minimum the GS1 General Specifications (Release 26.0, section 5.12.3.1) give for a QR code read at a checkout. GS1 say in writing that there is no equivalent figure for a phone reading a sticker on a wall, so treat it as a floor worth warning at rather than a cliff — and print one and try it with the oldest phone in the building.
Tagging a link
A printed code cannot report back. What you can do is add a few words to the end of the address, so that when somebody scans the code and lands on your website, your analytics can tell that visit apart from the ones Instagram sent. Those words are UTM parameters, and three of them matter.
northbeamplumbing.com/book becomes https://northbeamplumbing.com/book?utm_source=van-door&utm_medium=qr&utm_campaign=vans
Three things the tool does that are easy to get wrong by hand. It keeps whatever the address already carried and leaves a #section at the end, rather than burying the tags behind it. It refuses to add a tag the link already has, because two values under one name is a coin toss over which gets counted. And it encodes what you type, so a campaign called “spring sale” arrives intact instead of breaking the link at the space.
It also warns you about capitals, which is the one that quietly halves people’s numbers. Google’s own documentation is plain about it: “Parameter values are case sensitive, e.g. utm_source=google is different from utm_source=Google.” A van tagged Facebook and a flyer tagged facebook are two sources, each showing part of the real figure. The tool says so and leaves what you typed alone; making them lower case is a button you press.
That sentence is from Google Analytics Help, URL builders: Collect campaign data with custom URLs, read on September 5, 2026. Google states the case sensitivity and names utm_source, utm_medium and utm_campaign as the ones to always use together; keeping everything in lower case is our advice, not a rule Google publishes. One limit worth knowing: analytics counts visits, not scans, so somebody who scans your code and loses signal before the page loads never appears in it. Printing your Google review link instead? The Google review link and QR code builds that one address for you. To share a name, phone number and email as a saved contact, use the contact QR / vCard maker.
Common questions
Does the code expire, and can I change where it points later?
It does not expire, and it cannot be changed. Both halves come from the same fact: the address is stored inside the pattern itself. Nothing of ours sits in the middle, so there is no account to lapse, nothing to switch off, and the code keeps working for as long as the address does — but the pattern is the address, so a printed code points where it pointed on the day you printed it. If the destination might move, point the code at a page on your own website and change what that page does. The page is the part you can edit, and editing it costs nothing.
How big do I need to print it?
Pick where it is going and the tool works it out. The rough guide behind it is that a code reads from about 10 times its own width, so a code scanned from about 3 metres (10 feet) wants to be around 300 mm (11.8 in) across, which is far bigger than most people expect. That is a rule of thumb rather than a standard — the company that invented the QR code publishes no such ratio — so print a test at that size and try it with the oldest phone in the building.
Why will my code not scan?
Four things cause nearly all of it. It is too small for the distance people stand at. The pale border has been cropped off or something has been laid over it, which stops a scanner recognising the pattern at all. It is printed too pale, or reversed to light-on-dark, which some scanners will not read. Or a logo has been dropped in the middle and has covered squares the scanner needed. Print it dark on a plain light ground, leave the border clear, and test the real printed thing rather than the file.
What does error correction do?
Every QR code carries a spare copy of its own contents spread through the pattern, so a scanner can rebuild the part it cannot see — a scuff, a fingerprint, a torn corner. Higher protection means more of that spare copy, and those extra squares have to go somewhere, so the grid gets denser. Print two codes the same width and the protected one has smaller squares, which is what decides how far away a phone can read it. So more protection means printing the code bigger, not smaller. Standard is the right answer for nearly everything.
Should I give a printer the SVG or the PNG?
The SVG, whenever they will take one. It has no size of its own, so it stays sharp at any width they set it to, and a sign shop can drop it straight into artwork. The PNG is a picture at a fixed number of pixels and is for anywhere that will not accept a vector — a document, a slide, a website. Give whoever prints it the border figure rather than the code figure: the pale border is part of the code and has to stay clear.
Can I put my logo in the middle?
No, and this tool does not offer it. A logo sits on top of squares the scanner needs, and the usual fix is to raise the error correction, which adds squares and makes the code denser — so it then has to be printed larger to read from the same distance, not smaller. A logo beside the code, or under it, costs nothing and breaks nothing.
Can I see how many people scanned it?
Not the code itself. A printed code is ink and nothing reports back from it. What you can do is tag the link, which is what the second half of this tool is for: add utm_source=van-door and your website analytics will show the visits that arrived from the van separately from everything else. It counts visits rather than scans, so somebody who scans the code and loses signal before the page loads never appears in it.
Is it free, and does the address I type get uploaded?
Free, with no account, no limit on how many you make and no watermark — and nothing you type leaves your browser. The code is built on your own device, so there is no server of ours to store the address and no redirect of ours in the middle of it. The other side of that: nothing here opens your address to check that it works, so what you get is a correctly built code rather than a tested one. Scan it with your own phone before it goes to a printer.
Read more in our privacy policy and terms of use.