QR code generator
A link, Wi-Fi, contact card, email, phone, SMS, place or event → a QR code that updates as you type. Colours, rounded modules, eye styles, a logo and a caption; contrast, quiet-zone and print-size checks; SVG, PNG and a ZIP batch of codes.
Free, no sign-up
The code is built in your browser: nothing you type is sent to a server (a request can carry a short summary — no password, contacts or text). The design and content are kept only in this browser, and the Wi-Fi password only if you turn that on yourself.
What the camera will read
https://interlab.app
How the generator works
Content
Pick a type and fill in the fields: the string for the camera follows the format Android and iPhone understand, with special characters escaped. Field errors show immediately; the code updates without a button.
Encoding
The qrcode library (ISO/IEC 18004) splits the string into segments (digits, letters, UTF-8 bytes) and picks the smallest version and the mask. You can pin the version and mask by hand.
Design
Our own renderer draws the code from the module matrix: squares, rounded modules or dots, separate eye frame and centre styles, a quiet zone, a centred logo with a margin and a caption.
Check and export
A structural readability check and the print size for a scanning distance; SVG, PNG with the DPI stored, an image on the clipboard and a ZIP batch of codes.
Link
- String format
- URL (http/https), UTM tags as query parameters
Text
- String format
- UTF-8 text as is
Wi-Fi
- String format
- WIFI:T:WPA;S:…;P:…;H:true;; (ZXing format)
Contact
- String format
- vCard 3.0 (RFC 2426) or MeCard
- String format
- mailto: with subject and body (RFC 6068)
Phone
- String format
- tel: (RFC 3966)
SMS
- String format
- SMSTO:number:text (ZXing format)
Location
- String format
- geo:lat,lon (RFC 5870)
Event
- String format
- iCalendar VEVENT (RFC 5545)
Payment string
- String format
- A payment system or wallet string as is, format not validated
Standards and capacity
The QR code is ISO/IEC 18004. The higher the error correction level, the more of the code can be covered or damaged, but the denser the symbol for the same data. The tables are generated from the same constants as the generator.
L
- Recovers
- 7 %
- Logo budget
- no logo
- Bytes in version 5 / 10 / 25
- 106 / 271 / 1273
M
- Recovers
- 15 %
- Logo budget
- no logo
- Bytes in version 5 / 10 / 25
- 84 / 213 / 997
Q
- Recovers
- 25 %
- Logo budget
- no logo
- Bytes in version 5 / 10 / 25
- 60 / 151 / 715
H
- Recovers
- 30 %
- Logo budget
- 15 %
- Bytes in version 5 / 10 / 25
- 44 / 119 / 535
1
- Modules
- 21×21
- Bytes at M
- 14
- Bytes at H
- 7
2
- Modules
- 25×25
- Bytes at M
- 26
- Bytes at H
- 14
4
- Modules
- 33×33
- Bytes at M
- 62
- Bytes at H
- 34
7
- Modules
- 45×45
- Bytes at M
- 122
- Bytes at H
- 64
10
- Modules
- 57×57
- Bytes at M
- 213
- Bytes at H
- 119
15
- Modules
- 77×77
- Bytes at M
- 412
- Bytes at H
- 220
25
- Modules
- 117×117
- Bytes at M
- 997
- Bytes at H
- 535
40
- Modules
- 177×177
- Bytes at M
- 2331
- Bytes at H
- 1273
- Wi-Fi — the WIFI:T:…;S:…;P:…;H:…;; string (ZXing format, understood by Android and iPhone cameras); the characters \ ; , : " are escaped with a backslash. T:SAE (WPA3 only) is read by Android 10 and newer.
- Contact — vCard 3.0 (RFC 2426) with long lines folded at 75 bytes, or MeCard (shorter, a smaller code).
- Email — mailto (RFC 6068), phone — tel (RFC 3966), SMS — SMSTO, place — geo (RFC 5870), event — iCalendar VEVENT (RFC 5545).
- Colour contrast uses the WCAG 2.x formula: from 4.5:1 the code reads reliably.
Readability check
The generator does not decode its own image — it checks what actually makes codes fail in practice:
Module/background contrast
- Target
- 4.5:1 or more (3:1 is borderline)
- Why
- the camera must tell dark from light in poor light
Inversion
- Target
- dark modules on a light background
- Why
- some scanners cannot read light modules on dark
Quiet zone
- Target
- at least 4 modules
- Why
- an ISO/IEC 18004 requirement: without it the code is not found next to text
Logo
- Target
- at most 15% of the area, level H
- Why
- half the correction margin stays for dirt, glare and print; the size is reduced automatically
Density
- Target
- version up to 15 is comfortable
- Why
- a dense code needs a larger print
PNG pixels
- Target
- 4 px per module or more
- Why
- otherwise module edges blur when scaled
Print size
- Target
- distance / 10, module at least 0.4 mm
- Why
- the rule assumes a code of up to 25 modules; denser codes scale up proportionally
Browser support
- The code, SVG and PNG work in any modern browser on a phone or a computer.
- Copying the image to the clipboard works in recent Chrome, Edge, Safari and Firefox (ClipboardItem); if a browser cannot, the generator says so and offers the PNG download.
- The ZIP batch is built in the browser in small steps so the page never freezes; you can stop it.
Limitations
- The readability check is structural, not recognition: it catches typical mistakes but does not replace a test scan.
- A printed code cannot be “edited”: change the page the address leads to, not the code.
- A payment string is stored as is: the generator does not validate a specific bank's or wallet's format.
- Text is limited to 2900 bytes: more does not fit one QR code at a sensible density. A batch is up to 500 codes at a time.
- The SVG caption uses the system Arial/Helvetica font: an editor without these fonts substitutes a similar one.
Privacy
- The code is built in your browser: the content, the logo and the Wi-Fi password are not sent to a server and never appear in the page address.
- The design and content are stored in this browser's localStorage; “Clear all” deletes them. The Wi-Fi password is stored only when “Remember the password in this browser” is on — it is off by default.
- The logo is scaled down to 256 px and re-encoded as PNG: the source file's metadata is not kept.
- Analytics receives only the fact of an export, its format and the content type — not the data.
- The result reaches us only if you send a request yourself and keep the “Attach the result” box ticked — the form shows exactly what will be sent. Files and images are never sent with a request.
- The request summary holds the content type, version and correction level, readability checks and print size; for a link — the domain only. The Wi-Fi password and network name, contact card details, texts, addresses and numbers never go into it.
Related tools
All tools · 40
Barcode generator and scannerEAN-13, EAN-8, UPC-A and Code 128 with check digits and a self-check, printable label sheets, recognition with the camera and from photos.
Document scannerShoot a page or upload a photo: edges are found automatically, perspective and shadows are corrected and pages are combined into one PDF. All on your device.
NFC tag generator and writerA link, Wi-Fi, contact card, phone or text → an NDEF message with a tag capacity check. In Chrome on Android it writes straight to the tag and reads it back; elsewhere you get a .bin file, HEX and a link to open the tool on a phone.
Password and passphrase generatorPasswords, passphrases from English or Russian words, PINs and patterns from a cryptographic generator, exact entropy and crack times, and a check of your own password for common weaknesses.
WireGuard config generatorA website cannot be a VPN — but here you build a real WireGuard setup for your server: X25519 keys, wg0.conf with NAT, a .conf and QR code per phone and laptop, subnet and route checks, a ZIP and setup steps. Keys never leave your browser.
SSH key generatorEd25519 and ECDSA P-256 in OpenSSH format with a passphrase (like ssh-keygen), SHA256/MD5 fingerprints and randomart, restricted authorized_keys, ~/.ssh/config and an inspector for any public key. Keys are generated on your device.Need the site or landing page the code leads to?
InterLAB builds sites and landing pages for offline traffic: menus, promotions, lead forms with source tags. The first short conversation about the task is free.
- The first short conversation is free — we choose the format
- NDA — yours or ours
- Pricing after a brief and an agreed scope