phone-number-extractor
A phone number extractor scans text for numeric patterns matching common telephone formats β US ((555) 123-4567), UK (+44 20 7946 0958), bare international (+1 555 123 4567), with various separators β and outputs a deduplicated list, optionally normalised to the international E.164 standard (+15551234567). The ZTools Phone Number Extractor runs entirely in the browser, supports country-aware parsing (default US; switch for UK / EU / IN / etc.), drops obvious non-phones (years, IP addresses, page numbers), and exports plain text or CSV.
Use casesβ
CRM cleanupβ
Customer notes contain phone numbers in many formats. Extractor pulls them into a normalised list for direct dial / SMS integration.
Conference / event speaker listβ
Public speaker bios with contact phones. Extract once for organiser logistics β not for marketing without consent.
Personal address-book backupβ
Email signature thread with several contact numbers. Extract for contact import.
Multi-country team directoryβ
Mixed US + UK + EU numbers. Country-aware parsing recognises all three correctly; E.164 output is unambiguous for international dialling.
How it worksβ
- Paste source text β Plain text or formatted (numbers in parentheses, dashes, dots, spaces all handled).
- Pick default country β Bare numbers without country code interpreted in this default. International (+44, +91) numbers always parse correctly regardless of default.
- Apply pattern + heuristics β Regex matches numeric patterns; heuristics drop obvious non-phones (4-digit years, IP fragments, version strings).
- Normalise to E.164 β +[country code][number] with no separators. Universal format for APIs, dialling, and storage.
- Export β Plain text or CSV. Optional second column: "raw match" alongside normalised.
Examplesβ
Input: "Call (555) 123-4567 or +44 20 7946 0958 for support"
Output: US: +15551234567; UK: +442079460958
Input: "Phone: 555.123.4567 ext 99"
Output: +15551234567 (extension dropped or kept as separate column)
Input: "Anniversary: 1985, model 4567"
Output: Heuristics drop these (years and product codes do not match phone patterns).
Frequently asked questionsβ
How does it know the country?
Numbers prefixed with + are explicit. Bare numbers fall back to your selected default. For multi-country sources, set default to most common; let + prefixes handle the rest.
What about extensions?
Detected when in standard form ("ext 123", "x123"). Stored as a separate field rather than concatenated to the number.
Will it match short codes (e.g. 911, 311)?
Disabled by default β short codes too easily collide with regular numeric data. Enable explicitly when needed.
Are non-NANP / non-EU numbers supported?
India, Australia, Japan, Brazil, and other major formats included. Niche country formats may need explicit international prefix to parse correctly.
Is the input uploaded?
No β entirely client-side. Privacy by design.
How are vanity numbers handled?
Letter-to-digit mapping (1-800-FLOWERS = 1-800-3569377) optional; default is digits-only matching.
Tipsβ
- Always normalise to E.164 for storage. Display formatting belongs in the UI; storage should be unambiguous.
- Validate extracted numbers against an SMS / voice provider's real validation API before mass-dialing β extraction does not guarantee the number is in service.
- Consent matters. Extracted numbers β permission to call or text. Local laws (TCPA, etc.) apply.
- For multi-country contact lists, store the country code separately for routing logic.
- Strip extensions for dial workflows; preserve them only when the destination supports DTMF post-dial.
Try it nowβ
The full phone-number-extractor runs in your browser at https://ztools.zaions.com/phone-number-extractor β no signup, no upload, no data leaves your device.
Last updated: 2026-05-05 Β· Author: Ahsan Mahmood Β· Edit this page on GitHub