Skip to content
TextLab

Free bulk email extractor

Email extractor for a whole list at once

TextLab's email extractor pulls every address out of whatever you paste — a mailbox export, a copied directory page, a spreadsheet column, raw HTML — merges the duplicates and hands back a clean list. Free, no signup, no ceiling: 5 MB of text holding 48,000 addresses is sorted in about a tenth of a second. Every domain is counted as it goes, so you can untick gmail.com or keep only the .edu addresses before you copy the list out as lines, commas, semicolons or CSV.

  • 100% free
  • No signup
  • No address limit
  • Duplicates merged
  • Grouped by domain
0addresses0 found · 0 duplicates merged · 0 domains
Untick a domain above to hold its addresses back.

How to extract a list of email addresses

Three steps, and the first count lands before the paste has finished scrolling.

  1. Drop the whole blob in, however untidy

    Paste the mailbox export, the copied directory page, the spreadsheet column or the raw HTML — nothing needs cleaning up first, because everything between the addresses is ignored. A ⌘V — Ctrl+V on Windows — with this page in front of you loads the clipboard straight in, no click needed. The count above the box moves as the paste lands.

  2. Work through the domain table

    Every domain in the paste is listed with how many addresses it holds and what share of the list that is, commonest first. Untick a domain and its addresses drop out of the result; Drop personal mailboxes unticks gmail.com, yahoo.com, icloud.com and twenty-four other consumer providers in one click, which is usually the first thing a B2B list needs. Type into the narrowing box to find .edu or .co.uk in a table of hundreds.

  3. Pick the shape your next tool wants

    One per line suits a mail-merge column, comma separated suits a Bcc field, semicolons are what Outlook expects, and the CSV option adds the domain and the number of times each address turned up. Copy puts it on the clipboard; Download writes email-list.txt or email-list.csv, quoting any field that contains a comma.

Technical specifications

What it recognisesWell-formed addresses only: letters, digits and ! # $ % & ' * + - / = ? ^ _ ` { | } ~ before the @, dot-separated labels after it, and an all-letter ending of 2 to 63 characters
Duplicate handlingMerged case-insensitively, keeping the first spelling that appeared; the number of times each address turned up survives into the CSV export
Domain tableEvery domain with its address count and its share of the list, commonest first, plus a one-click drop for 27 consumer mail providers
Output shapesOne per line, comma separated, semicolon separated for Outlook, or CSV with address, domain and times seen
Measured speed5 MB of text holding 48,309 addresses: 46 ms to scan, 104 ms to finish de-duplicating and grouping into 700 domains on an Apple M-series laptop
Downloadsemail-list.txt or email-list.csv, UTF-8, single newline between rows, RFC 4180 quoting on any field containing a comma or a quote
Where the list is builtEntirely inside this browser tab — the paste is never uploaded, and the domains you untick are not remembered between visits
PriceFree, with no signup, no address cap and no limit on how many pastes you run

Frequently asked questions

How many addresses can I paste in at once?

There is no limit, and no daily quota either. A 5 MB paste holding 48,309 addresses is read, de-duplicated down to its 35,000 distinct ones and sorted into 700 domains in about a tenth of a second on an Apple M-series laptop. The work is one linear scan, so twice the text takes twice the time and never more — the practical ceiling is how much your browser will let you put in a text box, not anything this page imposes.

Does sales+q3@acme.com count as the same person as sales@acme.com?

Only if you tick Merge +tags, and off by default they are kept apart. Everything after a plus sign in the mailbox is a label the recipient chose, so both really do reach the same inbox at Gmail, Outlook, Fastmail and iCloud — but a few smaller hosts treat the whole string as one mailbox name, and a signup form that recorded the tag may reject the untagged version. Merge them when you are counting people, keep them apart when you are writing to the address they gave you.

Can it pull addresses out of HTML I copied from a web page?

Yes, and it will find them twice over in most pages — once in the mailto: link and once in the visible link text — which is precisely what the duplicate merge is for. Tags, attributes, inline styles and JavaScript are simply skipped, because the scan looks for the shape of an address rather than for anything around it. The one thing it cannot see is an address published as a picture, which is why some sites publish them that way.

Why is my finished list shorter than the number of addresses I could see?

Three things shorten it, and the header line above the box tells you how much each took. Duplicates are merged into one entry, unticked domains are held back, and anything that is not a well-formed address never enters in the first place. If the source writes addresses as name (at) domain dot com, none of them will appear here at all — that shape is read by the sibling tool for scrambled text, not by this one.

Are addresses treated as case-sensitive?

No — two spellings that differ only in capitals are merged into one entry, and Lowercase every address makes the whole list agree. Strictly, the standard leaves the mailbox part of an address to be interpreted by the receiving server and says it may be case-sensitive, while the domain never is. In practice every major provider folds case, so merging is the right call for list building; the one place it can bite is a corporate mail system old enough to still honour the letter of the specification.

Can I keep only the addresses from one domain?

Untick all, then tick the single domain you want. The result rebuilds instantly, the header shows how many addresses are being held back, and the order setting decides whether they come out in the order they appeared, alphabetically, or grouped so that everyone at the same company sits together.

Two addresses, one inbox: what de-duplicating really involves

A list scraped out of a thread is never as long as it looks. The same person signs off five times, appears once in a mailto: link and once as visible text, and turns up again in a forwarded quote — so merging duplicates typically takes a third off the raw count before anything else happens. What the merge cannot see is the harder duplication: two genuinely different strings that arrive in the same inbox. Everything after a plus sign is a label the recipient invented, so sales+q3@acme.com and sales@acme.com are one mailbox at every large provider, and Gmail goes further and ignores dots entirely, which makes j.o.h.n@gmail.com and john@gmail.com the same person with no way to tell from the text. The tick box for +tags above handles the first case; the second is a Gmail house rule rather than anything in the address, so no tool can apply it safely to a domain that has not adopted it.

The domain table is there because the useful cut is almost never a single address, it is a whole category of them. Role accounts — info@, sales@, support@, postmaster@, abuse@, all named in RFC 2142 as mailboxes a domain is expected to run — belong to a job rather than a person, get read by whoever is on rota, and drag complaint rates up wherever they are mailed in bulk. A noreply@ address bounces by design. Consumer domains are the other obvious split: for anything B2B, the 27 providers behind the Drop personal mailboxes button are the addresses you keep for support and remove from a prospecting list. Once the shape of the list matters more than the addresses in it, the CSV export drops straight into the text to columns tool for splitting into named fields.

One honest caveat, because this page makes the mechanical part very easy and the legal part is not mechanical at all. Collecting addresses from a website and mailing them is treated differently almost everywhere: in the United States the CAN-SPAM Act names harvesting from web pages as an aggravating factor that raises the penalty for a violation, and in the EU and UK an email address that identifies a person is personal data, so marketing to it needs a lawful basis and usually consent gathered in advance. Extracting addresses from your own CRM export, a signed-up member list, or a document a client sent you is ordinary housekeeping; extracting them from strangers' websites to cold-mail is the thing the rules were written about. If the addresses are buried in running prose rather than listed — the name [at] company dot com shape — the extract emails from text page reads that form and checks each result instead of merely collecting it.

Your contact list does not leave this tab

Nothing you paste here is uploaded, and there is no server to upload it to: this page is a static file, and the scanning, merging, grouping and formatting all happen in JavaScript that was already downloaded to your machine before you pasted. A customer export, a member list or a CRM dump is read where it sits. No address is logged, counted or transmitted, the tick boxes are not stored, and reloading the page leaves nothing behind.

The practical proof is that the page keeps working with the network switched off — pull the Wi-Fi after it loads and every button still does its job. That also means the addresses never pass through anyone's analytics, including ours.