Structured payload
vCard QR Code
Hand someone a code they can save as a contact. Fields are written as vCard 3.0, not as a free-text blob.
This tool can receive Wi-Fi passwords or contact details. Processing stays in your browser. Reset clears the fields. QRToolMage does not upload or log them.
Generate to preview.
Generate a code to preview it here.
Static QR: the payload is stored in the image. It cannot be edited later and this site does not count scans.
How it works
Fields are escaped and folded per vCard 3.0, then encoded as a static QR. FN is derived from given and family names.
Input and output
Input is contact fields. Output is a static QR and the vCard text.
Examples
Badge
Name, title, organization, mobile, and work email for a conference badge.
Escaping
A company name with a comma is escaped so the vCard parser keeps one ORG field.
How to use this tool
- Enter at least a first or last name.
- Add phone, email, organization, and address as needed.
- Preview the payload if you want to see the vCard text.
- Download PNG or SVG, then reset.
Limitations
- Phone address books differ in which types they import.
- Photos and multiple numbers per type are out of scope.
- Anyone who can scan the code can read the contact fields.
Questions
Which vCard version is this?
Version 3.0. It is the dialect most phone cameras accept from a QR scan.
Are contacts uploaded?
No. Fields stay in the browser. QRToolMage does not store or email the card.
Why not MeCard?
MeCard is a shorter older syntax. Launch uses vCard 3.0 because phone support is broader.
Related tools
Static QR
QR Code Generator
Encode a URL or text into a static QR symbol. The destination is stored in the pixels. There is no later edit, scan count, or hosted redirect.
Structured payload
Wi-Fi QR Code
Share a network without typing the password on every guest phone. The WIFI:T:S:P:H: string is built locally and reset clears the password.
Inspect
QR Code Decoder
Upload a PNG, JPEG, or WebP that contains a QR code. The recovered payload is shown as text. QRToolMage never navigates to a decoded URL.