Neatbo.

CSV ↔ vCard contact migration

Map contact columns locally, preserve repeated fields and structured values, and export editable CSV or UTF-8 vCard 3.0 with a complete sidecar.

Browser-local processingInputUTF-8 CSV / vCard 3.0OutputvCard / editable CSV + records + reportUp to 2 MiB per file · File limit: 1
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop it here

Files stay on this device. Your originals stay unchanged.

.csv · .vcf

Up to 2 MiB per file · File limit: 1

    0 characters · 0 bytes
    Options

    Complete the required options first. You can keep the defaults for the rest.

    Zero-based column; FN/N/TEL/EMAIL/ORG/TITLE/ADR/URL/NOTE. Text, component list or full records.

    Preparing the tool…

    Before you start

    Choose the direction, delimiter and explicit name/column rules before moving contact records.

    How to use this tool

    1. Select the original file and direction.
    2. Map physical columns and choose an explicit FN rule.
    3. Convert, review sidecar warnings and all download files.
    4. Import a copy into the receiving application and inspect repeated values.

    Supported inputs and limits

    Paste text or select one UTF-8 CSV/vCard file up to 2 MiB. A selected file takes priority. Filename: 512 UTF-8 bytes; MIME label: 256 bytes. One initial UTF-8 BOM is recorded and removed from parsed content.

    vCard 3.0 only: FN, N, TEL, EMAIL, ORG, TITLE, ADR, URL and NOTE. Preserve repeated occurrences, structured component lists, TYPE, LANGUAGE and groups. Require nonempty FN and an N property; reject wrong versions, encoding/CHARSET parameters, malformed syntax or missing names.

    Choose comma, semicolon or tab explicitly. At most 128 CSV columns and 10,000 contacts. Map zero-based physical column indices, including empty or duplicate headers. Each CSV cell and decoded component allows 65,536 UTF-8 bytes; mapping JSON allows 32 KiB.

    At most 100,000 supported properties, 250 per contact, 128 component multivalues, 128 organization components and 150,000 nonempty vCard logical lines. Editable export allows 256 columns. Complete delivered files together allow 16 MiB. Refusal returns no partial contacts.

    Unmapped CSV columns and unsupported vCard properties go to the complete report by default; select reject to refuse instead. NICKNAME, BDAY, ROLE, X-properties and PHOTO remain in this sidecar and original, not in the core migrated payload. No photo or URL is fetched.

    contacts.csv is an editable text-column export. Repeated fields get numbered columns. Component multivalues are joined for editing; exact component arrays, all parameters and groups remain in contacts.json and roundtrip.csv. Use records mapping on roundtrip.csv for faithful reimport; ordinary CSV client templates still need their own column mapping.

    CRLF inside mapped text normalizes to LF. vCard output uses CRLF and folds at 75 UTF-8 bytes without splitting a character. TEL containing backslashes or newlines and URL containing whitespace or backslashes reject. Empty scalar CSV cells omit that property; explicit records can preserve empty values.

    The preview shows 4,000 Unicode codepoints. Copy and downloads keep complete output. A whole-run 10-second deadline starts before engine loading and covers worker readiness, file reading and processing. Cancellation destroys the worker; rerun with the same retained File and parameters. Inputs stay in this browser.

    Worked example

    Example input

    "Vorname";"Nachname";"Firma";"Tel";"Mobil";"Land";"Kundennummer";
    "Max";"Mustermann";;"+4912345678";;"Deutschland";"1234";
    
    Example options
    delimiter=; fnRule=given-family; explicit physical column mapping

    Example output

    FN:Max Mustermann
    N:Mustermann;Max;;;
    TEL;TYPE=HOME,VOICE:+4912345678
    Sidecar: Kundennummer=1234, empty column 7

    When something does not work

    Correct mapping/encoding or reduce over-budget records, then rerun with the retained original file. No partial output survives cancellation.

    Frequently asked questions

    Why are fields in the report?

    Unmapped CSV columns and unsupported vCard properties go to the complete report by default; select reject to refuse instead. NICKNAME, BDAY, ROLE, X-properties and PHOTO remain in this sidecar and original, not in the core migrated payload. No photo or URL is fetched.

    Can I round-trip repeated fields?

    contacts.csv is an editable text-column export. Repeated fields get numbered columns. Component multivalues are joined for editing; exact component arrays, all parameters and groups remain in contacts.json and roundtrip.csv. Use records mapping on roundtrip.csv for faithful reimport; ordinary CSV client templates still need their own column mapping.

    Related tools