Skip to content

QR Code Generator — URL, WiFi, vCard, Email, SMS, Geo

Free QR code generator. Make static QR codes for URL, WiFi, vCard, email & SMS. SVG & PNG download. No expiration, no signup, 100% in your browser.

No Tracking Runs in Browser Free
All QR codes generated locally in your browser. Nothing is uploaded.
Customize appearance
Enter content to generate

What is a QR Code?

A QR Code (Quick Response Code) is a 2D matrix barcode invented by Denso Wave in 1994 and codified by ISO/IEC 18004:2015. It encodes data into a square grid of black and white modules, with three large finder patterns at the corners that let scanners locate and orient the code. Versions range from 1 (21×21 modules) to 40 (177×177); the encoder picks the smallest version that fits your content at the chosen error correction level.

QR codes carry many data types via standard URI schemes. URLs are encoded directly. WiFi credentials use the de facto WIFI: protocol that iOS Camera (since iOS 11) and Android camera apps recognize natively. Contact cards use vCard 3.0 (RFC 2426) — broader scanner compatibility than vCard 4.0 (RFC 6350). Email links use mailto: (RFC 6068), text messages use sms: (RFC 5724), and map pins use geo: (RFC 5870). Scanning a well-formed QR triggers the right action — open URL, join WiFi, save contact, draft email — without the user typing anything.

Reed-Solomon error correction is what keeps QR codes scannable when they're scratched, folded, or partly obscured. Four levels — L, M, Q, H — recover roughly 7%, 15%, 25%, and 30% of damaged data. Higher levels add redundancy modules, so the QR grows physically larger for the same content. Choose H for printed materials that will be handled, M for screens, L only when you're squeezing in long URLs.

The biggest practical distinction is static vs dynamic. A static QR encodes your real content directly into the pixels — it works forever, with no service to maintain. A dynamic QR encodes a short link to a third-party redirect service; if that service expires, raises its price, or shuts down, every printed QR you've shipped goes dead. Read Static vs Dynamic QR Codes — why yours stops working for the full story. This tool generates static QRs only.

Many online QR generators upload your WiFi password, vCard contact details, or private URL to their server before encoding. This tool runs the qrcode npm library entirely in your browser — zero uploads, zero logs, zero tracking. It's the same privacy posture as our other client-side encoders Base64 Encoder/Decoder and URL Decoder/Encoder: your inputs never leave the page.

// Build a WiFi payload and generate an SVG QR
import QRCode from 'qrcode';

// 1. WIFI: protocol (de facto, recognized by iOS+Android)
const payload = 'WIFI:T:WPA;S:My\\;Network;P:p@ss\\;word;H:false;;';

// 2. Generate SVG (vector, scales without pixelation)
const svg = await QRCode.toString(payload, {
  type: 'svg',
  errorCorrectionLevel: 'M',
  margin: 4,
  color: { dark: '#000000', light: '#ffffff' },
});

// 3. Drop into the DOM (DOMParser-safe, not innerHTML)
const doc = new DOMParser().parseFromString(svg, 'image/svg+xml');
preview.replaceChildren(doc.documentElement);

Key Features

Never Expires

Static QR codes encode your data directly into the pixels. No redirect service to fail, no monthly fee, no shutdown risk — the code keeps working forever.

7 Data Types

URL, plain text, WiFi credentials, vCard contacts, email mailto:, SMS, and geo locations — one tool for the most common QR use cases.

SVG & PNG Download

SVG by default (vector, scalable, paste straight into Figma). PNG at 256, 512, or 1024 px for screens, social posts, or print.

Custom Colors with Contrast Check

Foreground and background color pickers. The tool computes the contrast ratio and warns when scanning may fail on real phones.

4 Error Correction Levels

L (~7%), M (~15%), Q (~25%), H (~30%) — pick higher levels for print where damage, fading, and folds are likely.

100% Browser-Based

QR generation runs locally via the qrcode npm library. Your inputs — including WiFi passwords and personal vCard data — never leave your device.

No Signup, No Watermark

Open the page, generate, download. No account, no usage limits, and no logo overlay polluting your QR.

Examples

URL to website

https://go-tools.org

Most common use — paste any URL and download the QR. The link is encoded directly into the pixels, so the QR keeps working even if you switch hosting providers.

WiFi network share

SSID: Cafe WiFi / WPA2 / pass: visitor2026

iOS and Android Camera apps recognize the WIFI: protocol natively — guests scan the QR taped by the door and join the network without typing the password.

vCard business card

Ada Lovelace / Acme Corp / +1 555 0100 / ada@acme.test

Scanning the QR opens the contact app prefilled with name, phone, email, and organization. Paper business cards with a vCard QR get saved roughly 4× more often than typed entries.

Geo location

lat: 40.7829, lng: -73.9654 (Central Park)

geo: URI opens the default maps app with a pin already dropped — perfect for venue signage, restaurant flyers, real estate listings, and wedding invitations.

How to Use

  1. 1

    Choose the data type

    Pick the tab that matches what you're encoding: URL for websites, WiFi for network sharing, vCard for contact info, Email or SMS for prefilled messages, Location for map pins, or Plain Text for arbitrary content.

  2. 2

    Fill in the fields

    Each tab shows the right fields for that type. WiFi needs SSID, password, and security type. vCard accepts name, phone, email, organization, and website. The QR preview updates as you type.

  3. 3

    Customize (optional)

    Open the Customize panel to change error correction level (M is fine for most cases, H for print), output size (200-1024 px), and foreground/background colors. The tool warns you if contrast is too low for reliable scanning.

  4. 4

    Download SVG or PNG

    Click Download SVG for vector output (scalable, perfect for print) or pick a PNG size (256/512/1024 px) from the dropdown. Use Copy SVG to paste straight into Figma or your design tool.

Common QR Code Mistakes

Dynamic QR expired

The QR encoded a short URL like bit.ly/xyz, the redirect service expired, and the QR now goes nowhere. Static QR encodes your real URL directly — never fails.

✗ Wrong
QR encodes: https://bit.ly/abc → 404 after subscription lapses
✓ Correct
QR encodes: https://your-domain.com/menu directly

Low contrast custom colors

Light gray on white, or yellow on white — looks pretty in design mocks, fails to scan on most phones in the real world.

✗ Wrong
FG #cccccc on BG #ffffff (ratio 1.6:1)
✓ Correct
FG #003366 on BG #ffffff (ratio 12.6:1)

Unescaped WiFi special characters

If your password contains ;, :, \, or ", they must be backslash-escaped in the WIFI: payload. This tool does it automatically — many cheap generators don't.

✗ Wrong
WIFI:T:WPA;S:Cafe;P:p@ss;word;; (parser breaks at the unescaped ;)
✓ Correct
WIFI:T:WPA;S:Cafe;P:p@ss\;word;;

Too low error correction for printing

Level L on a printed flyer that gets a coffee stain or fold mark stops scanning. Use H for any physical printout that will be handled.

✗ Wrong
Print poster, ECC=L, partially folded → unreadable
✓ Correct
Print poster, ECC=H → readable even with 30% damage

Logo too large

Embedding a logo over more than 25% of QR area corrupts too many modules even at ECC H. Keep logos at 20% or smaller, centered.

✗ Wrong
40% logo over center → fails on Samsung phones
✓ Correct
15% logo, ECC=H → reliable across phones

URL too long for ECC level

Tracking URLs with UTM parameters (utm_source, utm_medium, utm_campaign...) push the QR past the byte limit at ECC=M. Either lower ECC or use a static URL shortener you control.

✗ Wrong
?utm_source=...&utm_medium=...&utm_campaign=... (350 chars at M → reject)
✓ Correct
Use /go/spring (35 chars) with server-side redirect to the long URL

Common Use Cases

Restaurant menus
Print a URL QR on the table — customers view the menu on their phones. Static QR means it works even if you switch hosting providers or change menu domains.
WiFi for guests
Tape a WiFi QR by the door at home, in cafés, or in conference rooms. Guests scan and join without typing the password — and you never have to read it out loud.
Event check-in
Print a URL QR linking to your registration page on tickets and signage. Shows up on photographer prints, name tags, lanyards — every scan is a tracked check-in.
Business cards
Add a vCard QR to paper cards — scanning saves your contact instantly. Roughly 4× higher save rate than asking the recipient to type your details into their phone.
Location pins for venues
Geo QRs open the default maps app with the pin already set. Use them on real estate listings, restaurant flyers, conference signage, and wedding invitations.
Marketing posters
URL QRs with UTM parameters track print campaign attribution. A static QR survives even if the campaign analytics service shuts down or your account expires.
Product packaging
Encode warranty, manual, or registration URLs on the box. Use error correction H so the QR survives shipping damage, scuffs, and fold-over flaps.
Museum & exhibit labels
Audio guide URLs, deeper context, language alternatives — visitors get rich content from their own phone instead of carrying bulky printed booklets.

Technical Details

ISO/IEC 18004:2015 Compliant
Output follows the international QR Code standard. Versions 1 to 40 (21×21 to 177×177 modules) selected automatically based on content size and chosen error correction level.
Reed-Solomon Error Correction
QR codes use Reed-Solomon coding to recover from damage or occlusion. Levels L/M/Q/H recover roughly 7%, 15%, 25%, and 30% of damaged data. Higher levels mean a larger QR for the same content.
Standard URI Schemes
WIFI: protocol (de facto, recognized by iOS and Android), mailto: (RFC 6068), sms: (RFC 5724), geo: (RFC 5870). Contact cards use vCard 3.0 (RFC 2426) — broader scanner compatibility than vCard 4.0 (RFC 6350). Built-in iOS and Android camera apps recognize all of them.
Auto Encoding Mode
The qrcode library selects the most efficient encoding (numeric, alphanumeric, byte, or kanji) for each input. UTF-8 byte mode handles non-ASCII text including emoji and CJK characters.

Best Practices

Don't crop the quiet zone
QR codes need a 4-module-wide margin of background color around them. This tool includes it by default — don't crop it out when placing the QR in a layout, even if it looks like wasted whitespace.
Use ECC level H for printed QRs
Print is unforgiving — fading, scratches, and fold lines all damage the code. Error correction level H (~30% recovery) saves you. Level M is fine for screens that don't degrade.
Keep contrast ratio at 4.5:1 or higher
QR scanners measure contrast between dark and light modules. Stick to dark foreground on light background. Inverted (light on dark) works on some phones but fails on others.
Test on iOS and Android
iOS Camera reads QR codes by default since iOS 11. Android varies by manufacturer — Samsung, Pixel, and Xiaomi all behave slightly differently. Test both before printing 10,000 flyers.
Use HTTPS and short URLs
Long URLs make the QR denser (smaller modules → harder to scan). If your tracking URL is 200+ characters, run it through a static URL shortener you control — not Bitly, since those expire.

Frequently Asked Questions

Why does my QR code stop working after a while?
Because it's a dynamic QR — the QR encodes a short tracking URL that redirects to your real content. When the redirect service expires, raises its price, or shuts down, the QR is dead. This tool generates static QR codes that encode your data directly into the pixels. They never expire. Read the full guide.
Will this QR code expire?
No. We generate static QR codes. Your URL, text, WiFi, or vCard data is encoded directly into the QR pixels — there is no redirect, no service to maintain, no subscription. As long as the printed or saved QR is intact, it will scan forever.
How do I create a WiFi QR code?
Switch to the WiFi tab, enter your SSID (network name) and password, then pick the security type — WPA / WPA2 / WPA3 for almost all modern networks, WEP for legacy gear, or No password for open networks. Tick Hidden network if your SSID is not broadcast. Download the QR — guests scan it with their phone camera and join automatically.
How do I make a vCard QR code for my business card?
Switch to the vCard tab and fill name, phone, email, organization, and website. Output is vCard 3.0 (RFC 2426) — the format both iOS and Android recognize most reliably (vCard 4.0 / RFC 6350 has worse scanner support). Print the QR on paper cards; scanning offers to save the contact in one tap.
Is this QR code generator free?
Yes — no signup, no payment, no usage limits, no watermark on the output. The site is supported by minimal display ads on unrelated pages. The tool itself runs entirely in your browser with no upload and no tracking.
Can I download QR codes as SVG?
Yes — SVG is the default download format. SVG is vector, so it scales to any size without pixelation, and you can paste it directly into Figma, Illustrator, Sketch, or send it to a printer at billboard size. Need a raster file instead? Pick PNG at 256, 512, or 1024 px from the Download menu.
What is the maximum length of data a QR code can hold?
Up to ~2,953 bytes for byte mode at error correction level L (Version 40 QR), ~2,331 at level M, ~1,663 at Q, ~1,273 at H. Numeric-only data fits more (up to 7,089 digits at L). If your content is rejected, lower the error correction level or shorten the URL.
What error correction level should I use?
M (medium, ~15% recovery) is the default and works for most cases. Use H (~30%) if the QR will be printed on packaging, fabric, or anywhere damage is likely. Use L (~7%) only if you are hitting the byte limit and the QR will live on a screen rather than in print.
Can I add a logo to the QR code?
Not yet. Logo embedding works best with a higher error correction level (Q or H) and careful sizing — otherwise the QR becomes unreliable across phones. We are evaluating it for v2 with safe defaults. For now we recommend keeping the QR clean: the highest-converting QRs are the simplest.
Are my inputs uploaded to a server?
No. All QR generation happens in your browser using the qrcode npm library, loaded once and run locally. Your URL, WiFi password, vCard data, and any other input never leave your device. Refreshing the page clears all inputs. We do not store, log, or analyze what you generate.
Why is my custom-colored QR not scanning?
QR scanners need high contrast between foreground (dark) and background (light). If you reverse them — light foreground on a dark background — most scanners fail. Stick to dark on light with a contrast ratio of at least 4.5:1. This tool warns you when contrast is too low.
What QR code version is generated?
The qrcode library auto-selects the smallest QR version (1 to 40) that fits your content at the chosen error correction level. Version 1 is 21×21 modules; Version 40 is 177×177. The output follows ISO/IEC 18004:2015, the international QR Code standard.
Can I use this QR code for commercial purposes?
Yes — QR Code is an open standard (ISO/IEC 18004) and not restricted by patents (Denso Wave released the patent rights in 1994). The QR codes you generate here are yours to use commercially without attribution or license fees.
Does this work offline?
After the first load, the qrcode library is cached by your browser, so subsequent generations work without network access. The page itself is statically served — no API calls, no backend dependencies. Open it once on a flight and generate QRs at 30,000 ft.

Related Tools

View all tools →