Skip to content
BulkNumberChecker

CSV Bulk Validation: Format Your Phone Number List the Right Way

Most failed bulk validations are not API problems. They are CSV problems. Numbers that lost their country code in Excel, rows wrapped in double quotes, phantom Unicode spaces from a copy-paste out of a PDF. This guide walks through the exact format that parses cleanly every time, and how to fix the files that do not.

The minimal valid CSV

The simplest CSV BulkNumberChecker accepts is a single column of phone numbers in E.164 format. No header row is required, but one is fine. Here is what a clean file looks like:

That is it. One column, one number per row, each starting with a plus sign followed by the country code and the national number with no spaces, dashes, or parentheses. This is the E.164 standard, and it is the only format you can trust to work across every country.

What E.164 actually means

E.164 is the ITU standard for international phone numbers. It has three rules:

  • Leads with a plus sign.
  • Followed by the country code (1 to 3 digits).
  • Followed by the subscriber number. Maximum total length is 15 digits excluding the plus.

No leading zeros on the national part. No separators. A US number written as (415) 555-0100 becomes +14155550100. A UK number written as 020 7183 8750 becomes +442071838750, because the leading 0 on 020 is a national trunk prefix that gets replaced by the country code 44.

The bad CSV hall of fame

Here is what we see break parsing every single week:

phone
"4155550100"
(415) 555-0100
 +442071838750
+55 11 99876 5432
081234567890
+1.415.555.0100
+1-415-555-0100;extra

What is wrong here

  • Quoted numbers:"4155550100" parses as a string with no country code. Drop the quotes. Strip country code assumption and validation will still fail.
  • Formatted US style: (415) 555-0100 has parentheses, a space, and a dash. All three need to go, and the country code 1 is missing.
  • Leading whitespace:" +442071838750" starts with a space. Most parsers trim, but if the number is inside a quoted field the space survives.
  • Internal spaces: +55 11 99876 5432 is valid if spaces are stripped, but some CSV readers interpret the spaces as part of the field. Strip them at source.
  • No country code: 081234567890 is an Indonesian national format. Without the +62, we cannot route it.
  • Dotted or dashed international: +1.415.555.0100 should be +14155550100. Dots and dashes are not E.164.
  • Extension suffixes: +1-415-555-0100;extra is not a WhatsApp-eligible number. Strip extensions entirely.

Exporting cleanly from Excel

Excel is the usual source of broken CSVs. It does three things you need to watch for:

  1. Strips leading plus signs. Excel sees +1415... as a formula error. Fix: format the column as Text before pasting numbers, or prefix with a single apostrophe (Excel hides it on display but preserves the plus on CSV export).
  2. Converts long numbers to scientific notation.14155550100 becomes 1.41556E+10 and then exports as 14155600000, rounding off the subscriber digits. Same fix: Text format on the column, always.
  3. Uses locale separators. European Excel exports with semicolons instead of commas. Use File, Save As, and choose CSV UTF-8 (Comma delimited).

The safe export routine: select the phone column, right-click, Format Cells, Text. Paste or type numbers. File, Save As, CSV UTF-8. Open the resulting file in a plain text editor to confirm the plus signs are intact and separators are commas.

Google Sheets and Numbers

Google Sheets is slightly friendlier. It preserves the plus sign if you format the column as Plain Text before entering data. File, Download, Comma-separated values gives you a clean UTF-8 CSV with comma separators regardless of locale.

Apple Numbers has a habit of inserting a BOM (byte order mark) at the start of exported CSVs. BulkNumberChecker handles BOM transparently, but if you are piping through another tool first, strip it.

How BulkNumberChecker parses your file

When you drop a CSV into the upload area, the parser runs these steps in order:

  1. Detects and strips UTF-8 BOM.
  2. Auto-detects separator (comma, semicolon, tab).
  3. Treats the first row as a header if it contains non-digit text.
  4. Uses the first column only. Other columns are preserved but not validated.
  5. Strips whitespace, parentheses, dashes, and dots from each number, then checks for a leading plus.
  6. Rejects rows that do not match the E.164 pattern after cleaning.
  7. Deduplicates the remaining numbers before hitting the validation queue.

Rejected rows show up in the UI with the original value and the reason, so you can fix the source file and re-upload. We cap batches at 1,000 numbers per run to keep validation fast and the queue moving.

One more thing: keep a backup

Always keep the pre-clean source. If a validation run returns unexpected failure rates, the first debugging step is comparing the raw source to what the parser actually saw. A diff between those two files finds 90 percent of format problems in under a minute.

Start Validating Now

Free forever. No signup. Upload CSV and go.