Free tool Β· No sign-up
QR code generator
Make a QR code for any URL, as vector SVG for print or PNG if something needs one. Full error correction by default, and it tells you how small you can print this particular code before it stops scanning β which is the thing that goes wrong. Free, no account, and it never leaves your browser.
Encoded exactly as typed. The code points straight at your address β it does not route through us, and it will keep working whatever happens to this page.
Recovers ~30% β the print default. Higher levels survive a scuff, a fold or a bad print run, at the cost of a slightly denser code.
Defaults to where this tool lives, which is how it stays free. Change it to whatever you like, or clear the field to remove it β the code is yours either way.
Your code appears here as you type.
Generated in your browser. Nothing you type here is sent anywhere, stored or logged.
Static or dynamic
Decide this before it goes to press
The code above is static: the URL is part of the pattern. That is what makes it dependable, and it is also what makes it final. The difference matters most in the twenty minutes before artwork is signed off, and not at all afterwards.
Static β what you just made
Dynamic β on a Badger link
- Change the destination after printing
- StaticNever. The address is part of the pattern, so a new destination means new artwork and a new print run.
- DynamicAny time, as often as you like. The printed square never changes; where it sends people does.
- Count the scans
- StaticNothing to count them. The code goes straight to your page, so the only trace is whatever your own analytics infers.
- DynamicEvery scan counted, and reported separately from web clicks β so a poster and a newsletter are never conflated.
- Know which scans were people
- StaticNot applicable β nothing is being counted in the first place.
- DynamicPreview bots, mail scanners and prefetches counted apart from people, with every exclusion named.
- Send iPhones and Android phones to different places
- StaticOne code, one destination, whoever scans it.
- DynamicRules on the link route by device, OS or country β the App Store, Google Play, or your page β from one printed code.
- How small it can be printed
- StaticSet by the length of your URL. A long address with campaign parameters makes a dense code that needs a bigger square.
- DynamicA short link is a fraction of the characters, so the code is sparser and prints smaller β or scans from further away at the same size.
- What it depends on
- StaticNothing but your own page. No account, no service, no subscription β it will decode in fifty years whatever happens to us.
- DynamicThe short link continuing to resolve. Ours keep working whether or not you are still paying: a lapsed subscription stops new links, never redirects.
Your first 10 links are free, with unlimited scans and no card β and the code you downloaded above keeps working either way. How a scan is counted β
QR codes
The questions that come up before a print run
Written out rather than folded into an accordion. If you came here for one of these answers, it should not take a click to find it.
- What is the difference between a static and a dynamic QR code?
- A static code has the destination encoded in the pattern itself β that is what this page makes. It works forever and needs nothing behind it, but the address is fixed the moment it is printed and nothing can count the scans. A dynamic code encodes a short link instead, so the destination can be changed afterwards and each scan can be recorded. The trade is that a dynamic code depends on whoever runs that link continuing to run it.
- Can I change where a QR code points after it is printed?
- Not with a static code β the URL is physically part of the pattern, so changing it means reprinting. Only a dynamic code can be repointed, and only because the pattern encodes a short link whose destination lives in a database. If the artwork is going anywhere expensive, decide this before it goes to press rather than after.
- Do QR codes expire?
- The pattern never does β a static code will decode in fifty years. What expires is whatever it points at. A static code dies when the page it names is moved or retired; a dynamic one dies if the service behind the short link stops. Codes made here are static, so they depend on nothing but your own URL continuing to exist.
- How big does a QR code need to be printed?
- Two separate limits. It has to be big enough that each module holds up in print β around 0.4 mm is a safe floor, which sets a minimum width from the codeβs own density. And it has to be big enough to read at the distance people will stand: roughly one tenth of the scanning distance, so a code read from two metres wants about 20 cm. The generator above works both out for the exact code you are making.
- Why will my QR code not scan?
- Usually one of four things. The quiet zone has been cropped or crowded by artwork, so the scanner cannot find the edge. There is not enough contrast between the code and the background. It has been printed too small for its density. Or it has been inverted β light on dark β which many dedicated scanners still refuse. The generator flags all four as you change them.
- SVG or PNG?
- SVG for anything going to print. It is vector, so it is sharp at any size, and a printer can scale it to whatever the artwork needs without you regenerating it. PNG is a fixed grid of pixels that is correct at exactly one size β fine for a slide or a web page, wrong for a poster. Both are offered above; the SVG is a few hundred bytes.
- Are the scans tracked?
- Not by a static code, and not by this page. The code points straight at your URL, so nothing sits in between to count anything β and nothing you type here is sent anywhere at all. Counting scans requires a dynamic code, which requires an account.
- Is there a limit, or a watermark?
- No limit β it runs in your browser, so there is nothing to meter. The caption under the code is our name, and it is a plain editable field: change it to your own text or clear it entirely, and the code is unaffected either way. It is there because a free tool has to earn its keep somehow, and a visible line of text seemed a fairer way than the alternatives.
Tagging the destination with campaign parameters first? Build the URL in the UTM builder β