Email / URL / Phone Extractor
Pull every email, URL and phone number out of messy text — dedupe, count and copy each list, entirely on this device.
When merging duplicates, fold case — Ana@example.com and ana@example.com count as one.
Press ? for shortcuts
Do it offline:$ grep -oE '[[:alnum:]._%+-]+@[[:alnum:].-]+\.[[:alpha:]]{2,}' file.txt
How to use it
- Paste your text, or drop a .txt, .csv or .log up to 1 MB — small pastes scan live, larger ones after a short pause.
- Tick the kinds you want — Emails, URLs, Phone numbers — and set whether duplicates fold and whether case is ignored.
- Switch tabs to read each list; the header count follows whichever tab you are on.
- Copy a list, export it one-value-per-line or as value,count CSV, or share a link that reopens with the same state.
Paste messy text and this extractor pulls three things out at once: email addresses, web URLs and phone numbers. Each kind gets its own tab, copy button and running count. Turn folding off to keep every occurrence, or leave it on to collapse repeats into one counted row. Whatever you paste stays in this tab.
How it works
Emails use a loose ASCII pattern — close to what a browser email field accepts, not full RFC 5322. It wants some local characters, an at-sign, a dotted domain and a two-letter-or-longer ending. Recall wins: it grabs a@b..com and drops a trailing dot, but never confirms that mail can arrive.
A URL must start with http://, https:// or www.; a bare host like example.com is skipped, as are mailto: and tel: links. The match runs to the first space, then sheds trailing punctuation and one unbalanced closing bracket.
Phones are a heuristic. Digit runs joined by spaces, dashes, dots or parentheses — with an optional leading plus — end at a line break or a double space so numbers never merge. A run survives only with seven to fifteen digits plus a separator, a plus, or a plain ten- or eleven-digit shape.
The three scans run independently, so https://user@example.com is reported as both a URL and an email. Folding collapses identical values (case-folded for emails and URLs) into one counted row; phone numbers compare exactly and never merge.
Examples
Ping Ana@Example.com or ana@example.com for accessAna@Example.comOne address, written two ways. Folding keeps the first spelling, Ana@Example.com, with a count of 2; the lower-case twin is only counted.
Docs at https://example.com/guide). Mirror on www.example.org,https://example.com/guide
www.example.orgBoth links come out clean: the first drops its trailing period and bracket, the mirror drops its comma, and the paths are untouched.
Call +1 (415) 555-2671 before 20240215+1 (415) 555-2671The formatted number is kept verbatim. The bare 20240215 is skipped — no separator, no leading plus, and not a ten- or eleven-digit run.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
Recall beats precision
The phone gate is greedy on purpose: a lone ten-digit order number and a hyphenated date like 2024-02-15 both match. If a run is noise, switch the Phone tab off and extract again — your text is never rewritten.
A URL with a login yields its address
URL and email scans do not exclude one another, so the address inside https://user@example.com is reported on the Emails tab as well. Untick whichever list you did not want.
Numbers are copied, never reformatted
Each phone is stored as written, so (415) 555-2671 and 415-555-2671 count as two. There is no E.164 rewrite or region lookup; formatting is a separate job this page leaves alone.
Some address shapes fall outside the net
The email pattern is ASCII-only, so a quoted local part, an IP-literal domain and an internationalised or punycode host are missed or clipped. Read the result as a first pass.
Sentence punctuation goes, balanced brackets stay
A link ending a sentence loses its period or comma, and a lone dangling ) is dropped when nothing opened it — but a path ending in _(disambiguation) survives, because that bracket is balanced.
Past 1 MB the page steps back
A paste over one megabyte is declined whole rather than scanned in part, and the input pane keeps exactly what you gave it. The refusal hands you a grep one-liner for files that large.
Common errors
This tool handles up to 1 MB; beyond that, try the CLI: grep -oE '[[:alnum:]._%+-]+@[[:alnum:].-]+\.[[:alpha:]]{2,}' file.txt- One megabyte is the ceiling for in-page work. Above it the whole paste is refused rather than scanned in part, and underneath the engine answers “Input is larger than the 1 MB limit for this tool.” as plain data, never a crash.
This file doesn't look like text (NUL bytes at offset 8) — did you mean a hex viewer?- A single NUL byte within the first 8,192 bytes flags a dropped file as binary; a PNG signature hits one at byte nine, so the file is turned away and your text stays put. UTF-16 saves read as binary too — use UTF-8.
FAQ
Does this check that the email addresses are real?
No. It recognises an address by shape, not existence — there is no DNS, MX or mailbox lookup. Expect the odd false positive, such as a@b..com, and treat the output as candidates to eyeball.
Why did something that clearly is not a phone number appear?
The phone rule favours recall, so a bare ten- or eleven-digit string and a dash-separated date can both match. Untick the Phone box and the list rebuilds without them.
Does any of the text I paste leave my device?
No. Scanning happens inside this browser tab, a dropped file is read locally with no upload, and a share link carries only the toggles and text you can already see.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Run the extraction again, once a paste crosses the worker threshold.
- ⌘/Ctrl + S
- Save the active tab's list as a .txt file rather than the page.
- ⌘/Ctrl + C
- With nothing selected, copy the whole list on the current tab.
- ⌘/Ctrl + Shift + C
- Force-copy the whole active list even mid-selection.
- t
- Flip between light and dark — idle while the cursor is in the text box.
- ? or ⌘/Ctrl + /
- Bring this shortcut reference up in a dialog.
- Esc
- Close the frontmost dialog and leave whatever you pasted alone.