VCF ↔ CSV
Convert vCard (.vcf) contacts to CSV and back. A repeated property (two TEL lines with different TYPEs) becomes distinct columns rather than overwriting each other. Runs entirely on your device.
Runs on your device. The file is never uploaded.
VCF to CSV turns vCard contact cards into a table, or a table back into cards, chosen with mode, which defaults to vcf-to-csv. Columns are raw property keys with their parameters, so TEL;TYPE=CELL gets a column of its own, and a repeat gains a numbered suffix. What comes back is text on the page, with no file.
Questions
Which direction does it run?
Both, chosen by the mode setting. It defaults to vcf-to-csv, which reads a vCard file and gives you a spreadsheet-friendly table; switch it to csv-to-vcf to build contact cards from a table. Drop as many files as you like: each one is converted separately and comes back as its own result.
What are the CSV columns?
The vCard property names exactly as they appear in the file, including their parameters, so a mobile number lands under a column such as TEL;TYPE=CELL and a work number under its own column instead of overwriting it. If the same property key repeats inside one card, the repeats get a numbered suffix in parentheses, so nothing is silently lost. Every column found in any card appears in the header, and cards without it get an empty cell.
Do I get a file to download?
No, the result is text on the page with a copy button. Paste it into a spreadsheet or save it yourself with the extension you want. The copy button copies the whole result even when the preview on screen is shortened.
Why did my file get rejected?
There are four refusals, one per problem. "no VCARD entries found (expected BEGIN:VCARD / END:VCARD blocks)" means nothing in the file looked like a card. "unterminated VCARD: missing END:VCARD" means a card was left open. Going the other way, "empty CSV" and "CSV has a header row but no data rows" mean there was nothing to build cards from.
What happens converting a CSV back into vCards?
Each row becomes one card. Empty cells are skipped rather than written as blank properties, a numbered suffix in a column heading is stripped back to the plain property name, and VERSION:3.0 is added unless your CSV already has a VERSION column. Lines are joined with the carriage return and line feed pair that vCard expects.
How do I make a single contact card from scratch?
Use vCard builder instead. It takes plain fields, name, organisation, phone, email, address and a note, and writes a valid vCard 3.0 card with the escaping the format requires. This tool is for converting files you already have. Its output also feeds straight into Generate QR / barcode if you want a card someone can scan.