Skip to content
Novus Examples
vcf217 B

Multi-Value Contact - vCard 2.1

A fictional contact with repeated typed properties for testing importers that otherwise keep only the first value. This member uses vCard 2.1 syntax.

Preview — first 10 linesvcf
BEGIN:VCARD
VERSION:2.1
N:Tester;Jordan;;;
FN:Jordan Tester
EMAIL;INTERNET;HOME:jordan.home@example.com
EMAIL;INTERNET;WORK:jordan.work@example.com
TEL;CELL:+1-416-555-0142
TEL;WORK:+1-416-555-0199
END:VCARD

Specifications

Format
vCard 2.1
Contacts
1
Display Name
Jordan Tester
Fields
FN, N, EMAIL x2, TEL x2
Line Endings
CRLF

Testing contract

Expected to pass
Scenario
Import Jordan Tester from the vCard 2.1 member and compare normalized fields across the three-file group.
Expected result
Import exactly two email addresses and two telephone numbers while retaining their home, work and cell labels.

What is a .vcf file?

VCF (vCard) is a plain-text format for electronic business cards, storing contact details like names, phone numbers, emails, and addresses as property lines within BEGIN and END VCARD blocks. Multiple vCards can be concatenated in one file. It is the standard for contact exchange across devices.

How to use this file

Use an example VCF to test contact import, multi-card parsing, property and encoding handling, and interoperability between address-book applications.

How to use this file for testing

“Multi-Value Contact - vCard 2.1” is a deterministic Novus Examples fixture for Contact parsing, Conversion testing. vCard (.vcf) contact files with names, emails, phones, and addresses — for testing contact importers.

Documented properties for this file: CRLF · vCard 2.1. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Data fixtures document their exact quirks — delimiters, encodings, null handling, schema, and row counts — in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.

Code examples

import vobject  # pip install vobject

for card in vobject.readComponents(open("multi-value-vcard-2-1.vcf").read()):
    print(card.fn.value)

Generated by generation/p6_core.py. Free for any use, no attribution required — license.