Static codes, drawn in your browser
Every code here is static. The data sits inside the pattern itself, so nothing expires, no redirect server stands between your printout and the phone, and no account is needed. The code is drawn in your browser tab. Passwords and contact details never reach a Toolexe server.
What each code type stores, and what the phone does on scan
A QR code holds a plain string. The phone reads the start of the string to decide what to offer. Here is the exact format this generator writes for each tab, using the Load sample values.
| Tab | String inside the code | On scan |
|---|---|---|
| Link | https://toolexe.com/social-media/qr-code-generator?utm_source=flyer... | Shows the host name, opens the browser on tap |
| Text | Batch 2026-11-A. Packed 2 Nov 2026... | Displays the text. Some camera apps offer a web search on it |
| Wi-Fi | WIFI:T:WPA;S:Toolexe-Guest;P:orbit-maple-42\;;; | Offers to join. Stock cameras on iOS 11+ and Android 10+ handle this |
| Contact | BEGIN:VCARD VERSION:3.0 N:Okafor;Daniel;;; ... | Opens a pre-filled new contact screen |
mailto:support@toolexe.com?subject=Broken%20link... | Opens a draft in the default mail app | |
| SMS | SMSTO:+44 7700 900123:RSVP yes for Saturday... | Opens a text draft, never sends on its own |
The Wi-Fi semicolon trap
The sample Wi-Fi password ends in a semicolon on purpose. Look at the encoded string under the preview: the generator writes it as \;. In the Wi-Fi format a bare semicolon closes the password field, so a hand-typed string with P:orbit-maple-42;; gives the phone the key orbit-maple-42 and the join fails with a wrong password error. Commas, colons, double quotes, and backslashes need the same escape. This tab handles all five.
The password sits inside the image in plain text. Anyone who photographs the sign reads the key with any QR app. Print codes for a guest network, never for the network your laptops and printers share.
Error correction: density versus damage tolerance
Every QR code carries Reed-Solomon recovery blocks. A higher level survives more scratches, glare, and folds. The cost is size: the same data needs more modules, so at a fixed print width each square gets smaller and harder for a cheap phone camera to resolve.
Screens, clean indoor prints, and long payloads close to the capacity ceiling.
Sample link: 41 × 41Flyers, menus, business cards. The default on this page.
Sample link: 45 × 45Stickers on outdoor gear, packaging handled every day.
Sample link: 53 × 53Labels that get scuffed or folded, or codes with a logo placed over the center later.
Sample link: 57 × 57The module counts above come from the 109-byte sample link. Drop the three UTM tags and the bare URL is 50 bytes, version 4 at level M, a 33 × 33 grid. Tracking parameters cost real print space, so keep campaign names short.
How big to print
Phone cameras need each module, the smallest black square, to cover enough sensor pixels. The rule print shops use: give each module at least 0.5 mm for a code held in the hand, then scale with distance at about 1 cm of code width for every 10 cm between the code and the phone.
smallest width = (modules + 2 × quiet zone) × 0.5 mm
sample link, level M: (45 + 2 × 4) × 0.5 mm = 26.5 mm
poster read from 2 m: 200 cm ÷ 10 = 20 cmThe Smallest print figure under the preview runs this math on whatever you enter. Two export notes:
- PNG sizes snap to a whole number of pixels per module, so a 1024 px request for the sample link at level M, 53 modules wide with the quiet zone, returns 1007 px with no blurry half-pixels. The button label shows the real size.
- SVG stays sharp at any size and drops straight into Figma, Illustrator, Inkscape, or InDesign. Pick SVG for anything bigger than an A5 sheet.
Where this generator stops
Static codes only. The data is baked into the pattern. If the link changes, you reprint. Dynamic QR services route every scan through their own redirect, which is how they offer editing and scan counts, and also why your printed codes die when the subscription ends. A middle path: encode a short path on your own domain and change where that path redirects.
No scan analytics. Add UTM parameters to the link, as the sample does, and read the visits in your analytics tool.
No logo overlay. Export SVG at level H and place the logo in a design app. Keep the logo under roughly a fifth of the code width, leave the three corner squares untouched, and test-scan before printing.
Capacity ceiling. Version 40 at level L holds 2,953 bytes. Past that the page reports the overflow instead of drawing a broken code. Long vCards with street addresses and notes hit dense versions fast.
One code at a time. A print run of 500 unique ticket codes needs a script, not a web form. The open-source qrcode-generator library this page uses works in Node too.
Five checks before the print run
- Scan the preview from the screen with two phones, one iPhone and one Android.
- Drop the saved PNG into the QR Code Reader and compare the decoded string with what you typed.
- Print one proof at final size and scan from the real distance, under the real lighting.
- Keep the quiet zone clear. Borders, crop marks, and busy backgrounds inside those 4 modules confuse decoders.
- Put a short label beside the code: Menu, Join Wi-Fi, Save contact. People scan more when they know where the code goes.