A careful move for your address book / KitForma

Convert, review and merge vCard and CSV contacts locally

Move contact files with their names, labels and extra numbers intact. Inspect the data, decide what to merge, and keep an original-source archive alongside your new export.

No account neededRuns in your browserFree to use
Contact WorkbenchLOCAL WORKSPACE
Choose · review · download
From question to next step

Contact Workbench

Run either example to try real decoding, mapping, merging and exports. Changing the top-level input starts a new review; download your archive before resetting.

Supported scope: Up to 20 vCard files, 8 MiB combined, 5,000 contacts, 100,000 total properties, 256 properties/contact and 1 MiB/embedded attachment. One UTF-8 CSV: 100 columns, 300,000 cells. Supported vCard 2.1 quoted-printable/declared character sets, UTF-8 vCard 3/4 and base64 media. Output archive up to 32 MiB. This is a bounded file reader/converter, not complete validation of every vCard extension or destination importer.

Your contact source

Required fields are marked with an asterisk.

01

Select multiple VCFs or one CSV. No files are uploaded.

Paste complete BEGIN:VCARD … END:VCARD records. Use a file for legacy non-UTF-8 byte encodings.

Loading the local tool… Your files stay in this browser.

Contact review and export

Review your output, then save it to your device.

02

Make the next step clear.

Your findings, assumptions and next steps will appear here after you run the check.

Contact Workbench · https://contacts.kitforma.com/ · KitForma

01

Review every merge

02

Keep repeated contact fields

03

See export changes before import

Good questions

Before you start

Are my contacts uploaded or connected to Google, Outlook or iCloud?

No. The tool reads local files, keeps the working data only in this page’s memory, and creates downloads on your device. It does not sign into providers, update an address book or fetch linked photos. You import the reviewed file yourself.

Can it read old vCard 2.1 files with broken-looking accents?

It decodes supported 2.1 quoted-printable values and explicit UTF-8, ISO-8859-1, Windows-1252, Windows-1254, ASCII or Shift-JIS character sets. Unsupported or invalid encodings are refused instead of guessed. Paste mode is UTF-8; use the original file for legacy byte encodings.

Will two people with the same name be merged?

No. Names alone do not generate suggestions. Shared email or phone keys produce review pairs, and you must select records and a primary contact before merging. Shared family phones or team inboxes can still refer to different people. Nothing merges automatically.

What happens to conflicting names, birthdays and custom fields?

The selected primary record supplies single-value fields. Conflicting alternatives remain in review JSON and original source files inside the ZIP. Repeated phones, emails, addresses and notes remain separate. Unsupported export fields or parameter changes appear in the loss ledger.

Why does the spreadsheet-safe CSV add apostrophes to phone numbers?

A spreadsheet may treat a leading plus, minus, equals sign or @ as an executable formula. Protection prefixes such cells with an apostrophe, including international phones. For direct contact import choose vCard or explicitly disable CSV protection. Disabling it retains exact text but is unsuitable for opening untrusted CSV cells in a spreadsheet.

Are contact photos and labels preserved?

Supported base64 photos remain embedded in vCard exports and are extracted as files in the ZIP. Remote photo URLs remain text and are never downloaded. Grouped vCard labels and repeated values remain in the canonical JSON. Provider CSV profiles can omit photos or flatten labels; the export ledger identifies those changes.

The evidence behind the check

Sources & assumptions

Formats, algorithms and supported features are documented below. Check the stated scope and inspect your output before using it.

Reviewed 2026-10-18. Read our methodology or report an issue.

Essential local storage remembers this choice for up to 180 days. Your choice applies to this subdomain. Global Privacy Control and Do Not Track override optional measurement.

Advertising has a separate choice. Use Advertising preferences in the footer to allow or reject the optional guide-page banner.