Importing a CSV into your address book sounds like a five-minute job. Pick the file, click Import, done. In practice it goes wrong more often than it goes right. People upload a file, watch Google Contacts say imported 247 contacts, then open the contacts and find every name, number and email crammed into a single field called Notes.
That happens because the system does not read your file the way you think it does. It looks for specific column headers and silently gives up when they are not there. This post covers the actual rules. The exact headers Google wants, the iPhone limitation nobody mentions and the encoding problem that ruins half of all Hindi contact lists.
Where you can import a CSV and where you cannot
Three big address books accept CSV imports. One does not.
| Platform | Accepts CSV? |
|---|---|
| Google Contacts | Yes, with strict column header rules |
| Outlook (desktop and web) | Yes, uses its own column names |
| Mac Contacts app | Yes, will ask you to map columns |
| iPhone iOS Contacts | No. Needs vCard only. Convert CSV first. |
iPhone is the odd one out. iCloud.com and the iOS Contacts app only accept vCard (.vcf) files. You cannot upload a CSV directly. To get a CSV onto an iPhone, you import it into Google Contacts or Outlook first, then export the result as a vCard, then upload that vCard to iCloud. The contacts sync to the phone over the next few minutes. For the vCard side of that workflow, our earlier guide on creating a VCF file of contacts covers the syntax and the rules.
The Google Contacts header trap
This is the single biggest reason CSV imports fail. Google Contacts does not guess at your column names. It looks for an exact set of headers. If your headers do not match, every cell in that row goes into the Notes field as one long string and your contact has no phone, no email, no nothing useful.
Here are the headers Google actually expects, taken from the official export template:
| Header | What it maps to |
|---|---|
| Name | The display name shown in the contact card |
| Given Name | First name |
| Family Name | Last name |
| E-mail 1 - Value | Primary email address |
| E-mail 1 - Type | Home, Work, Other |
| Phone 1 - Value | Primary phone number |
| Phone 1 - Type | Mobile, Home, Work, Other |
| Organization 1 - Name | Company name |
| Address 1 - Formatted | Single line address |
If you write First Name instead of Given Name, Google ignores the column. If you write Mobile instead of Phone 1 - Value, same result. The naming is fussy and the failure is silent. No error, no warning, just bad data.
Step by step: import a CSV into Google Contacts
- Open your spreadsheet in Excel or Google Sheets. Make sure row 1 has the correct Google column headers from the table above.
- Save the file as CSV. In Excel use Save As and pick CSV UTF-8 (Comma delimited). Plain CSV will mangle accented or Hindi characters.
- Go to contacts.google.com and sign in.
- Click Import on the left sidebar.
- Click Select file, pick your CSV, click Import.
- Google adds the import to a new label called Imported on [date]. Click that label and check a few contacts before doing anything else.
If the test contacts look right, you are done. If they look wrong, do not start fixing them one by one. Delete the import label entirely (this removes the imported contacts but not your original ones), fix your CSV headers and run the import again.
Step by step: import a CSV into Outlook
Outlook uses different column header names than Google. The expected names are First Name, Last Name, E-mail Address, Business Phone, Mobile Phone, Home Address and so on. Microsoft's official import guide lists every accepted header if you need the full reference.
For classic Outlook on the desktop:
- Open Outlook, go to File > Open & Export > Import/Export.
- Pick Import from another program or file, click Next.
- Pick Comma Separated Values, click Next.
- Browse to your CSV, decide whether to allow duplicates or not, click Next.
- Pick the destination Contacts folder. If you have multiple email accounts in Outlook, pick the right one.
- On the mapping screen, drag column names from the left onto Outlook field names on the right. This is your safety net. Even if your headers are slightly wrong, you can manually map them here.
- Click Finish.
New Outlook on Windows and Outlook on the web have a simpler flow. Go to the People section, click Import contacts, pick your file, done. They still require UTF-8 encoding, so save the CSV correctly before uploading.
The encoding trap that ruins Hindi names
Excel on Windows saves CSVs in ANSI encoding by default. ANSI is a single byte format that covers basic English letters and a handful of European accented characters. It cannot represent Hindi, Arabic, Chinese, Japanese or anything outside basic Latin. If your contact list has any non-Latin names and you save the file with the regular CSV option, those names land in Google Contacts as garbage characters or question marks.
Fix it by explicitly picking CSV UTF-8 (Comma delimited) in Excel's Save As dialog. That option appeared in Excel 2016 and is in every version since. If you are stuck on an older Excel, use Google Sheets instead. Google Sheets exports CSVs as UTF-8 by default, no setting to change.
Silent limits you should know
- 3,000 contacts per import. Google rejects files larger than this with no clear error. Split your CSV into chunks of 3,000 rows or fewer.
- 25,000 total contacts per Google account. Cap on the entire account, not per import. Above this, new imports fail.
- One label per import. Every import creates a single new label. Multiple imports into the same label require manual labeling after the fact.
- Outlook has no hard limit but local PST files slow down noticeably above 20,000 contacts.
What to check when the import goes wrong
| Symptom | Cause and fix |
|---|---|
| Everything is in the Notes field | Column headers do not match Google's template. Rename them and re-import. Delete the failed import first. |
| Names show as ??? or strange symbols | File was saved as ANSI, not UTF-8. Open in Excel, Save As, pick CSV UTF-8. |
| Phone numbers have lost the leading zero | Excel auto-formatted the column as Number. Format the phone column as Text before saving or prefix each number with a single quote. |
| Some contacts imported, others did not | Those rows had a comma or quote inside a value that broke the CSV. Open the file in a text editor and escape the offending characters. |
| Import button does nothing | File is over 3,000 rows. Split it and retry. |
Getting from CSV to iPhone
Since iPhone refuses CSV files outright, the path is always indirect:
- Import your CSV into Google Contacts using the steps above.
- Check the imported label looks right.
- Click Export in the left sidebar.
- Pick vCard (for iOS Contacts) as the format.
- Download the .vcf file.
- Go to iCloud.com, open Contacts, click the gear icon, pick Import vCard and upload the file.
- Your iPhone syncs the new contacts within a few minutes if iCloud Contacts is on.
The conversion through Google is the cleanest method I have found. iCloud has no CSV importer of its own and Apple has shown no signs of adding one. vCard is the only path in.
The 5 minute test that saves an hour of cleanup
Before you import 500 contacts, import three. Pick three random rows from your CSV, save them as a test file, run the import. Open the resulting contacts and check every field. If the test contacts are clean, the rest will be too. If they are not, you have saved yourself an hour of deletion and a label full of broken data.