Free tool
Clean your contact CSV before it damages your quality rating
Upload or paste any contact list and get back an import-ready file: every number converted to E.164, duplicates removed, invalid rows separated out with reasons. Everything runs in your browser — the file is never uploaded.
Your contact list
Applied to 10-digit and 0-prefixed numbers, e.g. 91 for India.
Your file never leaves this browser tab
Parsing, cleaning and deduplication all run on your device. There is no upload, no server and no storage — close the tab and the data is gone.
Cleaning summary
Upload or paste a contact list to see it cleaned here: every number converted to E.164 (for example +91 78801 48433 becomes +917880148433), duplicates removed and invalid rows separated out, ready to download.
- Detects the phone column automatically — override it if needed
- Keeps every other column in your file untouched
- Works entirely in your browser — nothing is uploaded
How it works
Three steps, no signup
Load your CSV
Choose a file or paste the data straight in. Exports from Excel, Google Sheets or your CRM work as-is — the tool detects the phone column automatically and lets you override it.
Review the cleaning summary
Stats show how many rows were valid, fixed, duplicated or invalid, and a preview table maps each original number to its E.164 version with the reason for any rejection.
Download the results
Grab the cleaned CSV with all original columns preserved, copy the plain list of E.164 numbers, or download the rejected rows separately to repair by hand.
Why list hygiene matters
A dirty list costs more than the cleanup
On the WhatsApp Business API, the state of your contact list feeds directly into your phone number’s quality rating. Invalid numbers inflate your failure rate, and a sustained pattern of undeliverable sends is one of the signals Meta reads as spam-like behaviour. The consequences are practical: a downgraded quality rating can shrink your messaging tier, capping how many customers you can reach in a 24-hour window just when a campaign needs volume most. Cleaning a list takes minutes; recovering a quality rating typically takes much longer, because it depends on days of healthy sending behaviour that Meta observes before restoring trust.
Deduplication belongs before import, not after. The same customer usually hides in a raw list under several spellings of one number — with a country code, with a trunk zero, as bare digits — and most platforms will happily create a contact for each variant. The result is one person receiving the same broadcast two or three times in a minute, which is precisely the experience that prompts a Block or Report tap. Because blocks and reports weigh heavily in quality scoring, a duplicate isn’t just a wasted message charge; it is an active liability. Normalising every number to a single canonical E.164 string first turns those invisible duplicates into exact matches that can be removed mechanically, which is exactly what this tool does.
The third pillar of list hygiene is consent, and it lives in your spreadsheet too. WhatsApp requires opt-in before you message a user, and the practical way to honour that is to keep the consent record alongside every contact: a column for where the opt-in was collected (website form, in-store QR, checkout checkbox), one for when, and ideally one for what the person agreed to receive. Because this tool preserves every non-phone column untouched, those consent fields travel with the cleaned file into your platform, where they matter the day a contact disputes a message or an audit asks how a number got onto your list.
- Clean and dedupe every list on the way in — never inside the platform after a broadcast has already gone out.
- Keep opt-in source and date columns in the same file as the numbers, so consent evidence is never separated from the contact.
- Re-clean anything that has passed through Excel: it strips leading zeros and can mangle long numbers into scientific notation.
- Fix the rejected rows rather than deleting them — the reject file lists the exact reason each number failed.
FAQ
Frequently asked questions
How does the tool find the phone column in my CSV?
It first scans the header row for common names — phone, mobile, whatsapp, number or contact, in any casing. If no header matches, it examines the data itself and picks the column where more than 60% of non-empty values look like phone numbers. Either way, a dropdown lets you override the choice, and the detected column is labelled so you can confirm it.
Is my contact list uploaded to a server?
No. The file is read, parsed, cleaned and de-duplicated entirely by JavaScript running in your browser tab. Nothing is sent over the network, logged or stored — you can disconnect from the internet after the page loads and the tool keeps working. The cleaned and rejected CSVs are generated locally on your device too.
What happens to the other columns in my file?
They pass through untouched. The cleaned download keeps every original column in its original order; only the phone column is replaced with the E.164 version of each number. Quoted fields, commas inside values and doubled quotes are preserved correctly, so names like "Patel, Asha" survive the round trip.
How are duplicates detected and which copy is kept?
Every number is first normalised to E.164, then compared. That means 078801 48433, +91 78801 48433 and 917880148433 all resolve to the same +917880148433 and count as one contact. When duplicates are found, the first occurrence in the file is kept and later copies are dropped from the cleaned output.
Why are some rows marked invalid, and can I recover them?
A row is rejected when its phone value is empty, contains letters or symbols after separators are stripped, or ends up outside the 8-15 digit range E.164 allows. Invalid rows are never silently deleted — the tool offers a separate reject file that includes every failed row plus a column explaining exactly why it failed, so you can fix them by hand and re-run the cleaner.
Still have questions?
Book a demoMore free tools
Keep your stack sharp
JSON Template Validator
Paste template JSON and catch structural errors before Meta review does.
Open toolWebhook Payload Formatter
Pretty-print and annotate WhatsApp webhook payloads for faster debugging.
Open toolTemplate Variable Checker
Lint {{n}} variables — gaps, duplicates and edge-position mistakes.
Open toolPhone Number Formatter
Convert phone numbers to E.164 — single numbers or whole lists.
Open toolYour list is clean — now put it to work
InfiQ imports your cleaned contacts, then runs broadcasts, chatbots and a shared team inbox on the official WhatsApp Business API. 7-day free trial, no card required.
