Email Extractor

Extracted Emails

Quick Access to Regex Tools

Go straight to the regex utility you need.

How to Use the Email Extractor

1

Paste the text containing email addresses

Paste the text containing email addresses.

2

Click Extract

Click Extract.

3

Copy the list of found emails

Copy the list of found emails.

Email Extractor — Extract Email Addresses from Text

Email addresses hide in the strangest places: scraped web pages, customer support logs, CSV exports, HTML source code, PDF conversions, and plain-text documents. Pulling them out by hand is a losing game — you'll miss one, or accidentally grab a malformed string that looks like an address but isn't. The Email Extractor scans your text with a regex pattern designed to find valid email formats, deduplicates the results, and hands you a clean sorted list.

Everything runs locally in your browser. No data leaves your machine, no server processing, no waiting. Paste your text, click extract, and get results instantly.

How the Email Regex Pattern Works

The pattern this tool uses breaks down into three parts. The local part (before the @) matches one or more characters that can be letters, digits, dots, underscores, percent signs, plus signs, or hyphens: [a-zA-Z0-9._%+-]+. The at symbol is literal. The domain part matches a hostname (letters, digits, dots, hyphens) followed by a dot and a top-level domain of at least two letters: [a-zA-Z0-9.-]+\.[a-zA-Z]{2,}.

This pattern handles the overwhelming majority of real-world email addresses: [email protected], [email protected], [email protected]. It intentionally doesn't attempt full RFC 5322 compliance because the spec allows patterns that no real mail server accepts — like addresses containing quotes, spaces, or comments.

RFC 5322: What the Standard Actually Says

RFC 5322 is the current standard that defines the syntax for email addresses, and it replaced the older RFC 2822. If you've ever looked at the formal grammar, you know it's surprisingly permissive. The specification defines the local part using a grammar that allows quoted strings (with escaped quotes inside), comments (wrapped in parentheses), and even consecutive dots in some positions. An address like "john.doe"@example.com is technically valid. So is user [email protected] (with a space). Even user.(comment)@example.com passes the grammar.

The reality is that almost nobody uses these exotic formats. Major email providers — Gmail, Outlook, Yahoo — impose their own stricter rules on top of the RFC. Gmail, for instance, ignores dots in the local part entirely ([email protected] routes to [email protected]) and rejects addresses with certain special characters. Your email provider's web interface may accept an address during sign-up that their servers will silently drop later.

So what does this mean for extraction? If you're pulling addresses from text, you want high recall — catching every legitimate address — without drowning in false positives. A regex that tries to implement the full RFC 5322 grammar would be hundreds of characters long and would match strings that no mail server on Earth would accept. The practical pattern used here strikes the right balance: it matches the format 99% of real addresses follow while rejecting the noise.

Common Email Formats You'll Encounter

Standard addresses: [email protected] — the most common format by far. Subdomain addresses: [email protected] — common in larger organizations. Plus addressing: [email protected] — used for filtering and routing, very common with Gmail and other providers. Hyphenated domains: [email protected] — perfectly valid, though some older systems don't handle them well.

Less common but valid formats that this tool handles: dots in the local part (first.last@domain), numeric domains ([email protected]), and country-code TLDs with multiple segments ([email protected]).

Disposable email addresses: Services like Mailinator, Guerrilla Mail, and 10MinuteMail generate temporary addresses. These usually follow the standard pattern but use unusual domain names. If you're filtering for quality leads or verifying customer registrations, you may want to post-process the extracted list against known disposable email domain databases — this tool gives you the raw addresses, and the filtering decision is yours.

Role-based addresses: Addresses like [email protected], [email protected], [email protected], and [email protected] are assigned to functions rather than people. They're valid email addresses, but they're not personal contacts. When building outreach lists, you'll often want to separate these from individual addresses after extraction.

Domain-Specific Patterns Worth Knowing

Different types of organizations use different domain structures, and knowing these helps you understand what the extractor returns. Country-code second-level domains like .co.uk, .com.au, .co.in, and .or.jp are extremely common. The extractor handles these correctly because the pattern allows multiple dots in the domain and requires the final TLD to be at least two characters.

Government and military domains use TLDs like .gov, .mil, .gov.uk, and .gouv.fr. These follow the same syntax rules as commercial addresses, but you may want to filter them separately for compliance or audit purposes. Educational domains (.edu, .ac.uk, .edu.cn) are similarly straightforward — they'll be captured and deduplicated just like any other address.

Newer gTLDs have expanded the namespace significantly. Domains ending in .io, .dev, .app, .tech, .co, and hundreds of others are now common, especially among tech startups. The extractor's pattern handles all of these because it doesn't restrict the TLD to a predefined list — it simply requires two or more letters after the final dot. This is intentional: maintaining a hardcoded list of thousands of TLDs would be fragile and quickly outdated.

Practical Use Cases

Contact list cleanup: Export your CRM data, paste it into the extractor, and get a deduplicated list of every email address. This catches duplicates that differ only in case ([email protected] vs [email protected]) because the tool normalizes them. You can then import the clean list back into your CRM or use it as the basis for a mail merge.

Web scraping audits: After scraping a website, paste the raw HTML or text output to verify which email addresses were actually captured. You'll often find that some pages have mailto links, some have visible addresses in text, and some have both — the extractor catches all of them. This is particularly useful when you've built a scraper and want to confirm it's capturing contact information correctly across different page templates.

Log analysis: Server logs, application logs, and authentication logs frequently contain email addresses. Extracting them helps you identify which accounts are active, which endpoints are being hit, and where user activity is concentrated. If you're doing a security audit, extracting emails from access logs can reveal which user accounts were accessed during a specific time window.

Data migration: When consolidating databases or migrating between platforms, you can quickly extract all email addresses from legacy exports to verify nothing was lost in translation. Run the extractor on both the source and destination exports and compare the results — any discrepancies point to data that didn't survive the migration intact.

Spam and phishing analysis: Security teams frequently need to extract email addresses from suspicious messages, phishing campaigns, or compromised data dumps. The extractor works well for this: paste the raw email source (including headers), and pull out every address mentioned. Cross-reference the results against known threat intelligence databases.

Bulk Extraction Tips

When you're working with large volumes of text — entire databases exported as CSV, multiple HTML pages concatenated together, or months' worth of log files — there are a few strategies that help. First, split your input strategically. If you're pasting an entire CSV export, you don't need the header rows, the numeric columns, or the date fields. Trim the input to the columns that actually contain email addresses. This reduces processing time and eliminates noise from false positives in non-email fields.

Second, process in batches. If your combined text is over 5MB, break it into 1-2MB chunks. The browser handles each chunk quickly, and you can merge the results afterward. The deduplication step means overlapping chunks won't produce duplicates in the final combined list.

Third, normalize your source data first. If you're extracting from a spreadsheet export, convert the entire thing to plain text before pasting. Spreadsheets often contain formulas, formatting artifacts, and embedded objects that add noise. A clean text dump gives the extractor cleaner input to work with.

Handling False Positives

False positives are the bane of any extraction task. Here's what typically triggers them and how to deal with it. Version numbers and identifiers: Strings like v2.1@beta, user@v3, or module@latest can look like email addresses to a regex, but they're clearly not. The extractor mitigates this by requiring a TLD of at least two alphabetic characters after the final dot, which filters out many of these. However, [email protected] would still match, even if "beta.com" isn't a real domain.

Placeholder text: Documentation, README files, and template files often contain placeholder addresses like [email protected], [email protected], or [email protected]. These are structurally valid email addresses — the regex correctly identifies them as such. The problem is semantic: they're not real, reachable addresses. If your extraction results include these, it's a sign that your source text contains template or example content. Filter these out by checking against known placeholder domains (example.com, domain.com, test.com).

Comments and code snippets: In technical documents or code repositories, you might see lines like // TODO: notify admin@company when done or variable names like sender_email = "[email protected]". These are legitimate references but may not represent contacts you actually want. Review the context around extracted addresses to determine whether they're actionable.

CSS and HTML attributes: When pasting raw HTML, watch for email-like patterns in CSS class names, data attributes, or JavaScript variables. The string user@key-frame in a CSS animation reference could trigger a match if it happens to satisfy the pattern. Stripping HTML tags before extraction eliminates most of these.

Limitations of Regex Email Validation

No regex pattern can truly validate an email address. RFC 5322 defines the official format, and it's absurdly permissive — addresses can contain spaces, quotes, comments, and escaped characters. The only way to verify an email address actually works is to send it a message and check for a bounce. What regex can do is identify strings that look like email addresses, which is usually what you actually need.

The trade-off in this tool's pattern is tuned for high recall (catching real addresses) with reasonable precision (not grabbing things like foo@bar when you know there should be a TLD). It won't match addresses with unusual local parts (like those with spaces or special characters requiring quotes), but those are rare in practice.

One important limitation: the pattern uses ASCII character classes. This means internationalized email addresses (EAI) — those containing Unicode characters like 用户@例え.jp — won't be captured. EAI addresses are increasingly supported by major providers (Google added support in 2014, Microsoft followed), but they still represent a tiny fraction of active addresses globally. If your source text contains EAI addresses, you'll need a pattern with Unicode property escapes or a dedicated EAI parsing library.

International Email Addresses and Unicode

Internationalized email addresses come in two flavors. Internationalized domain names (IDN) use Unicode characters in the domain portion — for example, user@例え.jp. In practice, these are almost always represented in their punycode form ([email protected]), which is pure ASCII and would be captured by this tool's pattern. The punycode conversion happens transparently at the DNS level.

Internationalized local parts are less common and less supported. An address like 用户@example.com uses a Unicode username with an ASCII domain. These are technically standardized (RFC 6530 and related RFCs), but support is inconsistent across mail servers and clients. Most email tools, including this extractor, don't match them. If you're working with email data from regions where Unicode local parts are common (parts of Asia and Eastern Europe), be aware that some addresses may be missed.

A practical approach when working with international email data: extract ASCII addresses with this tool first, then use a separate pass with a Unicode-aware pattern to catch any remaining internationalized addresses. For most use cases — contact lists, web scraping, log analysis — the ASCII-only extraction covers 99%+ of what you'll encounter.

Tips for Better Extraction Results

If you're extracting from HTML, consider stripping tags first — the pattern might match email-like strings inside attributes or CSS. For very large texts, the tool handles them fine since everything is in-browser, but extremely long inputs (megabytes) may cause a brief pause. When working with internationalized email addresses (containing non-ASCII characters), be aware that most regex-based extractors including this one focus on ASCII addresses, which still represent the vast majority of email traffic.

When dealing with obfuscated email addresses — a common anti-spam technique on public websites — you'll need to reconstruct them manually before extracting. Common obfuscation methods include writing info [at] example [dot] com, inserting HTML comments in the middle of the address, or splitting the address across multiple elements. The regex extractor can't reverse these transformations; it finds addresses that are already in standard format.

For recurring extraction tasks, consider keeping a list of domains you want to exclude. After extracting, filter out addresses from internal test domains, known placeholder domains, and automated system accounts. This post-processing step dramatically improves the quality of your results, especially when working with heterogeneous source data that mixes real contacts with noise.

Frequently Asked Questions

The pattern is designed for extraction, not strict validation. It catches virtually every email address you'll encounter in real-world text while avoiding most false positives. It won't validate whether an address actually exists or accepts mail — only a mail server can do that. For most extraction tasks (scraping, auditing, cleanup), this level of accuracy is exactly what you need.
Yes. All extracted emails are converted to lowercase for consistency, sorted alphabetically, and deduplicated. This means [email protected] and [email protected] are treated as the same address. If you need to preserve the original casing, you'd need to process the raw output separately.
Yes, but with a caveat. The tool matches email patterns anywhere in the text, including inside HTML attributes, JavaScript code, and CSS. If you paste raw HTML, you might get emails from mailto: links, tracking pixels, or obfuscated JavaScript. For cleaner results from HTML, strip the tags first or extract from the rendered text rather than the source.
The pattern focuses on ASCII email addresses, which cover the vast majority of addresses in use. Internationalized email addresses (EAI) can contain Unicode characters in the local part or domain. However, most IDN domains are stored in their punycode form (starting with xn--), which is pure ASCII and will be captured normally. Unicode local parts like 用户@domain.com are not matched by the current pattern.
This tool processes plain text only. If your email addresses are embedded in images or PDFs, you'll need to extract the text first using OCR (for images) or a PDF text extraction library, then paste the resulting text into this tool. Most PDFs retain text in a selectable format, so copying and pasting directly often works. For scanned PDFs, you'll need an OCR step before extraction.
False positives can occur when text contains patterns that happen to look like email addresses — things like username@localhost (no TLD), version numbers like v2@release, or placeholder text in documentation. The pattern requires a dot followed by at least two letters in the TLD, which filters out many (but not all) of these. If your text is heavily technical or contains code, review the extracted list for obviously non-email entries.
There's no hard limit enforced by the tool, but browser performance becomes a factor with very large inputs. Texts under 1MB process instantly. Larger texts (several MB) may take a few seconds. If you're working with massive log files, consider splitting them into chunks or using a server-side tool for better performance.
After extraction, manually review the results for addresses from known placeholder domains like example.com, domain.com, test.com, and email.com. These are used in documentation, tutorials, and placeholder content. If you need automated filtering, copy the extracted list into a script that checks each domain against a blocklist of placeholder and test domains before keeping the address.
Yes. You can paste multiple paragraphs, separate text blocks, or concatenated files into the input area. The tool scans the entire input as a single block and returns all unique addresses found. If you're combining texts from different sources, the deduplication ensures the same address only appears once in the final list, regardless of how many times it appeared across your inputs.
Yes. The pattern explicitly includes hyphens (-) and plus signs (+) in the allowed characters for the local part. This means addresses like [email protected] and [email protected] are extracted correctly. These are both commonly used and perfectly valid — plus addressing in particular is widely used for email filtering and routing across major providers.