Generate QR Code
Create a QR code from any text or URL. Runs locally — nothing leaves your browser.

Generating happens locally in your browser using the qrcode library.

Start from a template
256px
The QR code will appear here as you type.
0 characters2331 max for level M

Utilities

QR Code Generator

Create QR codes from any text or URL and download them.

The QR Code Generator turns any text, URL, WiFi credential, email, phone number, SMS, contact card, or crypto payment request into a scannable QR code right in your browser. Eight template chips under "Start from a template" prefill a correctly structured payload for common shapes — WiFi joins, mailto and tel links, smsto bodies, vCard 3.0 blocks, and bitcoin URIs — so you rarely need to hand-write the syntax yourself.

Everything renders locally with the qrcode library: nothing leaves your device. You pick error correction (L/M/Q/H), drag output size from 128 to 1024 pixels, watch a live character counter against the byte capacity for the active level, and download either a crisp SVG vector or a PNG raster. Generation is debounced 120 ms after each keystroke, so typing stays smooth while the preview stays current.

How it works

Input runs through a 120 ms debounce, then lib/qr.ts calls QRCode.toDataURL (PNG, margin 1, black/white) and QRCode.toString with type svg in parallel so both downloads are always ready. Byte capacities are fixed per error-correction level — L=2953, M=2331, Q=1663, H=1273 — and the counter shows "{n} characters → {capacity} max for level {ecLevel}", flipping to "Near capacity" once length exceeds 80% of that limit.

Preset chips fill the textarea with example payloads such as WIFI:T:WPA;S:YourNetworkName;P:YourPassword;;, mailto:, tel:, smsto:, a vCard 3.0 block, and bitcoin:?amount=…. PNG download decodes the data URL into a Blob; SVG download builds a Blob from the markup. Empty or over-capacity input raises a destructive message instead of rendering a broken code.

How to use

  1. Type or paste text or a URL into "Input text" (placeholder "Type or paste text or a URL…"), or click a template chip under "Start from a template".
  2. Follow the preset tips box that appears — edit the SSID and password for WiFi, keep https:// for Link, trim query params on emails, and so on.
  3. Pick an Error Correction level: "L — Low (~7%)", "M — Medium (~15%)", "Q — Quartile (~25%)", or "H — High (~30%)".
  4. Drag the Size (px) slider between 128 and 1024 (step 32); the code regenerates live after the 120 ms debounce.
  5. Watch the character counter against "{capacity} max for level {ecLevel}" and act on "Near capacity" before you exceed the limit.
  6. Use the copy icon (aria-label "Copy input text") to duplicate the raw payload if you need it elsewhere.
  7. Click "Download SVG" for vector output or "Download PNG" for a raster — files save as qr-code-{timestamp}.png/.svg.
  8. Fix any destructive validation message under the controls ("Enter text or a URL…", "Input too long for error correction level…"); the code regenerates as soon as input is valid again.

Tips

  • Error correction H (~30%) lets you overlay a logo on the code without breaking scanners — pick H whenever branding the middle of the QR.
  • Keep the WIFI:…;; structure intact — scanners read the whole string; the preset tips recommend WPA2/WPA3 or nopass as the auth type.
  • For empty emails, delete ?subject=…&body=… from the mailto payload before generating (preset tip).
  • Capacity is measured in bytes per level (QR_CAPACITY_BYTES): M tops out at 2331 characters, H at only 1273.

QR Code Generator FAQ

Does my text leave the browser?

No. The card says "Create a QR code from any text or URL. Runs locally — nothing leaves your browser," and generation uses the bundled qrcode library only.

What's the maximum input for level M?

2331 characters/bytes (QR_CAPACITY_BYTES.M). Level L allows 2953, Q allows 1663, and H allows 1273.

Can I make a WiFi QR code?

Yes — the "WiFi" chip inserts WIFI:T:WPA;S:YourNetworkName;P:YourPassword;; and the tips say to use WPA2/WPA3 or nopass for the security type.

What file types can I download?

PNG (via data URL) and SVG (via Blob), from the "Download PNG" and "Download SVG" buttons.

Why does it say "Near capacity"?

The page shows that warning once text.length exceeds 80% of the byte capacity for the selected error-correction level, so you can shorten input before generation fails.

Credits

  • qrcode — Client-side QR encoding used by generateQrDataUrl/generateQrSvg in lib/qr.ts
ShareTweet
More Utilities

Command Palette

Search for a command to run...