QR Code Generator URL, WiFi, vCard & More
Generate QR codes for URLs, plain text, email, phone, SMS, WiFi credentials, and vCard contacts. Customise colours, size, and error correction level. Download as PNG instantly, no sign up needed.
Place a photo behind the QR code. It’s automatically dimmed so the code stays scannable — use the slider below to control how much.
Higher = lighter background, easier to scan. Lower = more of the photo shows through.
Add a small logo or icon to the middle of the code. Error correction automatically switches to High so the code still scans with the center covered.
Keep this under 25% for reliable scanning. Larger logos can make the code unreadable.
How the QR Code Generator Works
This QR code generator builds valid ISO 18004 QR codes entirely in your browser using the open source qrcode-generator library. No data is transmitted to any server. The tool assembles the correct data string for each content type, then encodes it at your chosen error correction level and renders it to an HTML Canvas element.
Canvas rendering allows custom foreground and background colours, an optional background image, and an optional center logo, all composited in a single pass. The finished code can be exported as a PNG via the Canvas toDataURL API, or as a scalable SVG built from the same module grid, so it stays sharp at any print size.
WiFi QR codes are supported on iOS 11+ and Android 10+ natively through the camera app; scanning one prompts the device to join the network without typing a password. vCard codes, when scanned, open the device contacts app with the information pre-filled for one-tap saving.
What This Tool Does
How to Use It
Pick type
Select a content type: URL, text, email, phone, SMS, WiFi, or vCard. The relevant fields appear below.
Fill in details
Enter your URL, contact info, or WiFi credentials. Every field in the form maps to a specific part of the QR data format.
Set options
Choose size, colours, quiet zone, and error correction. Optionally add a background image or center logo.
Generate & download
Click Generate. Scan the preview to verify it works, then download as PNG or SVG for print or digital use.
Content Types & Their Data Format
Each content type is encoded as plain text following a specific standard, so any QR scanner reads it correctly and triggers the right action on the device. Below is exactly what gets encoded for each type.
https://example.com
Encoded as-is. Any scanner recognises the http:// or https:// prefix and offers to open it in a browser.
Any plain text you enter
Encoded with no formatting. Useful for notes, codes, or short messages that don’t need to trigger an app.
mailto:[email protected]?subject=Hi&body=Message
Subject and body are optional and appended as query parameters. Scanning opens the device’s default mail app with fields pre-filled.
tel:+15550000000
Spaces are stripped automatically. Scanning prompts the device to start a call to this number.
sms:+15550000000?body=Message
The message body is optional and URL-encoded. Scanning opens the messaging app with the number and text pre-filled.
WIFI:T:WPA;S:MyNetwork;P:password123;H:false;;
T is security type (WPA/WEP/nopass), S is the network name, P is the password, H marks a hidden network. Supported natively by iOS 11+ and Android 10+ camera apps.
BEGIN:VCARD
VERSION:3.0
FN:Jane Smith
N:Smith;Jane;;;
TEL:+15550000000
EMAIL:[email protected]
ORG:Acme Inc.
URL:https://example.com
END:VCARD
Only fields you fill in are included; empty optional fields are omitted entirely. Scanning opens the contacts app with everything pre-filled, ready to save in one tap.
Colours, Background Image & Logo
Foreground & background colour
Any hex colour works, but keep contrast high. Light text on a dark background, or the reverse, scans reliably; low-contrast combinations often don’t.
Background image
Upload a photo to sit behind the code. It’s automatically dimmed using the wash-out slider so the modules stay readable against busy imagery.
Center logo
Adding a logo automatically switches error correction to High (30% recovery), since the logo covers real data modules in the middle of the code.
Error Correction Levels
Error correction adds redundant data so the code still scans even if part of it is dirty, damaged, or covered by a logo. Higher levels survive more damage but produce a denser code.
FAQ: QR Code Generator
A QR code (Quick Response code) is a two dimensional barcode that encodes data as a pattern of black and white squares arranged on a grid. Unlike traditional 1D barcodes that store data horizontally in stripes, QR codes use both dimensions and can store significantly more information, typically up to 3,000 bytes. Smartphones read them using the camera sensor to capture the pattern, then decode the position markers (the three square corners), alignment patterns, and the data cells according to the Reed-Solomon error correcting algorithm defined in ISO/IEC 18004. The decoded string is then interpreted as a URL, contact, or other content type.
QR codes use Reed-Solomon error correction to remain scannable even when partially damaged, dirty, or obscured. There are four levels: L (7% of codewords recoverable), M (15%), Q (25%), and H (30%). Higher error correction means more redundant data, which makes the QR pattern denser and harder to scan at small sizes. For printed materials in clean environments, L or M is fine. If you plan to print the QR code on materials that may get worn, wet, or dirty (packaging, outdoor signage, stickers), choose Q or H. If you are adding a logo on top of the QR code, use H to compensate for the covered codewords.
The minimum printable size for reliable scanning depends on the scanner distance and QR version (number of modules). A commonly cited guideline is a minimum of 2 cm × 2 cm for scanning at 20 to 25 cm, scaling proportionally with distance. For a billboard scanned from 10 m, the code needs to be at least 1 m × 1 m. A useful rule of thumb: QR code size = scanning distance divided by 10. This calculator generates QR codes at your chosen pixel size for digital use; for print, ensure the resolution matches your output device (300 DPI for high quality print means a 3cm code needs about 354px).
Standard data types include plain URLs, text strings, email addresses (with optional subject and body), phone numbers, SMS messages, WiFi network credentials, and vCards (contact cards). WiFi QR codes use a special format (WIFI:T:WPA;S:NetworkName;P:Password;H:false;;) that iOS 11+ and Android 9+ can parse to join a network directly. vCard codes follow the vCard 3.0 standard and when scanned prompt the device to save a new contact. Some platforms support additional types like calendar events (VEVENT format) and geographic coordinates, which this generator supports via the URL type using a maps URL.
Yes, you can freely choose the foreground (module) and background colours. The only hard requirement is sufficient contrast between foreground and background for reliable scanning. Most scanners expect dark modules on a light background, but inverted codes (light on dark) work with modern phone cameras if the contrast ratio is sufficient. Avoid low contrast or mid tone combinations like dark grey on dark blue. You cannot use gradients within individual modules (the standard encoder writes solid colour squares), but you can use a solid background and solid foreground of any colours with adequate contrast.
A static QR code encodes your data directly, the URL or contact information is permanently fixed in the pattern. Changing the destination requires generating a new code. A dynamic QR code encodes a short redirect URL (managed by a QR service provider), which forwards to your actual destination. You can then change the destination without changing the printed code. Dynamic codes also provide scan analytics. This generator creates static QR codes, no account needed, no data sent to any server, no tracking, and the codes never expire. Use a dynamic QR service when you need analytics or expect to change the destination.
Common reasons: the code is too small for the scanning distance; the contrast between foreground and background is too low; the code is printed at low resolution and individual modules are blurry; the quiet zone (white border margin) around the code is too narrow (minimum 4 modules wide); the camera lens is dirty or the code is damaged beyond the error correction threshold; or the content type is not supported by the scanning app (some older apps do not decode WiFi or vCard types). Try increasing the size, adding more margin, using high error correction, and testing with multiple scanning apps.
This tool is completely free and requires no account. All QR code generation happens in your browser using the open source qrcode generator library, no data is sent to any server and no information is logged or stored. The generated QR code image can be downloaded directly to your device as a PNG file. There are no usage limits, watermarks, or expiry dates on codes generated here.