vCard Generator
Freelancers, sales teams, and event organizers use this generator to package contact details into a single .vcf file that phone and desktop address books import cleanly. Fill the form once, pick vCard 3.0 or 4.0, and download the file or scan the matching QR code. Every field is escaped and folded to the RFC format, so notes and addresses survive the trip into Contacts, Outlook, and CRMs.
How the Generator Builds a Valid Contact File
A vCard is a short plain-text file of CRLF-terminated property lines wrapped between BEGIN:VCARD and END:VCARD. The generator starts with the mandatory FN and N properties, then appends ORG, TITLE, TEL, EMAIL, URL, ADR, BDAY, and NOTE only when those fields have values. Empty optional lines are omitted rather than emitted blank, which keeps the file small and avoids importers creating empty fields in the address book.
Every value passes through an escaper that backslash-escapes commas, semicolons, and backslashes and converts line breaks to \n. Lines longer than 74 octets are folded with a trailing CRLF plus a single leading space, the continuation marker defined by the vCard format. The same finished string feeds the download, the copy button, and the QR canvas, so the three outputs can never drift apart.
Version differences that matter
Version 3.0 writes BDAY as 1988-04-17 and is accepted by virtually every importer still in circulation. Version 4.0 writes the compact 19880417 form and declares VERSION:4.0, which some older Android and CRM pipelines reject. The generator handles both, including the version-specific birthday formatting, from a single form state.
Why the QR code is drawn locally
The QR matrix is generated on a canvas from the same vCard string using the same client-side library as the site\u2019s QR tool. Contact data never reaches a remote rendering API, which matters when the card belongs to an executive whose mobile number should not transit a third party. Print the code on badges and let attendees save the record with a camera scan.
Raw form data compared with generated vCard 3.0
First: Jordan
Last: Blake
Org: Northwind Analytics
Mobile: +1-415-555-0198
Email: jordan.blake@northwind.example BEGIN:VCARD
VERSION:3.0
FN:Jordan Blake
N:Blake;Jordan;;;
ORG:Northwind Analytics
TEL;TYPE=CELL:+1-415-555-0198
EMAIL;TYPE=WORK:jordan.blake@northwind.example
END:VCARD Use Cases
| Developer | Production | Workflow |
|---|---|---|
| Generate fixture .vcf files for contact-import tests | Attach speaker contact cards to conference emails | Hand sales reps a QR badge that saves straight to Contacts |
| Verify escaping logic for commas inside addresses | Publish a company-wide .vcf for the support desk | Swap vCard 3.0 to 4.0 after a CRM migration |
| Batch-create cards from a spreadsheet export | Print trade-show cards with scannable QR codes | Onboard a new hire by importing one contact file |
Common Mistakes and Troubleshooting
The most frequent import failure is a file with no FN property; some hand-built vCards only set N, and strict importers drop the contact. This generator always emits FN, deriving it from first and last name when the full-name box is empty. A second issue is unescaped semicolons inside notes: the importer reads them as value separators and scatters the remainder across other fields. The escaper here neutralizes that before the line is folded.
iPhone sometimes shows only the organization when the name fields are blank, which confuses users who expected the ORG line to act as the display name; fill in at least a first name. Birthday values typed without dashes are compacted automatically for 4.0 and hyphenated for 3.0, but a free-text note like "circa 1990" is passed through unchanged and may be ignored by importers. If the QR code will be printed smaller than about 3 cm, trim optional fields so the matrix stays easy to scan.
Best Practices for Contact Card Files
Keep the file text-only unless you have confirmed the receiving system handles embedded photos. Use E.164-style phone numbers with a leading + and country code so mobile dialers pick the right prefix. Put the person\u2019s role in TITLE rather than appending it to the name, because most CRMs map TITLE to a dedicated field during import.
Version 3.0 remains the safe default for mixed audiences; switch to 4.0 only for pipelines you have tested. When publishing the card on a website, serve the .vcf over HTTPS with the text/vcard content type so desktop browsers download instead of displaying raw text. Re-export the file whenever a phone number or employer changes rather than editing the .vcf by hand, since manual edits are where escaping and folding errors usually appear.
vCard Generator FAQ
What is a vCard file used for?
A vCard (.vcf) is the standard electronic business card format. Recipients can import it into iPhone Contacts, Google Contacts, Outlook, and most CRM tools to save someone’s name, phone numbers, email, address, and employer in one action. Websites embed vCards behind "Add to contact" buttons, and event organizers attach them to conference confirmations so attendees can store a speaker’s details without retyping.
What is the difference between vCard 3.0 and 4.0?
Version 3.0 is the most widely accepted across older iOS, desktop Outlook, and legacy CRM imports; it writes birthdays as YYYY-MM-DD. Version 4.0 is the current IETF standard (RFC 6350) and uses compact YYYYMMDD birthdays plus URI-based properties, but some older Android importers still choke on it. When in doubt, generate 3.0 for broad compatibility and switch to 4.0 when you know the receiving system is modern.
Does the QR code contain the same data as the .vcf file?
Yes. The QR canvas encodes the exact same vCard text that the download button writes to disk. Scanning the code with a phone camera usually opens a contact preview that can be saved directly, which is useful on printed badges, business cards, and trade-show signage where handing over a file is impractical.
Are my contact details uploaded to a server?
No. The form values stay in the page, the vCard string is assembled with local string operations, and the QR code is drawn on a local canvas. Nothing is transmitted, logged, or stored, so you can safely enter personal data, unreleased executive contacts, or client records under NDA.
Why does my imported contact show garbled notes or addresses?
vCard text fields must escape commas, semicolons, backslashes, and line breaks, otherwise importers treat them as field separators and split the value incorrectly. This generator applies RFC-compliant escaping to every field and folds long lines at 75 octets with the standard continuation-space format, which keeps notes and street addresses intact after import.
Can I create a contact card with only a phone number?
The FN (formatted name) property is mandatory in every vCard version, so a file with no name at all is rejected by the validator. If you only have a display label and a phone number, put the label in the first-name field and leave organization blank; the generator will emit FN and N correctly and the importer will show that label as the contact name.
How do I attach a photo to the vCard?
Version 4.0 prefers photo properties that reference a URI, and version 3.0 often expects a base64-encoded PHOTO block. This generator keeps the file text-only on purpose: embedded photos inflate the .vcf size, break some mail clients, and are the most common cause of failed imports. Host the photo at a stable URL and add the URI manually if your recipient pipeline supports it.
Related Tools
Create standalone QR codes for links and contact strings
Build a styled signature from the same contact fields
Assemble profile and contact links for signatures
Mint unique IDs for CRM contact records
Wrap the contact card announcement in an email layout
Format contact bios for pages that link the .vcf