QR Code Generator

Build static QR codes with full visual customization. Privacy-first — everything runs in your browser.

What is a QR code?

A QR ("Quick Response") code is a two-dimensional barcode that encodes a short message — usually a URL, but also plain text, contact info, WiFi credentials, or a phone number. When a phone camera sees it, the message is decoded and the phone offers to open it.

QR codes are public-domain (defined by ISO/IEC 18004). Any scanner can read any QR code — there's no concept of a "private" QR.

Static vs dynamic QR codes

There are two kinds of QR codes in common use:

Kind What it encodes After printing
Static Your URL / text directly. The QR is the final artifact. Cannot be changed without reprinting. Cannot track scans.
Dynamic A short redirect URL on someone's server. The server forwards to your real URL. Can be edited after printing. Can track scans. Requires the redirect service to keep running.

This tool builds static QR codes only. No redirect service. No scan tracking. No dependence on a third party staying online. The QR you print today will still work in ten years, exactly as printed.

How this tool works

  1. Pick the QR type tab — URL, text, email, phone, SMS, or WiFi.
  2. Type your content. The preview updates instantly in your browser.
  3. Customize colors, module shape, eye shape, and (optionally) overlay a logo.
  4. Optionally add a frame ("Scan Me", "Visit Website", custom text).
  5. Click Download PNG or Download SVG. The file is generated in your browser and saved directly.

vCard contact cards

A vCard QR encodes a full contact card. When a phone camera scans it, the contacts app pops up with an "Add Contact" sheet pre-filled with the name, phone, email, organization, and address you provided. Saving the contact takes one tap — no manual typing.

When to use it

The format

Behind the scenes the tool produces a vCard 3.0 text payload (RFC 2426). vCard 3.0 has the broadest scanner support — iOS, Android, and most QR-reading apps handle it natively.

BEGIN:VCARD
VERSION:3.0
N:Doe;Jane;;;
FN:Jane Doe
ORG:Acme Legal
TITLE:Senior Partner
TEL;TYPE=WORK,VOICE:+15551234567
TEL;TYPE=CELL,VOICE:+15559876543
EMAIL;TYPE=INTERNET:jane@acme.example
URL:https://acme.example
ADR;TYPE=WORK:;;1234 Main St;Springfield;IL;62701;USA
NOTE:Family law & estate planning
END:VCARD

Sizing & error correction

A full vCard is the densest QR this tool produces — every field you fill adds modules. For business-card printing aim for at least 2.5 cm and error correction Q or H so a coffee ring or scuff doesn't kill the scan. The tool defaults to M, which is fine for clean digital surfaces.

Privacy

Your contact details never reach our server. Just like URL and WiFi QRs, the vCard is assembled and rasterized entirely in your browser. Names, phone numbers, addresses, and notes are not transmitted anywhere — the only signal the server sees is "someone at this IP just downloaded a vCard QR", and that's only for rate-limiting.

Best practices

Privacy statement

We don't see your content. The URL, text, phone number, WiFi password, or whatever else you encode never leaves your browser. The QR is generated locally and downloaded locally.

What the server DOES see:

Note on the "generated" count: this metric records when a valid QR is successfully built in the preview, not just when you download. A user who builds a QR and closes the tab without downloading still produces a "generated" row. That lets the site admin compute a download-conversion rate (downloads ÷ generations), useful for understanding how often visitors who try the tool follow through to a download. The metric never includes your content — only the enum-style QR type.

What the server NEVER sees:

No QR images are stored on the server. Each download is produced fresh from the data already in your browser.

Best practices for printing

Contrast guidelines

QR scanners read the contrast between modules and the background — not specific colors. The most reliable choice is still pure black on pure white.

Error correction explained

Every QR code reserves some of its pixels for error correction. If part of the QR is dirty, smudged, scratched, or covered by a logo, the scanner can still read it — up to a point.

LevelRecovers up toWhen to use
L~7%Clean digital surfaces (web pages, on-screen). Smallest QR.
M~15%Default. Indoor printed materials. Good balance.
Q~25%When overlaying a logo. Outdoor or high-wear surfaces.
H~30%Heavy logo overlay or surfaces that get dirty / scratched.

Higher levels make the QR pattern denser — meaning a larger printed size is needed to keep modules legible. If you overlay a logo, jump to Q or H so the QR can recover from the obscured center.

Productivity features

Scan-validation badge

After every render, the preview is re-decoded by an in-browser QR reader. A green "Verified scannable" badge appears when the round-trip matches your input; a red badge surfaces with a specific cause (logo too large, contrast too low, error correction too low) when it doesn't. The check runs entirely in your browser — nothing is uploaded.

Bulk CSV → ZIP

Drop a CSV with columns label, url, and optional frame_text under the "Bulk" section. Every row becomes a QR using the visual settings you picked above (colors, module + eye style, frame, logo, error correction, size); the results are packaged into a ZIP for download. The CSV is parsed and the ZIP is built entirely in your browser — at no point does the file or any of its contents reach the server. Capped at 500 rows.

Brand-kit presets

Pick the colors you use, click "Save preset", give it a name. The next time you open the tool, the preset appears as a one-click chip below the color pickers. Presets live in your browser only (localStorage); they're shared with the Email Signature Generator on the same device. Clearing your browser's site data clears the presets.

PDF / JPG / SVG / PNG downloads

Four output formats: PNG (raster, sized by the pixel-size slider), SVG (scales infinitely), JPG (smaller files for screen use), and PDF (single-page wrapper around the PNG, ready to drop into a press-ready document). Print works as a fifth path — the Print button opens your browser print dialog scoped to a clean view of the QR only.

Logo size + cross-tool bridge

Drag the logo size slider (10–40 % of QR width) to find the largest overlay that still scans. Clamped to the safe range — above 40 % even level H error correction starts dropping scans. If you opened this page from the UTM Builder's "Make a QR for this URL" button, the URL field is pre-filled automatically; the URL itself travels via the browser address bar and never reaches the server.

FAQ

Do QR codes expire?

Static QR codes (what this tool makes) never expire. They're a physical pattern — as long as the pattern is legible, it scans. The destination URL it points to could go down, but the QR itself works forever.

Do you store my data?

No. See the Privacy statement above. The QR content never reaches our server. We log only your IP, timestamp, QR type, and file format for each download (no PII, no content).

Can I track scans?

Not with a static QR. Tracking requires a dynamic QR (which redirects through a third-party server). If you want scan analytics, build a tagged URL in our UTM Builder first, then encode that tagged URL into a static QR here. The tagged URL's clicks show up in your analytics tool.

Why is my QR blurry?

Most likely you're using the PNG export at too small a resolution and scaling it up. Increase the Pixel size slider before downloading, or use the SVG export — SVG scales infinitely without blurring.

My QR doesn't scan. What's wrong?

Common causes: too small (under 2 cm), too low contrast, missing quiet zone, or a logo overlay that's eating too much of the QR. Try: increase the size, switch to pure black on pure white, raise the error correction to Q or H, or reduce the logo size.

Why are colors limited to hex codes?

Hex codes are the universal pin for a specific color. They match between your screen, your printer, and your design software. The picker also accepts shorthand (e.g. #f0a → expands to #FF00AA on blur).

Are WiFi QR codes safe?

They contain your network name AND password in plain text. Anyone who scans the QR sees both. That's usually fine for guest networks, but treat them like you'd treat a printed copy of the password — don't leave them anywhere public if your network is sensitive.