Phone Number Extractor
Finds the numbers in whatever you paste — and tells you which dates, order numbers and card numbers it refused to call phone numbers.
Runs in your browser 0 bytes uploadedFinds the numbers in whatever you paste — and tells you which dates, order numbers and card numbers it refused to call phone numbers.
Runs in your browser 0 bytes uploadedPaste text above, or drop a file. Nothing is uploaded — the numbers are found in this tab.
Pulling addresses out of text is easy in one specific way: an address contains an at sign, and almost nothing else does. A phone number contains nothing that marks it as one. It is a run of digits with some punctuation in it, which describes the invoice number, the order reference, the date, the postcode, the router address, the book identifier and the amount on the same page.
That is the whole engineering problem here, and it runs the opposite way round from what people expect. The difficulty is not finding numbers — a generous pattern finds hundreds. The difficulty is refusing them. Run a support thread or an exported spreadsheet through a typical free extractor and you get a list where perhaps a third of the rows were never anybody's telephone.
Each of these turns up constantly, matches a naive pattern, and is thrown out here with the reason printed underneath the results:
2024-03-15 — a date. Checked properly, not by shape: the month has to
be one to twelve and the day one to thirty-one, which is why 555.010.9999
survives the same test.192.168.1.1 — a router address, with every part under 256.978-0-13-235088-4 — thirteen digits opening with 978 is a book, not a
country code.1990-2024 — a span of years, which is eight digits and a dash.4111 1111 1111 1111 — this one is worth its own note below./orders/5550109999 — the character in front of a run of digits often
settles the question. A slash, a hash, an equals sign or a currency symbol all mean
the digits belong to something else.3.14159265358979 — no part of a real number is fourteen digits long.
Japan writes four, Britain writes four, the United States writes four.The card number deserves a sentence because of how it is caught. Sixteen digits is already one more than the international standard allows, so it would be dropped on length alone — but "too long" is a true and useless thing to tell somebody. Instead the digits are run through the Luhn checksum that payment cards carry, and if they pass, the list says so. Nobody meant to paste a card number into a phone-number tool, and being told is better than being ignored.
Printing the refusals matters more than any single rule among them. Every judgement above
is a guess made on your behalf, and a guess you cannot see is a guess you cannot overrule
— so the ones that were wrong about your particular file stay invisible until somebody
downstream notices a contact is missing. The email
extractor lists its own rejections for the same reason, and there the offenders are
filenames like logo@2x.png.
This is the honest limit and it belongs near the top rather than buried in a footnote.
Deciding whether +44 20 7946 0958 is a number that could exist requires the
numbering plan of every country on earth: which prefixes are allocated, how long a
national number may run, which trunk digit is dropped when dialing in from abroad. The
library that encodes all of that is roughly 250 kB. The entire budget for everything this
page loads is 32 kB, and no amount of cleverness closes that gap.
So what is recognized is a written form. A leading plus sign means the author supplied a country code. Separators — brackets, dashes, dots, spaces — mean the author was writing a telephone number rather than an identifier. Both are claims made by the text, and both are worth trusting. Neither tells you the line is connected.
A column of unformatted numbers straight out of a database is a completely normal thing to paste, so unbroken digit runs are included. They are also counted on their own, right next to the list, because they are the one category with no evidence behind it. Ten digits with no punctuation is the shape of an order number, a customer ID and a serial number as much as a phone number, and presenting it as a contact without saying so is guessing on your behalf.
One checkbox removes the whole category when your document is mostly identifiers. The length rule is stricter for these too: a formatted local number can be seven digits, but a bare run has to reach ten before it is even considered. If your numbers arrived as one column of a spreadsheet, splitting text into columns first will usually give you a cleaner run at them.
(555) 010-9999 and 555.010.9999 are one number written by two
people, and merging them is most of the reason to run a list through anything at all. So
matching ignores the formatting entirely and compares the digits.
The exception: the same number written once with a country code and once without stays as
two entries. Folding +1 555 010 9999 onto 555-010-9999 would
mean deciding the second one is American, and that decision is not in the text. Guessing
it would be inventing information, which is the one thing a tool like this must never do.
Extensions are kept as well, held apart from the digits so the number stays dialable and
the extension is not silently glued onto the end.
No page is fetched, no site is crawled, no directory is read, and nothing installs itself into your browser — and no version of this exists that does. A large share of what the phrase "phone number extractor" refers to in search results is lead generation — building call lists out of other people's websites — and that is a different product with a different ethic, not a feature missing from this one.
It also will not tell you whether a number is a mobile, which carrier holds it, or whether anybody answers. Everything happens in this tab, which is not merely tidier: a list of phone numbers is other people's personal data that you hold on their behalf, and handing it to a free web service is a disclosure rather than a convenience. The sibling tools work the same way — the URL extractor for links, and the email extractor for addresses.
No, and no free tool that runs in a browser can. Recognizing a number requires the numbering plan for every country — which carrier prefixes exist, how long a national number may be, which trunk codes are dropped when you dial internationally. The library that encodes all of that weighs about 250 kB, and the entire budget for this page is 32 kB. So what happens here is form recognition: a country code, or enough formatting to say somebody wrote this as a telephone number. Whether it rings is a different question and this page does not pretend to answer it.
It tells you which ones and why, under the results. The usual causes are a date, an IP address, an ISBN, a range of years, an order number inside a URL path, or a bare run of digits shorter than ten. If you disagree with one of them you can see it and judge for yourself, which is the point of listing them rather than dropping them quietly.
It is included by default and counted separately, because nothing in the text says it is a phone number. 5550109999 is exactly as likely to be an order reference, and any tool that presents it as a contact without saying so is guessing on your behalf. The count sits next to the list, and one checkbox drops that whole category if your document is full of identifiers.
No. Every step runs inside the page, and there is no endpoint for the text to go to even if something wanted to send it. Why that matters is worth stating plainly rather than as a slogan: a column of phone numbers is a set of facts about people who are not you, kept because they trusted somebody with them. Handing that to a free web utility to save yourself a regex is a disclosure to a third party, and the fact that it is quick does not make it small.
On the digits. (555) 010-9999 and 555.010.9999 are one number written by two people, and merging them is the whole reason to run a list through a tool. One case is deliberately not merged: the same number written once with a country code and once without. Folding +1 555 010 9999 onto 555-010-9999 would mean assuming the second one is American, and that assumption is exactly the kind of invented information this tool avoids.