Validate phone numbers in bulk, free
A free bulk phone list cleaner that runs in your browser. Normalise to E.164, remove duplicates, flag numbers that cannot exist and split by country — on a list of any size, without uploading it anywhere.
Your file never leaves this page
Everything runs in your browser. No upload, no server, no account, and no limit on file size beyond what your own machine can hold.
Check it yourself Open developer tools, watch the Network tab, then load a file. You will see no request.
Drop a CSV or .txt file here
or click to choose · nothing is uploaded
Preview
This is what the download contains. Nothing here has been sent anywhere, and nothing is stored when you close the tab.
By country
What this page cannot tell you
Deduplication, E.164 formatting and invalid-number detection need no numbering data, which is why they can run here. Line type, carrier and whether a block was ever allocated need the full numbering-plan database — 1.8 million blocks — and that runs in the desktop app, also entirely on your own machine. On a typical bought or scraped list that second pass is where most of the dead weight is found.
Try it free on 50,000 numbersWhat this bulk phone list cleaner does to your list
Four passes, in this order, because the order changes the answer.
1. Format phone numbers to E.164
E.164 is the international standard that gives every number on earth one canonical written
form: a plus sign, a country code, then the national number, no spaces, brackets or
dashes. (555) 123-4567, 555.123.4567 and
+1 555 123 4567 are the same number written three ways, and only one of them
deduplicates correctly.
Formatting runs first for exactly that reason. Deduplicating a raw list removes the obvious repeats and leaves the same number sitting in the file three more times under three different spellings. What E.164 is, and why your list probably is not in it covers the rule and the traps.
2. Remove duplicates
Once every row is in one canonical form, duplicates are exact string matches and removal is unambiguous. On bought or merged lists this routinely takes out a tenth of the file before anything else has happened.
3. Flag numbers that cannot be valid
A number whose length is wrong for its country, or whose national prefix does not exist, cannot ring. Those are marked invalid here and the verdict is reliable, because it is arithmetic on the numbering plan rather than a guess.
What this page cannot do is check whether an otherwise well-formed number sits in an allocated block. That needs the full numbering table, which is too large to ship to a browser. It is the second pass, and it is where most of the dead weight on a scraped list actually is.
4. Split by country
Country is derived from the dialling code by longest-prefix match, so shared codes resolve correctly — +1 separates the US from Canada and the Caribbean rather than collapsing them into "North America". Useful when your sending rates, consent rules or compliance obligations differ by territory.
Why it runs in your browser
Every hosted validator asks you to upload the list. For an agency handling a client's customer data under a DPA, or anyone inside GDPR, that upload is the problem — it is a transfer to a third party, and it needs a legal basis, a processor agreement and a retention answer.
This page makes no network request with your data. The file is read by JavaScript in your own tab, processed in memory, and written back out as a download. There is no upload, no server-side copy, and nothing to delete afterwards. You can confirm it: open your browser's network tab and run a file through.
The honest cost of that design is the one stated above — no carrier, no line type, no allocation check, because those need a database this page cannot carry. The single-number lookup does query an API and returns all three.
National formats, and the traps in them
Formatting to E.164 is easy when every row already carries a dialling code. Most real lists do not, and the failures cluster in a few predictable places.
Trunk prefixes
Many countries write a domestic number with a leading digit that is dropped when dialling
internationally. The UK writes 07700 900123 but the number is
+44 7700 900123 — the leading zero goes. France, Germany, Italy, Australia,
New Zealand and South Africa all do something similar, and Italy is the well-known
exception where the zero is kept.
Keeping a trunk prefix that should have been dropped produces a number one digit too long that still looks plausible. That is worse than an obvious error, because it survives a glance and fails at the carrier.
Numbers that carry their own country code without a plus
A row reading 447700900123 is a UK mobile with its country code and no plus
sign. A naive parser treats it as a 12-digit national number and calls it invalid. This
tool tests whether stripping a leading country code yields a valid national length before
rejecting anything.
011 is not a universal international prefix
011 is the international dialling prefix in North America specifically. In
Argentina, 011 is the area code for Buenos Aires. Treating it as an IDD code
everywhere silently moves numbers to the wrong country — the sort of error that shows up
months later as unexplained delivery failures on one segment of a list.
Extensions and free text
Rows like 555-0100 ext. 22 or call after 6pm are common in
exported CRM data. An extension is not part of the dialable number and is separated; free
text yields no number and is marked invalid rather than repaired. Repairing transport
damage is one thing, inventing digits is another, and invalid has to keep meaning
invalid.
Getting a list into a CRM without it being rejected
Most import failures are format failures, not data failures. Klaviyo, HubSpot, Attentive and Twilio all expect E.164 and reject rows that are not in it — often silently, or with a row count that does not match what you uploaded.
Running a list through this page first turns that into a non-event: every surviving row is already in the form the importer wants. If your import has been rejecting numbers, why Klaviyo rejects phone numbers walks through the specific causes.
Spreadsheets are the other common source. Excel silently strips leading
zeros and converts long numbers to scientific notation, so a UK mobile that left your CRM
as 07700900123 can arrive as 7.7009E+09. Import the column as
text, or export straight to CSV and bring that here.
What bulk validation costs everywhere else
Every other bulk phone validator we could find is hosted and metered. The list goes to their servers, and the meter runs per number or per month. Prices read off each vendor's own page in October 2026:
Veriphone
From $0.25 per 1,000 for numbering-plan validation. Live carrier lookup is a
separate product at $2.50 per 1,000.ClearoutPhone
Subscription, from $23.16 a month at the entry tier and up to $4,600 a month.Landline Remover
Credits at $0.0019 each, sold in packs from $20 to $2,000.Twilio Lookup
$0.008 per request for Line Type Intelligence (checked September 2026).The per-number figures are the ones worth doing arithmetic on, because they recur. At $0.005 a lookup — roughly the middle of that range — a single pass over a million-row list is about $5,000, and re-running it next quarter costs that again. At Twilio's $0.008 the same pass is $8,000.
This page charges nothing for the format, duplicate and plausibility passes, however long the list is, because the work happens on your computer. What it costs to buy that per-lookup instead is worked through in what phone validation actually costs. The desktop app adds the allocation check against 1.88 million blocks for $29 once, with no per-number fee on any run after the first.
The honest caveat: a metered API and an offline check are not the same product. A paid live lookup can tell you which network serves a number today, including after it has been ported. Allocation data cannot — it reports the carrier the block was originally issued to. What the local pass does is remove the numbers that cannot ring before you pay anyone per lookup on the rest.
Common questions
Is there a free bulk phone list cleaner that does not upload my file?
This one. Every pass — formatting, deduplication, the plausibility check and the split by country — runs inside your browser tab. The page makes no network call of any kind, so the file cannot leave your machine even if you wanted it to. For a fully offline bulk phone list cleaner that also checks numbers against 1.88 million allocated blocks, that is the desktop app, which needs no internet connection at all once installed.
Is this phone validator really free?
Yes, with no account and no limit on list size. It costs us nothing to run because it runs on your machine, not ours. There is no upload to pay for and no per-lookup fee to pass on.
How do I format a list of phone numbers to E.164?
Drop the file above and the formatting pass does it. Every number gets a plus sign, its country code and the national number, with separators removed and trunk prefixes handled per country. Pick a default country if your list is local-format and has no dialling codes.
Does it work on a CSV with other columns?
Yes. The phone column is detected from the contents rather than the header name, and the preview shows which column was picked before anything is processed. Plain one-number-per-line text files work too.
How many numbers can it handle?
Any size your browser has memory for; lists in the hundreds of thousands are fine. For millions, the desktop app does the same work plus the allocation check at around 47,000 numbers a second on a mid-range Windows laptop.
Will it tell me whether a number is mobile or landline?
Not on this page — that needs the numbering-plan database. Use the free lookup for one number, or the desktop app for a whole file.
How can I verify a phone number for free online?
For format and plausibility, this page: paste or drop a list, and every number is checked against its country's numbering rules in your browser. What no free tool can do is confirm a line is live — that requires a paid query against the network, and any free service claiming to confirm a number is in service is inferring it.
How do I know whether a phone number is legitimate?
Split the question in two. Whether the number could exist is answerable offline and reliably: numbers outside an allocated block cannot ring, and this page flags them. Whether the number belongs to the person who gave it to you is a different question, and nothing in a numbering plan answers it.
Does invalid mean the number is disconnected?
No. Invalid means the number cannot exist under its country's numbering rules. A number can be perfectly valid and still be disconnected, unanswered or reassigned — nothing offline can establish that, and anything claiming to is guessing.
Ready to do this to millions?
The desktop app runs all four passes plus the allocation check against 1.88 million blocks, entirely offline. One purchase, no per-number fee, re-run as often as you like.