Bulk Phone Normalizer

How to Clean Phone Numbers in a CSV Before Import

This page walks through the exact workflow used by the Bulk Phone Normalizer to clean a messy CSV phone column before CRM, dialer, or API import. It explains what happens after you use the tool on the homepage: safe rows are converted to E.164, and risky rows are separated instead of guessed.

Quick answer

Upload your CSV export, choose the phone column and country column, add country context for local numbers, review Valid, Invalid, and Needs Review rows, then download a cleaned CSV for import plus a separate needs-review CSV for rows that need manual attention.

Step 1: Upload Your CSV Export

Drag and drop your file into the Bulk Phone Normalizer tool, or click "Select File" to browse. The file is processed locally in your browser using JavaScript, with no server upload and no CSV retention.

The tool accepts .csv files. If your data is in Excel or Numbers, export it as CSV first so the phone column and the rest of your row data stay intact during processing.

Step 2: Choose the Phone Column and Country Column

After upload, you will see a dropdown list of your CSV headers. Select which column contains the phone numbers. If your file includes a country column (for example, country name or ISO code), map that too so the tool can apply country context row by row.

Step 3: Add Country Context for Local Numbers

Many CSVs contain local-format numbers like "07700 900077" or "415-555-0198" that do not include a country code. To convert these safely, you must tell the tool which country to assume. If you need a refresher first, read what E.164 format means.

  • Default country fallback: Applied to any row that does not have a per-row country value.
  • Per-row country column: If your CSV has a country column (for example, "US" or "GB"), the tool reads it row by row. This is the safest way to handle mixed-country CSVs.
  • Numbers starting with "+": These are already international and are parsed directly, regardless of country settings.
  • Numbers starting with "00": The tool normalizes the "00" prefix to "+" before parsing.

Step 4: Review Valid, Invalid, and Needs-Review Rows

Click "Normalize Phone Numbers". Every row is classified into one of three statuses so you can decide what is ready for import and what still needs manual cleanup:

Valid

The number was successfully parsed and converted to E.164 format (e.g. +14155552671). These rows are ready for CRM import.

Invalid

The number is structurally incorrect — too short, too long, or a combination that does not correspond to a real phone number.

Needs Review

The cell contained something the tool cannot confidently normalize: multiple numbers, an extension, extra text, or missing country context.

Why rows are separated instead of guessed

The tool is intentionally conservative. When a phone cell includes missing country context, multiple numbers, an extension, or extra notes, it is safer to send that row to review than pretend it is import-ready.

  • Empty phone cell — the phone field was blank.
  • Too short — fewer than 7 digits after stripping formatting.
  • Too long — more than 15 digits (E.164 maximum).
  • Missing country context — a local number with no country column value and no default country set.
  • Ambiguous local number — a short local-format number was found without enough country context to normalize safely.
  • Extension detected — the cell contains "ext", "x123", or similar.
  • Multiple numbers in one cell — the cell contains commas or semicolons between what appear to be numbers.
  • Extra text / notes in the cell — non-numeric notes or labels are mixed into the phone field.
  • Invalid number — the number structure does not correspond to any valid international numbering plan.

Step 5: Download the Cleaned CSV and Needs-Review CSV

After processing, you get two output files:

  • Cleaned CSV — valid rows only, with the phone column replaced by the E.164 value and phone_status plus phone_reason columns appended. This is the file intended for import.
  • Needs-Review CSV — invalid and needs-review rows only, with the original phone preserved and original_phone, phone_status, and phone_reason columns appended. Use this file for manual cleanup before a later import attempt.

All other columns from your original CSV are preserved unchanged in both output files. You can test this first with the sample CSV, or review common edge cases in the FAQ.

More resources

Browse the Resources hub, review what E.164 format means, test the workflow with the sample CSV, or check the FAQ.