design tool
QR code generator
Pick what the code should do and the form changes to suit it. The code redraws on every keystroke, the exact string it encodes is printed underneath, and a line beside it tells you the smallest width that will still scan from the distance you have in mind.
Runs on your device. Nothing is uploaded.
Loading the tool…
How to use it
- 1
Pick what the code should do
One list covers links, plain text, WiFi, contact cards, email, SMS, phone calls, calendar events, locations and a batch list. The form changes shape to match.
- 2
Fill in the fields
The code redraws on every keystroke, so there is no generate button. The exact string it encodes is printed underneath it, which is where format faults show up.
- 3
Read the print size
Below the code is the smallest width that still scans from the distance you choose in Advanced options, quiet zone included.
- 4
Download it
PNG suits screens and flyers. SVG, under Advanced options, is drawn from paths and stays crisp from a business card to a banner.
The payload is shown because the formats are fussy
A WiFi code is not a link. It is a string shaped like WIFI:T:WPA;S:name;P:pass;; where a semicolon or a colon inside the password has to be escaped with a backslash or the whole thing breaks. A contact card is a vCard record with its own escaping rules, and a location is a geo URI in decimal degrees. Printing the exact encoded string under the code lets you check it before you commit a thousand copies to paper.
Size is a scanning question, not a design one
Two things set the minimum. A camera needs roughly ten times the code width in distance, so a code read from a metre away wants about ten centimetres across. Below that, the printer sets a floor: modules smaller than about four tenths of a millimetre stop reproducing reliably on an office printer, and a code with more data has more modules to fit. The larger of those two numbers is the one shown, and the quiet zone counts towards it.
Error correction is a trade
The four levels restore roughly 7, 15, 25 and 30 percent of a damaged symbol. M is the default because it survives ordinary handling without inflating the code. Q and H are for surfaces that get scuffed, wet or partly covered, and H is what makes a logo in the middle survivable, since the logo is damage as far as the scanner is concerned. Every step up adds modules for the same content, which means a bigger print.
Limits
- A QR code holds about 2,950 bytes at the very most, and far less at high error correction. Long text is refused.
- A logo covers modules the scanner needs. Raise error correction to H and test with a real phone before printing.
- A batch list makes at most sixty codes in one run.
- iOS asks before joining a WiFi network from a code. Android can join straight away.
What it does not do
- It does not make a dynamic code. The content is baked into the pattern and cannot be edited later.
- It does not count scans, because there is no server in the middle to count them.
- It does not read or decode an existing code.
Questions people ask
Does the code expire, or get tracked?
No. Your content is encoded directly into the pattern, so there is no short link and no redirect service in the middle. Nothing can expire, start counting scans, or vanish when somebody stops paying a subscription. The trade is that the content cannot be changed once the code is printed.
How big should I print it?
The line under the code answers that for the distance you pick in Advanced options. The usual guide is ten to one, so a code read from a metre away wants to be about ten centimetres across. The quiet zone, the empty margin four modules wide, counts as part of that width.
Which error correction level should I use?
M is the default and is right for most printing, restoring about fifteen percent of a damaged code. Use Q or H where the code will be scuffed, wet or partly covered, and H if you put a logo in the middle. Every step up adds modules, so the code has to be printed larger.
Will a WiFi code work on an iPhone?
Yes, with one extra tap. The camera app recognises the network and offers to join it, rather than joining silently the way Android can. The code carries the password as readable text, which is what any device needs in order to connect, so treat a printed one as carefully as the password itself.
Why is the encoded string shown under the code?
Because these formats are fussy and a fault in one is invisible until somebody scans it. A stray semicolon in a WiFi password, a missing country code on a phone number, or a link without https in front of it all look fine in the form. Seeing the exact text lets you catch it before printing.
Can I make a lot of codes at once?
Yes. Choose the batch list content type and paste one link or line of text per line, up to sixty. Add a caption after a comma and it is printed under that code. Download then saves the whole set as one sheet, laid out with captions so you can print it and cut it up.
PNG or SVG?
PNG for screens, slides and anything dropped into a layout at a known size. SVG for print, because it is drawn from paths rather than pixels and stays crisp at any size, from a business card to a banner. SVG sits under Advanced options, next to the colour and shape settings.
Put this code on a finished flyer
Take what you made here into flyers.
Create a flyer with OneCraftRelated tools
- Favicon generatorDrop one image and see your favicon in a browser tab, a bookmarks bar, a Google result and a phone home screen, then download the ICO, PNGs and manifest.
- Flyer size resizerDrop a flyer and see it refitted onto all ten builder canvases at once, each drawn at its true shape, with the ones that will print soft flagged in words.
- SVG to PNGRasterise an SVG at any size in your browser. It reads the declared width, height and viewBox, and warns about the fonts and links that will not survive.
- Image resizerResize a batch of images to an exact width, height or percentage. Fit, fill or stretch, with a stepped downscale that keeps detail. Nothing is uploaded.
Built with qrcode (MIT).
Sources
Written and checked by the OneCraft team. Last checked .