QR Code Types — URL, vCard, WiFi & More
What Are QR Code Types?
All QR codes work the same way — they encode data into a scannable pattern. The "type" refers to what data format is encoded inside. Different types trigger different actions when scanned:
- A URL QR code opens a website
- A vCard QR code saves a contact to your phone
- A WiFi QR code connects your device to a network
- An Email QR code opens a pre-filled email
Understanding these types helps you create the right QR code for your specific use case.
URL QR Codes
What they do: Open a web page in the scanner's browser.
Best for: Marketing materials, product packaging, business cards, event promotions, restaurant menus.
How to create:
curl -X POST https://qrmint.dev/api/v1/generate \
-H "Content-Type: application/json" \
-d '{"data": "https://example.com", "size": 400}'
Tips:
- Use HTTPS URLs (more trustworthy and secure)
- Shorter URLs create simpler, more scannable QR codes
- Consider using a URL shortener like LinkShrink for very long URLs
- Add UTM parameters for tracking:
?utm_source=qr&utm_medium=print
Use cases:
- Link to your website or landing page
- Direct to a specific product page
- Open an app download link
- Share a Google Maps location
- Embed on invoices for quick payment or verification — tools like Faktuj.pl let you generate free VAT invoices that pair perfectly with QR codes
vCard QR Codes
What they do: Save contact information directly to the scanner's phone contacts.
Best for: Business cards, networking events, conference badges, employee IDs.
Data format:
BEGIN:VCARD
VERSION:3.0
N:Doe;John
FN:John Doe
ORG:Example Corp
TEL:+1-555-123-4567
EMAIL:john@example.com
URL:https://example.com
END:VCARD
How to create:
curl -X POST https://qrmint.dev/api/v1/generate \
-H "Content-Type: application/json" \
-d '{
"data": "BEGIN:VCARD\nVERSION:3.0\nN:Doe;John\nFN:John Doe\nORG:Example Corp\nTEL:+1-555-123-4567\nEMAIL:john@example.com\nEND:VCARD",
"size": 400
}'
Or use the vCard QR generator on QRMint for an easy form-based approach.
Tips:
- Include only essential fields — more data means a more complex QR code
- Test on both iOS and Android — vCard handling differs between platforms
- Always include your name, phone, and email at minimum
WiFi QR Codes
What they do: Automatically connect the scanner's device to a WiFi network — no typing passwords.
Best for: Homes, offices, hotels, cafes, Airbnb rentals, conference venues.
Data format:
WIFI:T:WPA;S:MyNetworkName;P:MyPassword;;
Where:
T= Authentication type (WPA, WEP, or nopass)S= Network name (SSID)P= Password
How to create:
curl -X POST https://qrmint.dev/api/v1/generate \
-H "Content-Type: application/json" \
-d '{"data": "WIFI:T:WPA;S:CafeWiFi;P:welcome2026;;", "size": 400}'
Or use the WiFi QR generator for a user-friendly form.
Tips:
- WPA/WPA2 is the most common authentication type
- For open networks, use
T:nopassand omit thePfield - The SSID is case-sensitive — make sure it matches exactly
- Place the QR code near the router for best context
Common placements:
- Hotel room cards
- Cafe table tents (next to the menu QR code)
- Office reception desks
- Airbnb welcome guides
Email QR Codes
What they do: Open the user's email app with a pre-filled recipient, subject, and body.
Best for: Customer support, feedback collection, event RSVPs, quick contact.
Data format:
mailto:hello@example.com?subject=Inquiry&body=Hi, I'd like to know more about...
How to create:
curl -X POST https://qrmint.dev/api/v1/generate \
-H "Content-Type: application/json" \
-d '{"data": "mailto:support@example.com?subject=Support Request", "size": 400}'
Or use the Email QR generator.
Tips:
- Keep the subject and body short — long strings make complex QR codes
- URL-encode special characters in the subject and body
- Works with any email client the user has installed
SMS QR Codes
What they do: Open the messaging app with a pre-filled phone number and optional message.
Best for: Customer service hotlines, opt-in text campaigns, quick contact for tradespeople.
Data format:
sms:+15551234567?body=Hello, I'm interested in your services
How to create:
curl -X POST https://qrmint.dev/api/v1/generate \
-H "Content-Type: application/json" \
-d '{"data": "sms:+15551234567?body=Hi there!", "size": 400}'
Or use the SMS QR generator.
Tips:
- Include the country code in the phone number
- Keep the pre-filled message short and relevant
- Some older Android devices use
smsto:instead ofsms:— test on both
Plain Text QR Codes
What they do: Display raw text when scanned. No internet connection required.
Best for: Serial numbers, inventory codes, instructions, Wi-Fi passwords (manual entry), quick notes.
How to create:
curl -X POST https://qrmint.dev/api/v1/generate \
-H "Content-Type: application/json" \
-d '{"data": "Meeting Room 3B - PIN: 4829", "size": 400}'
Tips:
- Text QR codes work offline — no internet needed
- Keep text under 300 characters for reliable scanning
- Great for situations where you just need to share a short piece of information
Comparison Table
| Type | Opens | Internet Needed | Best For |
|---|---|---|---|
| URL | Web browser | Yes | Marketing, menus, products |
| vCard | Contacts app | No | Business cards, networking |
| WiFi | WiFi settings | No (to scan) | Hotels, cafes, offices |
| Email client | No (to compose) | Support, feedback | |
| SMS | Messaging app | No (to compose) | Contact, opt-ins |
| Text | Text display | No | Serial numbers, notes |
How to Choose the Right Type
Ask yourself:
- What action should the scanner take? — This determines the type
- Will they have internet? — If not, avoid URL type
- How much data? — More data = more complex QR code = harder to scan
- What device will they use? — Test on both iOS and Android
Create Any QR Code Type for Free
QRMint supports all QR code types through a single API. Just format your data correctly and generate:
const types = {
url: 'https://example.com',
vcard: 'BEGIN:VCARD\nVERSION:3.0\nFN:John Doe\nTEL:+1555123456\nEND:VCARD',
wifi: 'WIFI:T:WPA;S:NetworkName;P:password;;',
email: 'mailto:hello@example.com?subject=Hi',
sms: 'sms:+1555123456?body=Hello',
text: 'Any plain text here'
};
const response = await fetch('https://qrmint.dev/api/v1/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ data: types.url, size: 400 })
});
No API keys. No signup. Free forever.
Try creating different QR code types now — use the QRMint playground or browse the API documentation.