QR Code Generator

Create QR codes for URLs, WiFi, contacts & more — live preview as you type.

1 — Choose type

2 — Enter data

Website URL

Preview appears here

Enter data or start with a sample.

🔒 Generated locally — nothing uploaded

How this compares

QR generators are the most over-saturated category online — most are wrappers around the same JavaScript library this one uses, served alongside ads and a pitch for ‘dynamic QR’ subscriptions. This one ships every payload format you actually need, plus a customizer and batch tool — for free, no sign-in, no expiring URLs.

FeatureWebToolVerseqrcode-monkeyqr-code-generator.comQR TigerBeaconstac
Files leave your deviceNeverServer-renderServer-renderServer-renderServer-render
Free with no expiring tracking links
Login requiredAfter 1 code
Payload: URL
Payload: WiFi
Payload: vCard contact
Payload: SMS / Email / Phone
Error correction L / M / Q / H
Output: PNG + SVG
Custom colors + logo overlaySee QR Customizer
Bulk generate from CSVSee QR Batch

Free-tier features as of May 2026. Competitor feature sets change often; check their sites for the most current limits.

Runs entirely in your browser. No uploads. Your files stay private.

How the QR Generator Builds URL, WiFi, vCard, and Other Codes

QR Generator turns structured input — a URL, a WiFi credential, an email draft, a vCard contact — into a scannable QR image entirely inside your browser. Under the hood it uses the qrcode npm library: QRCode.toCanvas writes the matrix to a 2D HTMLCanvasElement and QRCode.toString produces an SVG version on demand. There is no API call. The encoded data exists only in this tab's memory until you download it.
The seven supported types map to formal payload formats that mainstream camera apps already understand. URL is plain "https://...". Email becomes a mailto: link with URL-encoded subject and body. Phone uses tel:, SMS uses sms: with a body parameter, and WiFi follows the WIFI:T:WPA;S:NetworkName;P:secret;; convention parsed by iOS, Android, and most third-party scanners. vCard is built as a VERSION:3.0 record with FN, TEL, EMAIL, ORG, and URL fields — when a phone scans it, the OS offers to add the contact directly.
QR symbols come in 40 versions; the qrcode library picks the smallest version that fits the data at the chosen error correction level. The hard ceiling at level L is 4,296 alphanumeric characters or 7,089 numeric digits, falling to about 1,852 alphanumeric at level H. The character counter under the Text input warns when you cross 90% of that ceiling, because shorter payloads produce sparser matrices that scan faster and from further away.
Error correction trades capacity for resilience. L (~7%), M (~15%), Q (~25%), and H (~30%) describe how much of the printed code can be obscured before the message becomes unrecoverable. M is the default here because it is the standard balance for screen-displayed QR codes; raise it to H if you intend to overlay a logo using the customizer or to print on a surface that may scuff.
Export goes through the same canvas. PNG download is just canvas.toDataURL('image/png'). SVG is a separate render through QRCode.toString, blob-wrapped, and given a temporary object URL via URL.createObjectURL. Copy uses the modern Clipboard API — navigator.clipboard.write with a ClipboardItem — and falls back to a download on browsers without that capability. Share calls navigator.share when available so the code can be sent directly to AirDrop, Messages, or Drive on supported devices.
Print uses window.open with an inlined data-URL <img> and an onload-triggered window.print, which produces a clean print preview without any header or footer chrome. The popup will be blocked if browsers consider it not user-initiated; clicking the Print button after a generated preview always counts as user-initiated so this is rarely an issue in practice.
Static QR codes carry their data in the symbol itself, so the URL or text inside cannot be changed after the code is printed. If you need redirectable codes (so the destination can be edited later without reprinting), generate a code that points to a short link from a service you control, then update that link as needed.

Common Use Cases

01

WiFi guest access

Print a WiFi-format code for the office or holiday rental so guests connect with one scan instead of typing a 20-character password.

02

Business card vCards

Encode name, phone, email, organisation, and website into a vCard QR so a single scan adds you to the recipient's contacts.

03

Restaurant menu links

Place table-top URL codes that resolve to a PDF or web menu, optionally with a per-table query string for ordering systems.

04

Event check-in pages

Generate a URL code that opens the registration confirmation, ticket scan, or session calendar add-to-calendar link.

Frequently Asked Questions

QR symbols can carry up to 4,296 alphanumeric characters or 2,953 raw bytes at error correction level L, but capacity drops sharply as you raise correction (around 1,852 alphanumeric at H). The text input shows a live counter that turns red as you approach the limit. For URLs, shorter is always better — a 40-character link scans far more reliably from across a room than a 200-character one.
iOS requires the WIFI: payload to follow the exact field order and escaping rules — semicolons, commas, and backslashes inside the SSID or password must be backslash-escaped. The generator does this automatically when you fill in the structured fields, but pasting a hand-rolled WIFI string can break iOS's parser. Use the form fields rather than the Text type for WiFi codes.
Not for a static code generated here — the URL is baked into the matrix. To make a redirectable code, encode a short link from a redirector you control and update the redirect target afterwards. Many marketers point QR codes at their own /go/campaign-name path on their site for this reason.
PNG is a raster bitmap at the resolution you select (256, 512, 1024, or 2048 px). SVG is a vector file made of <rect> elements that stays sharp at any size and is typically a few kilobytes. Use PNG for screens and small print runs; use SVG when sending artwork to a press, signage shop, or laser cutter.
The Share button calls navigator.share, which is supported on iOS Safari, Android Chrome, and recent macOS Safari but not in desktop Chrome or Firefox on most platforms. On unsupported browsers it falls back to downloading the PNG so you can attach it manually.
Use M (~15%) for general use — it is the spec's default balance. Pick L only when you need maximum capacity in a small physical area. Pick Q or H when the printed code may be partly damaged, dirty, or covered by a logo overlay; H tolerates roughly 30% loss but uses a larger, denser matrix.
It writes a PNG image blob to the clipboard via the ClipboardItem API, so pasting into Slack, Word, Figma, or an email composer drops in the rendered QR. If your browser does not support ClipboardItem, it falls back to triggering a PNG download.
No. The qrcode library is bundled into the page and runs locally. You can verify this by opening DevTools' Network tab while you generate — there are no outbound requests for the QR data. This matters when the encoded URL or contact data is sensitive.
Yes. The QR specification has not changed in any backwards-incompatible way since 2000, and the generator emits standard Model 2 QR codes that any post-2010 smartphone camera or scanner app reads. Older feature phones with QR-only apps may struggle with the highest versions, so keep payloads compact for the broadest compatibility.
That is the &quot;quiet zone&quot; — a margin of at least four QR modules required by the specification so cameras can locate the finder patterns. The generator adds a margin of two modules; this is below the spec's recommendation but works in practice for most modern scanners. If you find a code is hard to scan, place it on a clean white background with extra surrounding white space.

Step-by-step guide

How to create a QR code

Walk through every step with screenshots, format-specific tips, and the platform-by-platform limits you need to know.

Advertisement