piapia123
en

vCard Generator

Text

Everything runs locally in your browser — nothing is uploaded

Input
Drop a file here to load its contents
Output

Turn a list of “name, phone, email” into vCard text (`.vcf`) that imports into a contacts app. One person per line, the email is optional, and a name may contain spaces or CJK. Version 3.0 and 4.0 are both supported, and you can add an organisation and an address. Two details decide whether the import works: folding is done by UTF-8 bytes (RFC 6350 caps a line at 75 octets, and a CJK character is 3 bytes, so folding by character count would split a name in half), and `\`, `;`, `,` and newlines in the text must be escaped (`;` and `,` are structural separators in vCard, and leaving one unescaped makes a client read a name as two fields). Everything is generated locally.

Features

  • One person per line: `name, phone, email` (email optional)
  • vCard version 3.0 or 4.0
  • Optional organisation (`ORG`) and address (`ADR`)
  • Folded by UTF-8 bytes, at most 75 octets per line, so CJK is never split
  • `\`, `;`, `,` and newlines escaped correctly
  • 3.0 emits `TEL;TYPE=CELL`, 4.0 emits `TEL;TYPE=cell`
  • Optionally strip spaces, hyphens and brackets from phone numbers (the `+` is kept)
  • A contact count, with the whole `.vcf` copyable

How to use

  1. Type one “name, phone, email” per line
  2. Pick the vCard version and add an organisation or address if you need them
  3. The .vcf text appears as you type
  4. Copy it, save it as a file, and import it into your phone or contacts app

FAQ

Why is a long name split across two lines?
Because RFC 6350 caps a vCard line at 75 octets (bytes); anything longer is folded onto the next line, which begins with a single space. The tool folds by UTF-8 byte count, so a multi-byte CJK character is never cut in half. Folding by character count would fold a 40-character Latin name (40 < 75) but not a 40-character CJK address, which then breaks on import.
Why escape semicolons and commas?
Because `;` and `,` are structural separators in vCard: `N:Family;Given;;;` uses semicolons between the parts of a name, and commas separate multiple values. A single unescaped semicolon inside a name or organisation is read by the client as two fields. The tool escapes `\`, `;`, `,` and newlines so the import restores the original text.
Does stripping phone separators remove the leading + of an international number?
No. It removes spaces, hyphens, brackets and dots; the `+` and the digits are kept, because the `+` is part of the international prefix and dropping it can make the number undialable.
Is anything uploaded?
No. Parsing, folding and escaping all run in the browser and the page makes no requests.

Related tools